- 09 Oct, 2017 40 commits
-
-
Benedikt Meurer authored
The contract in TurboFan is that "the hole" is never passed to "user JavaScript", which we unfortunately still don't check strictly. Now the inlined code for Array#forEach properly checks for "the hole", but the type of the element Node passed to the callback function doesn't reflect that. So introduce a proper TypeGuard here to reflect this check. This will also improve code generation for iteration of HOLEY arrays better and might improve performance a bit. Bug: v8:1956 Change-Id: Ib6b3c444b16fcf44551bda1b39f976d66b9362ab Reviewed-on: https://chromium-review.googlesource.com/705954Reviewed-by: Daniel Clifford <danno@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48400}
-
Benedikt Meurer authored
We no longer use the terminology "fast elements", so drop the "Fast" from both NewFastSmiOrObjectElements and NewFastDoubleElements operator names. Bug: v8:6399, v8:6901 Tbr: jarin@chromium.org Change-Id: Icc204623f2b459b0d0e172e26ddd73e29fe6c884 Reviewed-on: https://chromium-review.googlesource.com/707246Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48399}
-
Toon Verwaest authored
Bug: Change-Id: I0f050d9ca57738267bcf461ac101f781a2e01fdf Reviewed-on: https://chromium-review.googlesource.com/707148 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#48398}
-
Toon Verwaest authored
Bug: Change-Id: Ic305df479b7e059b312bb06842814b992e2ab140 Reviewed-on: https://chromium-review.googlesource.com/707147 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#48397}
-
Sergiy Byelozyorov authored
TBR=machenbach@chromium.org Bug: chromium:747960 No-Tree-Checks: true No-Try: true No-Presubmit: true Change-Id: Ia2a5964e7229d08a9b88f60c609daad0f9571287 Reviewed-on: https://chromium-review.googlesource.com/707237 Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#48396}
-
Ulan Degenbaev authored
Bug: chromium:694255 Change-Id: I5c0c0b58cdcf3cf745670148724e3c6ecc34d485 Reviewed-on: https://chromium-review.googlesource.com/707149Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48395}
-
Toon Verwaest authored
Bug: Change-Id: I62e95cebbc02ac867e396796f298b004f7f2ee4d Reviewed-on: https://chromium-review.googlesource.com/707150Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#48394}
-
Toon Verwaest authored
Bug: Change-Id: I8055db7268bfaca31aa2fe41d5882acd2649a9e8 Reviewed-on: https://chromium-review.googlesource.com/707143 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#48393}
-
Martyn Capewell authored
Missed from the earlier ObjectTriple removal, commit fc413158. Bug: Change-Id: I2fd9c17b4a4d888d81dc0b51586bec6f191cc7ed Reviewed-on: https://chromium-review.googlesource.com/707138Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#48392}
-
Toon Verwaest authored
Bug: Change-Id: I67a0062a5a2f5ce16f9b83e1fa7a8b91042e75c1 Reviewed-on: https://chromium-review.googlesource.com/707105 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48391}
-
Ulan Degenbaev authored
The marked bytes counter needs to be updated before decrementing the pending task counter. Bug: chromium:694255 Change-Id: I19c4dfbdccfb32ded5b7bb707dc93d53e188e34a Reviewed-on: https://chromium-review.googlesource.com/707140Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48390}
-
Michael Achenbach authored
Bug: chromium:772804 Change-Id: I4aa8c2661de576a3411d5547cf9e974c039281f3 Reviewed-on: https://chromium-review.googlesource.com/706995 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#48389}
-
Toon Verwaest authored
Bug: Change-Id: Idd2a12c9f99430de4d83543bc09cae9df1598813 Reviewed-on: https://chromium-review.googlesource.com/707071 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48388}
-
Mike Stanton authored
We can improve performance of inlined Array.prototype.map if we statically know the type of the callback return result is a SignedSmall. Indeed, we no longer need bother with transitioning the output array, because we can store a SignedSmall (aka "Smi") anywhere. Bug: v8:6896 Change-Id: I140ce9a7c15ff77d05afeda6cda58f0560d922c8 Reviewed-on: https://chromium-review.googlesource.com/707139Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48387}
-
Toon Verwaest authored
Bug: Change-Id: I8589ea37ab776d867794125d35e1e51b16d6e9a3 Reviewed-on: https://chromium-review.googlesource.com/707068 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48386}
-
Michael Achenbach authored
NOTRY=true TBR=sergiyb@chromium.org Bug: chromium:772804 Change-Id: Ia3079f08c728febf14a413c2677cc5f20c54ba5a Reviewed-on: https://chromium-review.googlesource.com/706793Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#48385}
-
Toon Verwaest authored
Bug: Change-Id: Ifde89f90fe18a0747f4b7b9511fbdc64df31555b Reviewed-on: https://chromium-review.googlesource.com/707063 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48384}
-
Michael Starzinger authored
This ensures the JSFunction objects materialized by the deoptimizer have the correct instance size (depending on the given map). There are corner cases where the instance size might vary due to in-object properties. R=jarin@chromium.org TEST=mjsunit/regress/regress-crbug-772610 BUG=chromium:772610 Change-Id: I4808c7260db1adbd1cdc3871c2a946475e4934f2 Reviewed-on: https://chromium-review.googlesource.com/707109Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48383}
-
Michael Achenbach authored
Bug: chromium:772804 Change-Id: I845a5ca4ff79c713eb6361ff99e4e09fe4c5c71d Reviewed-on: https://chromium-review.googlesource.com/706792Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#48382}
-
Toon Verwaest authored
Bug: Change-Id: I315d0017179e2f0a9883647b91fd4f0a762eade0 Reviewed-on: https://chromium-review.googlesource.com/707054 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48381}
-
Ulan Degenbaev authored
Bug: chromium:694255 Change-Id: I5dc6157126544f20bca0ddee967e1d08d69bb060 Reviewed-on: https://chromium-review.googlesource.com/707104Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48380}
-
Clemens Hammacher authored
args[i] automatically returns undefined if i < 0 || i >= args.Length(). R=mstarzinger@chromium.org, titzer@chromium.org Change-Id: I215545fa54ce23440f1de49b48786e568831bc82 Reviewed-on: https://chromium-review.googlesource.com/704586Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48379}
-
Michal Majewski authored
Adds the counter to x64 only. Bug: v8:6900 Change-Id: Ia290102b38f029a0b71c40e4b00ecc5f07dfa59c Reviewed-on: https://chromium-review.googlesource.com/704678 Commit-Queue: Michał Majewski <majeski@google.com> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48378}
-
Benedikt Meurer authored
Avoid the zero-extensions required for int32 based addressing on 64-bit architectures by restructuring the initialization loops to work on words. This recovers a bit of the regression on the Kraken audio-fft and audio-beat-detection benchmarks that was introduced by the initial CL. Bug: chromium:772669, v8:6399, v8:6901 Change-Id: I4753c254be89f2bcc7b0ea5073e469e3507408bd Reviewed-on: https://chromium-review.googlesource.com/707098Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48377}
-
Mike Stanton authored
In call reductions for Array.prototype.map and forEach, loads weren't wired appropriately into the effect chain, hampering the efficacy of load elimination. Bug: Change-Id: If5a386b66669d7173d5cadc6d8d3ff023daed810 Reviewed-on: https://chromium-review.googlesource.com/707073Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48376}
-
Michael Starzinger authored
R=mvstanton@chromium.org BUG=chromium:770581 TEST=mjsunit/regress/regress-crbug-770581 Change-Id: I3a5854b6534e67da3e28d9c713830808013675b5 Reviewed-on: https://chromium-review.googlesource.com/702378Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48375}
-
Ulan Degenbaev authored
Each concurrent marking task maintains task_state[i]->marked_bytes. When a task finishes, its local counter is flushed into global total_marked_bytes_ atomic counter. Bug: chromium:694255 Change-Id: I629467385e80bf229e06a4231673ceb5ef8e4aea Reviewed-on: https://chromium-review.googlesource.com/704823 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48374}
-
Clemens Hammacher authored
Missing arguments are identical to undefined, and are converted to the integer 0 by ECMAScript {ToInteger()}. Add more tests, and enable previously disabled tests. There is a follow-up refactoring here: https://crrev.com/c/704586 R=titzer@chromium.org, mstarzinger@chromium.org Change-Id: I89cc259aaf5975ec2f6f51ff002e7d1b32adba5e Reviewed-on: https://chromium-review.googlesource.com/704658Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48373}
-
Toon Verwaest authored
Bug: Change-Id: Ifc46bd574801ac20f4025c84c5764311890b93da Reviewed-on: https://chromium-review.googlesource.com/707064Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#48372}
-
Toon Verwaest authored
Bug: Change-Id: Ia2b60b712c6b5d78db1ea15161da2e10282c7d87 Reviewed-on: https://chromium-review.googlesource.com/707061Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#48371}
-
Michael Starzinger authored
R=marja@chromium.org Change-Id: I93a366caded175256abd7966c3c157191a2b7de2 Reviewed-on: https://chromium-review.googlesource.com/690455 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#48370}
-
Martyn Capewell authored
ObjectTriple isn't used since f1ec44e2. Delete it, and simplify CEntryStub on all backends. Bug: Change-Id: I046525afceb25b484fd96c7ee81c73fb03168ca0 Reviewed-on: https://chromium-review.googlesource.com/704858Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#48369}
-
Mike Stanton authored
Bug: v8:6896 Change-Id: Ie34a4b6ff2e432dcd87a5b982d238c74001175ca Reviewed-on: https://chromium-review.googlesource.com/704676Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48368}
-
Mike Stanton authored
We can use the known ElementsKind to improve typing on the receiver element load. We can allow multiple maps, as long as they have the same ElementsKind. Bug: v8:6896 Change-Id: Ida7df943f7d315454b58bcf4e0bbd2346406c488 Reviewed-on: https://chromium-review.googlesource.com/704921 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48367}
-
Tobias Tebbi authored
Now, the EffectControlLinearizer connects all occurrences of Unreachable to the graph end. This fixes issues with later phases running DeadCodeElimination and introducing new DeadValue nodes when processing uses of Unreachable. This is a reland of 3c4bc27f Original change's description: > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > This is a reland of e1cdda25 > Original change's description: > > [turbofan] eagerly prune None types and deadness from the graph > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > depend on them, we introduce a {DeadValue} node representing an impossible value > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > of a node with type {None} as dead. > > > > Bug: chromium:741225 > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48208} > > Bug: chromium:741225 > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > Reviewed-on: https://chromium-review.googlesource.com/692034 > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48232} Bug: chromium:741225 Change-Id: I5702ec34856c075717162153adc765774453c45f Reviewed-on: https://chromium-review.googlesource.com/702264Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48366}
-
Benedikt Meurer authored
The escape analysis is able to perform scalar replacement on JSArrays with in-object properties (which currently only happens for subclasses of the Array constructor), but the Deoptimizer didn't properly materialized and initialized the values of the in-object fields so far. Bug: chromium:772689, v8:6399 Change-Id: I6555a46773d2a1543db069142aa05f4337566b9c Reviewed-on: https://chromium-review.googlesource.com/706781Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48365}
-
Benedikt Meurer authored
Bug: chromium:772672, v8:6399 Change-Id: Ib44f5c5c2a62a8ec2cd824ba57a1af8f456853af Reviewed-on: https://chromium-review.googlesource.com/706782 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48364}
-
Benedikt Meurer authored
Change-Id: I22bf46718ef14450bf5c18948f70f1b9b58ae949 Reviewed-on: https://chromium-review.googlesource.com/706791Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48363}
-
Daniel Clifford authored
These will be used in subsequent CLs to add spec-compliant builtins on Array.prototype built with the CSA. Change-Id: I4c9f72f90dffe018b99efdc73e9d40b3d175c2aa Reviewed-on: https://chromium-review.googlesource.com/704115Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#48362}
-
Benedikt Meurer authored
This adds a new operator LookupSigned32HashStorageIndex, which is a specialization of the general LookupHashStorageIndex for Map#get that is used when TurboFan knows that the key is in Signed32 range. This improves the execution time of the ARES6 Basic test locally by around 5% and seems to make sense in general. Bug: v8:6410, v8:6354, v8:6278, v8:6344 Change-Id: I78dcbc9cc855a4109e1690d8cd14fbc88fd89861 Reviewed-on: https://chromium-review.googlesource.com/706787Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48361}
-