- 20 Feb, 2018 1 commit
-
-
Benedikt Meurer authored
This CL introduces new operators JSFulfillPromise and JSPromiseResolve, corresponding to the specification operations with the same name, and uses that to lower calls to Promise.resolve() builtin to JSPromiseResolve. We also optimize JSPromiseResolve and JSResolvePromise further based on information found about the value/resolution in the graph. This applies to both Promise.resolve() builtin calls and implicit resolve operations in async functions and async generators. On a very simple microbenchmark like console.time('resolve'); for (let i = 0; i < 1e8; ++i) Promise.resolve({i}); console.timeEnd('resolve'); this CL reduces the execution time from around 3049ms to around 947ms, which is a pretty significant 3x improvement. On the wikipedia benchmark we observe an improvement around 2% with this CL. Bug: v8:7253 Change-Id: Ic69086cdc1b724f35dbe83305795539c562ab817 Reviewed-on: https://chromium-review.googlesource.com/913488Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51387}
-
- 03 Nov, 2017 1 commit
-
-
Peter Marshall authored
more. Bug: v8:6333, v8:6921 Change-Id: I442190988f2c853560b28efa54e04ff73f9d94ca Reviewed-on: https://chromium-review.googlesource.com/718343 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#49111}
-
- 20 Oct, 2017 1 commit
-
-
Jaroslav Sevcik authored
Bug: v8:6396 Change-Id: I73a686bc5dc4849ca3f0addca513f7a0173ce0b3 Reviewed-on: https://chromium-review.googlesource.com/730710 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48788}
-
- 19 Oct, 2017 2 commits
-
-
Jaroslav Sevcik authored
This reverts commit 71bcc1d9. Reason for revert: Regresses Octane/Box2D, among other things. Original change's description: > [turbofan] Load elimination prunes control flow based on instance type. > > Changes: > - introduce the notion of unreachable abstract states. > > - reconnect unreachables states to runtime abort in effect phis (so that > the merged states are not polluted by unreachable branches while > preserving SSA). > > - mark states with failed map checks, unreachable map guars as unreachable. > > - add instance type to AbstractMaps, only invalidate instance type on > mismatched effect merges. > > > This results in 2-3% improvement on ARES/ML steady state. > > Bug: v8:6396 > Change-Id: I35b0d4482fa400ba7ee9a754f8ef1b2663ebc7dc > Reviewed-on: https://chromium-review.googlesource.com/727761 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48742} TBR=jarin@chromium.org,bmeurer@chromium.org Change-Id: I6302b37dbf5ea781c64815ef1900681531ad7d71 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6396 Reviewed-on: https://chromium-review.googlesource.com/728440Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48763}
-
Jaroslav Sevcik authored
Changes: - introduce the notion of unreachable abstract states. - reconnect unreachables states to runtime abort in effect phis (so that the merged states are not polluted by unreachable branches while preserving SSA). - mark states with failed map checks, unreachable map guars as unreachable. - add instance type to AbstractMaps, only invalidate instance type on mismatched effect merges. This results in 2-3% improvement on ARES/ML steady state. Bug: v8:6396 Change-Id: I35b0d4482fa400ba7ee9a754f8ef1b2663ebc7dc Reviewed-on: https://chromium-review.googlesource.com/727761Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48742}
-
- 18 Aug, 2017 1 commit
-
-
Benedikt Meurer authored
The MapGuard node sits in the effect chain as a hint for other optimization passes that a certain value has a certain (set of) map(s) guarded by checks on the control chain. This is useful to learn from explicit control flow inserted for polymorphic property accesses, and then used as part of the polymorphic inlining. This change improves the score on the Octane/DeltaBlue benchmark by around 7-8% and the score on the Octane/Richards benchmark by like 3% on average. Bug: v8:5267 Change-Id: Id0b0b2c72e6a9342d5750a0d62cf6be6fb8c5916 Also-By: jarin@chromium.org Reviewed-on: https://chromium-review.googlesource.com/620586 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47417}
-
- 14 Jul, 2017 1 commit
-
-
Daniel Clifford authored
Change-Id: I2056ab047b7c3e8ab00632fa13c67a7ea779f749 Reviewed-on: https://chromium-review.googlesource.com/571811Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#46681}
-
- 02 Jan, 2017 1 commit
-
-
bmeurer authored
Store maps on the CheckMaps operator instead of burning inputs for the individual maps. Use the same data structure (the ZoneHandleSet) in the LoadElimination to track multiple maps per object. BUG=v8:5267 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2431563002 Cr-Commit-Position: refs/heads/master@{#42010}
-