- 17 May, 2016 3 commits
-
-
titzer authored
R=ahaas@chromium.org,bradnelson@chromium.org BUG= Review-Url: https://codereview.chromium.org/1980543002 Cr-Commit-Position: refs/heads/master@{#36292}
-
rmcilroy authored
In order to support compiling to baseline on return we need to be able to return to the actual return address. With this change this is what the Return bytecode now does, removing the need for the InterpreterExitTrampoline. This change also removes the InterpreterNotifyDeoptXXX builtins and unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this change, FullCodegenerator::State is moved to Deoptimize::BailoutState. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1969423002 Cr-Commit-Position: refs/heads/master@{#36288}
-
bmeurer authored
This adds back the instanceof operator support in the backends and introduces a @@hasInstance protector cell on the isolate that guards the fast path for the InstanceOfStub. This way we recover the ~10% regression on Octane EarleyBoyer in Crankshaft and greatly improve TurboFan and Ignition performance of instanceof. R=ishell@chromium.org TBR=hpayer@chromium.org,rossberg@chromium.org BUG=chromium:597249, v8:4447 LOG=n Review-Url: https://codereview.chromium.org/1980483003 Cr-Commit-Position: refs/heads/master@{#36275}
-
- 13 May, 2016 5 commits
-
-
titzer authored
R=ahaas@chromium.org,bradnelson@chromium.org BUG= Review-Url: https://codereview.chromium.org/1980483002 Cr-Commit-Position: refs/heads/master@{#36239}
-
hablich authored
Reland of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1977753002/ ) Reason for revert: Not the culprit sorry. Original issue's description: > Revert of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1966183003/ ) > > Reason for revert: > Blocks roll: https://codereview.chromium.org/1972303002/ > > Original issue's description: > > [Reland] Implement CPU time for OS X and POSIX. > > > > V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch > > implements CPU time for OS X and POSIX to provide more accurate > > accounting of CPU time used by each thread. > > > > BUG=v8:4984 > > LOG=n > > > > Committed: https://crrev.com/efa27fb25e1fa5b8465f4af710086b73b0cba660 > > Cr-Commit-Position: refs/heads/master@{#36213} > > TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=v8:4984 > > Committed: https://crrev.com/31b9ba3bc8fb93601cc73c83213b30e639d448b3 > Cr-Commit-Position: refs/heads/master@{#36225} TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4984 Review-Url: https://codereview.chromium.org/1976603005 Cr-Commit-Position: refs/heads/master@{#36233}
-
titzer authored
This is a first step to removing the support for the OldFunctions section altogether, which will greatly simplify the encoder and remove the need to do local variable remapping in asm->wasm. R=bradnelson@chromium.org,aseemgarg@chromium.org BUG= Review-Url: https://codereview.chromium.org/1974933002 Cr-Commit-Position: refs/heads/master@{#36228}
-
pierre.langlois authored
This patch adds support for the `Operand2_R_LSL_I` addressing mode to loads and stores. This allows merging a shift instruction into a MemoryOperand. Since the shift immediate is restricted to the log2 of the operation width, the opportunities to hit this are slim. However, Ignition's bytecode handlers hit this case all the time: kind = BYTECODE_HANDLER name = Star compiler = turbofan Instructions (size = 44) 0x23e67280 0 add x1, x19, #0x1 (1) 0x23e67284 4 ldrsb x1, [x20, x1] 0x23e67288 8 sxtw x1, w1 0x23e6728c 12 mov x2, fp 0x23e67290 16 str x0, [x2, x1, lsl #3] ^^^^^^^^^^^^^^^^^^^^^ 0x23e67294 20 add x19, x19, #0x2 (2) 0x23e67298 24 ldrb w1, [x20, x19] 0x23e6729c 28 ldr x1, [x21, x1, lsl #3] ^^^^^^^^^^^^^^^^^^^^^ 0x23e672a0 32 br x1 Additionally, I noticed the optimisation occurs once in both the `StringPrototypeCharAt` and `StringPrototypeCharCodeAt` turbofan stubs. BUG= Review-Url: https://codereview.chromium.org/1972103002 Cr-Commit-Position: refs/heads/master@{#36227}
-
hablich authored
Revert of [Reland] Implement CPU time for OS X and POSIX. (patchset #1 id:1 of https://codereview.chromium.org/1966183003/ ) Reason for revert: Blocks roll: https://codereview.chromium.org/1972303002/ Original issue's description: > [Reland] Implement CPU time for OS X and POSIX. > > V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch > implements CPU time for OS X and POSIX to provide more accurate > accounting of CPU time used by each thread. > > BUG=v8:4984 > LOG=n > > Committed: https://crrev.com/efa27fb25e1fa5b8465f4af710086b73b0cba660 > Cr-Commit-Position: refs/heads/master@{#36213} TBR=fmeawad@chromium.org,jochen@chromium.org,rsesek@chromium.org,bmeurer@chromium.org,lpy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4984 Review-Url: https://codereview.chromium.org/1977753002 Cr-Commit-Position: refs/heads/master@{#36225}
-
- 12 May, 2016 3 commits
-
-
oth authored
This change introduces a pipeline for the final stages of bytecode generation. The peephole optimizer is made distinct from the BytecodeArrayBuilder. A new BytecodeArrayWriter is responsible for writing bytecode. It also keeps track of the maximum register seen and offers a potentially smaller frame size. R=rmcilroy@chromium.org LOG=N BUG=v8:4280 Review-Url: https://codereview.chromium.org/1947403002 Cr-Commit-Position: refs/heads/master@{#36220}
-
bmeurer authored
We eagerly inserted Int32Mul for Math.imul during builtin lowering and messed up with the types, which confused the representation selection. This adds a proper NumberImul operator, and fixes the builtin reducer to do the right thing according to the spec. R=mstarzinger@chromium.org BUG=v8:5006 LOG=n Review-Url: https://codereview.chromium.org/1971163002 Cr-Commit-Position: refs/heads/master@{#36219}
-
lpy authored
V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch implements CPU time for OS X and POSIX to provide more accurate accounting of CPU time used by each thread. BUG=v8:4984 LOG=n Review-Url: https://codereview.chromium.org/1966183003 Cr-Commit-Position: refs/heads/master@{#36213}
-
- 11 May, 2016 5 commits
-
-
lpy authored
Revert of Implement CPU time for OS X and POSIX. (patchset #10 id:180001 of https://codereview.chromium.org/1959103004/ ) Reason for revert: Buildbot is failing on Mac release build. Original issue's description: > Implement CPU time for OS X and POSIX. > > V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch > implements CPU time for OS X and POSIX to provide more accurate > accounting of CPU time used by each thread. > > BUG=v8:4984 > LOG=n > > Committed: https://crrev.com/025f3d262bab2748362374f1b90ac723a9655ee4 > Cr-Commit-Position: refs/heads/master@{#36188} TBR=jochen@chromium.org,bmeurer@chromium.org,fmeawad@chromium.org,rsesek@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4984 Review-Url: https://codereview.chromium.org/1966173003 Cr-Commit-Position: refs/heads/master@{#36189}
-
lpy authored
V8 tracing controller uses 2 clocks: wall clock and cpu clock. This patch implements CPU time for OS X and POSIX to provide more accurate accounting of CPU time used by each thread. BUG=v8:4984 LOG=n Review-Url: https://codereview.chromium.org/1959103004 Cr-Commit-Position: refs/heads/master@{#36188}
-
titzer authored
R=ahaas@chromium.org,mstarzinger@chromium.org BUG= Review-Url: https://codereview.chromium.org/1970543003 Cr-Commit-Position: refs/heads/master@{#36174}
-
bmeurer authored
Up until now we had two places where we did the function prototype folding, once in the Typer and once in JSTypedLowering. Put this logic into JSNativeContextSpecialization instead. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1965293002 Cr-Commit-Position: refs/heads/master@{#36157}
-
bmeurer authored
Make JSCreateArguments eliminatable, and remove the need for frame states on JSCreateArguments nodes being lowered to (optimized) stub calls. Only the runtime fallback needs a frame state, because in that case we need to ask the deoptimizer for arguments to inlined functions. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1965013005 Cr-Commit-Position: refs/heads/master@{#36154}
-
- 10 May, 2016 1 commit
-
-
bmeurer authored
This adds a new pass MemoryOptimizer that walks over the effect chain from Start and lowers all Allocate, LoadField, StoreField, LoadElement, and StoreElement nodes, trying to fold allocations into allocation groups and eliminate write barriers on StoreField and StoreElement if possible (i.e. if the object belongs to the current allocation group and that group allocates in new space). R=hpayer@chromium.org, jarin@chromium.org BUG=v8:4931, chromium:580959 LOG=n Review-Url: https://codereview.chromium.org/1963583004 Cr-Commit-Position: refs/heads/master@{#36128}
-
- 09 May, 2016 4 commits
-
-
machenbach authored
Revert of [test] Skip failing test after clang roll. (patchset #1 id:1 of https://codereview.chromium.org/1955013002/ ) Reason for revert: Clang roll with fix is in. Original issue's description: > [test] Skip failing test after clang roll. > > BUG=v8:4995 > LOG=n > NOTRY=true > TBR=thakis@chromium.org, titzer@chromium.org > > Committed: https://crrev.com/6e6a7ea3a425bee65d856814bd361ddbf14811f5 > Cr-Commit-Position: refs/heads/master@{#36064} TBR=thakis@chromium.org,titzer@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=v8:4995 NOTRY=true LOG=n Review-Url: https://codereview.chromium.org/1960053002 Cr-Commit-Position: refs/heads/master@{#36119}
-
lpy authored
atomic-utils.h only uses functionality from base/, and also by moving it into base/, code outside of v8_base can benefit from it. BUG=v8:4991 LOG=n Review-Url: https://codereview.chromium.org/1954603002 Cr-Commit-Position: refs/heads/master@{#36114}
-
titzer authored
R=ahaas@chromium.org,rossberg@chromium.org BUG= Review-Url: https://codereview.chromium.org/1960143002 Cr-Commit-Position: refs/heads/master@{#36112}
-
titzer authored
This catches malformed code like the following example: <expr> <block begin> <expr> <binop> <end> Which is illegal because the inputs to the binop cross the block boundary. R=rossberg@chromium.org,ahaas@chromium.org BUG= Review-Url: https://codereview.chromium.org/1961853002 Cr-Commit-Position: refs/heads/master@{#36103}
-
- 06 May, 2016 3 commits
-
-
jkummerow authored
Because not initializing fields can be, you know, dangerous. Review-Url: https://codereview.chromium.org/1952703002 Cr-Commit-Position: refs/heads/master@{#36071}
-
machenbach authored
BUG=v8:4995 LOG=n NOTRY=true TBR=thakis@chromium.org, titzer@chromium.org Review-Url: https://codereview.chromium.org/1955013002 Cr-Commit-Position: refs/heads/master@{#36064}
-
bmeurer authored
This operator was initially designed to handle arbitrary effect merging for effect relaxation, but we don't do that (at least currently). So no need to keep the dead operator around. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/1954983002 Cr-Commit-Position: refs/heads/master@{#36063}
-
- 04 May, 2016 3 commits
-
-
pierre.langlois authored
A load instruction will implicitely clear the top 32 bits when writing to a W register. This patch avoids generating a `mov` instruction to zero-extend the result in this case. For example, this occurs in the generated code for dispatching to the next bytecode in the interpreter: kind = BYTECODE_HANDLER name = LdaZero compiler = turbofan Instructions (size = 36) 0x32e64c60 0 add x19, x19, #0x1 (1) 0x32e64c64 4 ldrb w0, [x20, x19] 0x32e64c68 8 mov w0, w0 ^^^^^^^^^^ 0x32e64c6c 12 lsl x0, x0, #3 0x32e64c70 16 ldr x1, [x21, x0] 0x32e64c74 20 movz x0, #0x0 0x32e64c78 24 br x1 BUG= Review-Url: https://codereview.chromium.org/1950013003 Cr-Commit-Position: refs/heads/master@{#36038}
-
bmeurer authored
Now that everything is properly wired to the effect chain when we get to ChangeLowering, we can safely inline the allocation fast path and only need to consule the slow path stub fallback when bump pointer allocation fails. R=jarin@chromium.org BUG=v8:4931 LOG=n Review-Url: https://codereview.chromium.org/1951853002 Cr-Commit-Position: refs/heads/master@{#36022}
-
martyn.capewell authored
When storing an immediate integer or floating point zero, use the zero register as the source value. This avoids the need to sometimes allocate a new register. BUG= Review-Url: https://codereview.chromium.org/1945783002 Cr-Commit-Position: refs/heads/master@{#36013}
-
- 03 May, 2016 2 commits
-
-
ahaas authored
Additionally I removed some stale comments. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/1941323002 Cr-Commit-Position: refs/heads/master@{#35976}
-
titzer authored
R=ahaas@chromium.org,binji@chromium.org BUG= Review-Url: https://codereview.chromium.org/1942873002 Cr-Commit-Position: refs/heads/master@{#35964}
-
- 02 May, 2016 4 commits
-
-
titzer authored
R=rossberg@chromium.org,ahaas@chromium.org BUG= Review-Url: https://codereview.chromium.org/1937083002 Cr-Commit-Position: refs/heads/master@{#35941}
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 Cr-Commit-Position: refs/heads/master@{#35924} Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35929}
-
machenbach authored
Revert of [turbofan] Remove left-over change bits from ChangeLowering. (patchset #2 id:20001 of https://codereview.chromium.org/1941673002/ ) Reason for revert: [Sheriff] Breaks mac gc stress: https://build.chromium.org/p/client.v8/builders/V8%20Mac%20GC%20Stress/builds/5821 Original issue's description: > [turbofan] Remove left-over change bits from ChangeLowering. > > Now ChangeLowering is only concerned with lowering memory access and > allocation operations, and all changes are consistently lowered during > the effect/control linearization pass. The next step is to move the > left over lowerings to a pass dedicated to eliminate redundant loads and > stores, eliminate write barriers, fold and inline allocations. > > Also remove the atomic regions now that we wire everything into the > effect chain properly. This is an important step towards allocation > inlining. > > Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, > ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to > ChangeInt31ToTaggedSigned for consistency. > > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel > > Committed: https://crrev.com/ceca5ae308bddda166651c654f96d71d74f617d0 > Cr-Commit-Position: refs/heads/master@{#35924} TBR=ishell@chromium.org,bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/1942733002 Cr-Commit-Position: refs/heads/master@{#35927}
-
bmeurer authored
Now ChangeLowering is only concerned with lowering memory access and allocation operations, and all changes are consistently lowered during the effect/control linearization pass. The next step is to move the left over lowerings to a pass dedicated to eliminate redundant loads and stores, eliminate write barriers, fold and inline allocations. Also remove the atomic regions now that we wire everything into the effect chain properly. This is an important step towards allocation inlining. Drive-by-fix: Rename ChangeBitToBool to ChangeBitToTagged, ChangeBoolToBit to ChangeTaggedToBit, and ChangeInt31ToTagged to ChangeInt31ToTaggedSigned for consistency. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel Review-Url: https://codereview.chromium.org/1941673002 Cr-Commit-Position: refs/heads/master@{#35924}
-
- 29 Apr, 2016 3 commits
-
-
machenbach authored
This prepares for pulling chromium's build as dependency for gn. After this, the files in build and gypfiles need to stay in sync until chromium is updated. BUG=chromium:474921 LOG=n Review-Url: https://codereview.chromium.org/1848553003 Cr-Commit-Position: refs/heads/master@{#35898}
-
titzer authored
[wasm] Binary 11: Swap the order of section name / section length. [wasm] Binary 11: Shorter section names. [wasm] Binary 11: Add a prefix for function type declarations. [wasm] Binary 11: Function types encoded as pcount, p*, rcount, r* [wasm] Fix numeric names for functions. R=rossberg@chromium.org,jfb@chromium.org,ahaas@chromium.org BUG=chromium:575167 LOG=Y Review-Url: https://codereview.chromium.org/1896863003 Cr-Commit-Position: refs/heads/master@{#35897}
-
titzer authored
[wasm] Binary 11: br_table takes a value. [wasm] Binary 11: Add implicit blocks to if arms. [wasm] Binary 11: Add arities to call, return, and breaks [wasm] Binary 11: Add experimental version. This CL changes the encoder, decoder, and tests to use a postorder encoding of the AST, which is more efficient in decode time and space. R=bradnelson@chromium.org,rossberg@chromium.org,binji@chromium.org BUG=chromium:575167 LOG=Y Review-Url: https://codereview.chromium.org/1830663002 Cr-Commit-Position: refs/heads/master@{#35896}
-
- 28 Apr, 2016 1 commit
-
-
yangguo authored
DevTools uses the debug interrupt to trap on function entry. Without source position at the stack check, we would get bogus source positions. R=mstarzinger@chromium.org BUG=chromium:595646 LOG=N Review-Url: https://codereview.chromium.org/1925063002 Cr-Commit-Position: refs/heads/master@{#35864}
-
- 25 Apr, 2016 3 commits
-
-
bbudge authored
Remove some unused fields in RegisterAllocationData. Move some DCHECKS about configuration constraints. Rename kMaxDoubleRegisters -> kMaxFPRegisters LOG=N BUG=v8:4124 Review URL: https://codereview.chromium.org/1518573002 Cr-Commit-Position: refs/heads/master@{#35777}
-
bmeurer authored
These also lower to subgraphs that have to be connected to the effect and control chains, otherwise removing the atomic regions around heap allocations would still be unsound. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1916763003 Cr-Commit-Position: refs/heads/master@{#35762}
-
machenbach authored
This will allow to pull in gyp as a deps to the same location as chromium (tools/gyp not build/gyp), needed for gn switch. This is the first step of a 3-way move. 1) Copy v8.gyp in v8 2) Update references in embedders (follow up) 3) Remove old v8.gyp (follow up) BUG=chromium:474921 LOG=n NOTRY=true Review URL: https://codereview.chromium.org/1920793002 Cr-Commit-Position: refs/heads/master@{#35760}
-