- 07 Mar, 2019 1 commit
-
-
Igor Sheludko authored
... because the latter are not meant to be modified from non-main thread and especially after V8 isolate is set up while the former are modified cuncurrently by tracing API. Tbr: verwaest@chromium.org Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel Bug: v8:8929, v8:8834 Change-Id: I44d3da2f388bb8bb8d0365ac6354e761bf92b936 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1505581Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#60104}
-
- 01 Mar, 2019 1 commit
-
-
Matt Gardner authored
The original was reverted for breaking webkit layout tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/30270 It also caused the following clusterfuzz failures: chromium:935832 This was a correctness bug due to not properly handling the case of arrays with prototypes other than Array.prototype. Accesses that were TheHole were not being handled property, both in bounds holes in holey arrays and out of bounds on either holey or packed arrays. Handling was incorrect both in access-assembler and in Turbofan. chromium:935932 This bug was that there was no handling for Has checks on the global object. Turbofan was emitting code for a store (the 'else' condition on 'access_mode == AccessMode::kLoad'). It hit a DCHECK in debug builds but in release could show up in different places. This is the bug that caused the webkit layout test failure that led to the revert. Both bugs are fixed by in CL, and tests are added for those cases. Bug: v8:8733, chromium:935932, chromium:935832 Change-Id: Iba0dfcfce6e15d2c0815a7670ece67bc13ba1925 Reviewed-on: https://chromium-review.googlesource.com/c/1493132Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Matt Gardner <magardn@microsoft.com> Cr-Commit-Position: refs/heads/master@{#59958}
-
- 26 Feb, 2019 1 commit
-
-
Sigurd Schneider authored
This reverts commit 32fc0acf. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/30270 layout test breakage: https://test-results.appspot.com/data/layout_results/V8-Blink_Linux_64/30270/webkit_layout_tests%20%28with%20patch%29/layout-test-results/results.html There is a dead node arriving in representation selection, which might indicate that the problem is not in this CL, but that this CL stirs up the node soup in such a way that dead code elimination gets confused. Original change's description: > Optimize `in` operator > > This change implements optimizations for the `in` operator for packed array > elements and object properties. It adds a new feedback slot kind and an IC > path similar to KeyedLoadIC for handling the lookups. TurboFan uses the > feedback to optimize based on the maps and keys. > > For more details see: > https://docs.google.com/document/d/1tIfzywY8AeNVcy_sen-5Xev21MeZwjcU8QhSdzHvXig > > This can provide 10x performance improvements of on loops of the form: > > for (let i = 0; i < ary.length; ++i) { > if (i in ary) { > ... > } > } > > > Bug: v8:8733 > Change-Id: I766bf865a547a059e5bce5399bb6112e5d9a85c8 > Reviewed-on: https://chromium-review.googlesource.com/c/1432598 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Matt Gardner <magardn@microsoft.com> > Cr-Commit-Position: refs/heads/master@{#59843} TBR=ulan@chromium.org,rmcilroy@chromium.org,jkummerow@chromium.org,jarin@chromium.org,ishell@chromium.org,bmeurer@chromium.org,verwaest@chromium.org,magardn@microsoft.com Change-Id: Ib2db974e5bed4c4a2b6b450f796bdc4b0b8fd562 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8733 Reviewed-on: https://chromium-review.googlesource.com/c/1488761Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59857}
-
- 25 Feb, 2019 1 commit
-
-
Matt Gardner authored
This change implements optimizations for the `in` operator for packed array elements and object properties. It adds a new feedback slot kind and an IC path similar to KeyedLoadIC for handling the lookups. TurboFan uses the feedback to optimize based on the maps and keys. For more details see: https://docs.google.com/document/d/1tIfzywY8AeNVcy_sen-5Xev21MeZwjcU8QhSdzHvXig This can provide 10x performance improvements of on loops of the form: for (let i = 0; i < ary.length; ++i) { if (i in ary) { ... } } Bug: v8:8733 Change-Id: I766bf865a547a059e5bce5399bb6112e5d9a85c8 Reviewed-on: https://chromium-review.googlesource.com/c/1432598Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Matt Gardner <magardn@microsoft.com> Cr-Commit-Position: refs/heads/master@{#59843}
-
- 21 Feb, 2019 5 commits
-
-
Tobias Tebbi authored
This is a reland of c3148664 Original change's description: > [csa] disable selected bounds checks for remaining regressions > > Bug: chromium:932919 > TBR: jarin@chromium.org > Change-Id: Id1125dcd2978f790af4cf00125bcbb94741d0bf8 > Reviewed-on: https://chromium-review.googlesource.com/c/1480387 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59773} Bug: chromium:932919 Change-Id: Ifb115ded2ff272abae4fba557ef669eee8e3c687 TBR: tebbi@chromium.org Reviewed-on: https://chromium-review.googlesource.com/c/1481746Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#59781}
-
Sathya Gunasekaran authored
This reverts commit c3148664. Reason for revert: speculative revert for MSAN failure https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/25398 Original change's description: > [csa] disable selected bounds checks for remaining regressions > > Bug: chromium:932919 > TBR: jarin@chromium.org > Change-Id: Id1125dcd2978f790af4cf00125bcbb94741d0bf8 > Reviewed-on: https://chromium-review.googlesource.com/c/1480387 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59773} TBR=jarin@chromium.org,jgruber@chromium.org,leszeks@chromium.org,tebbi@chromium.org Change-Id: Ib6cb825375725773db73f40ad3b65e084645b568 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:932919 Reviewed-on: https://chromium-review.googlesource.com/c/1480914Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#59777}
-
Jaroslav Sevcik authored
This should recover the regression from constant field tracking in Speedometer/angular. Bug: chromium:930680 Change-Id: I9ccbcbdaf11556596ed5df5c08829b7ae329cab7 Reviewed-on: https://chromium-review.googlesource.com/c/1480383Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#59775}
-
Tobias Tebbi authored
Bug: chromium:932919 TBR: jarin@chromium.org Change-Id: Id1125dcd2978f790af4cf00125bcbb94741d0bf8 Reviewed-on: https://chromium-review.googlesource.com/c/1480387 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#59773}
-
Mythri authored
This cl moves the valid feeback vector checks to the builtins and uses fast paths runtime when possible even whithout a valid feedback vector. For LoadNamedProperty it calls LoadIC_Uninitialized which does not need any type feedback and for LoadKeyedProperty it follows the megamorphic path but doesnot use the stub cache. Bug: v8:8293 Change-Id: I6ef9653e3f43c15cb882cbf82c3c2f63fb705a81 Reviewed-on: https://chromium-review.googlesource.com/c/1475393Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#59755}
-
- 19 Feb, 2019 1 commit
-
-
Mythri authored
Updates CloneIC builtin to take the CloneIC_slow path when there is no feedback vector. Also fixes the CloneIC_Slow to handle proxies correctly. StoreInArrayLiteralIC doesn't change the behaviour but just makes it consistent with other ICs. Bug: v8:8293 Change-Id: Ib824b3ef06db1595ce06f04669857bb957cbe072 Reviewed-on: https://chromium-review.googlesource.com/c/1475750 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59682}
-
- 15 Feb, 2019 3 commits
-
-
Matt Gardner authored
This CL fixes a perf regression caused by: https://chromium-review.googlesource.com/c/v8/v8/+/1465182 A deopt loop was occurring for HOLEY_DOUBLE_ELEMENTS arrays when hole elements were used as anything other than a float64, such as a return value or storing into a non-double array. bug: chromium:932082 Change-Id: I27290e9669d80050027e76cb62b0f67b51788d0f Reviewed-on: https://chromium-review.googlesource.com/c/1474560Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Matt Gardner <magardn@microsoft.com> Cr-Commit-Position: refs/heads/master@{#59639}
-
Jaroslav Sevcik authored
If StoreIC stores into a kConst field, only take the slow path if the value is different from the current value. This recovers the ObjectAssign regression in crbug.com/930680. Bug: v8:8361, chromium:930680 Change-Id: Ie27d15d624b07ab1dcb58b244a46b87eec34bd0f Reviewed-on: https://chromium-review.googlesource.com/c/1470134 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#59618}
-
Jakob Kummerow authored
This takes heap-inl.h out of the "Giant Include Cluster". Naturally, that means adding a bunch of explicit includes in a bunch of places that relied on transitively including them before. As of this patch, no header file outside src/heap/ includes heap-inl.h. Bug: v8:8562,v8:8499 Change-Id: I65fa763f90e66afc30d105b9277792721f05a6d4 Reviewed-on: https://chromium-review.googlesource.com/c/1459659 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59617}
-
- 14 Feb, 2019 1 commit
-
-
Mythri authored
The megamorphic case in the KeyedStoreIC doesn't use/update any feedback. We could use this path to fast path some of the keyed stores instead of misssing to the runtime when the feedback vector is not available. This cl, moves the check for feedback vector from the bytecode handler to the KeyedStoreIC and calls the KeyedStoreIC_Megamorphic builtin when there is no valid feedback vector. This will help improve the performance of no feedback/jitless case. Bug: v8:8293 Change-Id: I71c128b355d47ac20e50fc836f4bc2cf0aab1154 Reviewed-on: https://chromium-review.googlesource.com/c/1460946 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59590}
-
- 13 Feb, 2019 5 commits
-
-
Mythri authored
The uninitialized case in the StoreIC doesn't use any feedback. We could use this path to fast path some of the named stores instead of missing to the runtime when the feedback vector is not available. Bug: v8:8293 Change-Id: Ib3c4f843b24a377708f8db18fae10983e5633484 Reviewed-on: https://chromium-review.googlesource.com/c/1463781 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#59580}
-
Georg Neis authored
They did the same thing. Change-Id: I6b63762352dae2dce58fb3a6182af52cd0aadef6 Reviewed-on: https://chromium-review.googlesource.com/c/1470126 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#59566}
-
Mythri authored
When an error occurs when storing the properties we either need to throw or ignore the error depending on the language mode. We used to infer the language mode from the type feedback vector. This cl instead falls back to runtime to check and throw an error when needed. Bug: v8:8580 Change-Id: Iebeb3ca86d753157329dc1b5cfd1c07af2ff3dcd Reviewed-on: https://chromium-review.googlesource.com/c/1458220Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#59563}
-
Nico Weber authored
For macros expanding to function definitions, I removed the spurious ; after macro invocations. For macros expandign to function declarations, I made the ; required and consistently inserted it. No behavior change. Bug: chromium:926235 Change-Id: Ib8085d85d913d74307e3481f7fee4b7dc78c7549 Reviewed-on: https://chromium-review.googlesource.com/c/1467545Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#59558}
-
Benedikt Meurer authored
Refactor the CallApiCallback builtin to - pass the context as with other stubs, and - pass holder and call data in registers. This avoids having to place holder and call data onto the stack, and thus makes it possible to easily call the CallApiCallback builtin from other builtins while just forwarding the (stack) arguments. The idea is to use this in the future to optimize the general case of calling into any API method via a FunctionTemplateInfo and doing appropriate security and/or interface checks upfront as necessary (eventually making the HandleApiCall C++ builtin obsolete at some point). Bug: v8:8820, chromium:913553 Change-Id: I10c0065016df4d0c24bac3d46945ea597b65ed02 Cq-Include-Trybots: luci.chromium.try:linux-blink-rel Reviewed-on: https://chromium-review.googlesource.com/c/1469821 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59551}
-
- 12 Feb, 2019 3 commits
-
-
Matt Gardner authored
This CL reuses the logic to determine if out of bounds loads should be allowed to determine whether in bounds hole loads should be converted to undefined or handled as IC misses. bug: v8:8561 Change-Id: I1da859aba082cf21c67e7202b1e308ac4614b64a Reviewed-on: https://chromium-review.googlesource.com/c/1465182Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Matt Gardner <magardn@microsoft.com> Cr-Commit-Position: refs/heads/master@{#59540}
-
Georg Neis authored
... as there's no search involved and there are never multiple names. Change-Id: Ice88c4d98195e74f6540926b0a1199df62b42da2 Reviewed-on: https://chromium-review.googlesource.com/c/1466645Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#59532}
-
Georg Neis authored
This is a reland of 8683116e without changes. The previous issues should be gone thanks to ba1d0f25. Original change's description: > Reland^3 "[turbofan] Use feedback when reducing global loads/stores." > > This is a reland of 2d2c1374 without > changes. Offending chromium tests have been modified. > > Original change's description: > > Reland^2 "[turbofan] Use feedback when reducing global loads/stores." > > > > This reverts commit ac85ab0a. A > > chromium test caused trouble and was taken care of in > > https://chromium-review.googlesource.com/c/1384064. > > > > Original change's description: > > > [turbofan] Use feedback when reducing global loads/stores. > > > > > > We already record the script context location or the property cell > > > as feedback of the global load/store IC, so Turbofan doesn't need > > > to do the lookups again. > > > > TBR=sigurds@chromium.org > > > > Change-Id: I58bcd9bceec2f9cf401f7b0fc4460a6da6cd0abc > > Reviewed-on: https://chromium-review.googlesource.com/c/1386404 > > Commit-Queue: Georg Neis <neis@chromium.org> > > Reviewed-by: Georg Neis <neis@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#58393} > > Change-Id: Ic6734201a6c45f2752488ab44b16859776802f51 > Reviewed-on: https://chromium-review.googlesource.com/c/1408252 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58769} TBR=bmeurer@chromium.org Change-Id: I80890e2605711045ec6997843d031b61ea27d5e4 Reviewed-on: https://chromium-review.googlesource.com/c/1463779 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59518}
-
- 09 Feb, 2019 5 commits
-
-
Mike Stanton authored
This is a reland of 7179cdb1 The node integration build failure appears to be constant. Original change's description: > Reland "Introduce a PREMONOMORPHIC state to StoreGlobalIC" > > (Fixed test failure in lite-mode) > > Introduce a PREMONOMORPHIC state to StoreGlobalIC > > It's used rather narrowly for now -- only when we run into an > interceptor during the lookup. After the call to SetProperty, we know > more. That is, the interceptor was only there because it's a new > property, and the call to SetProperty ends up creating it. > > By delaying the initialization of the IC, we recognize the (now) > created property, and can provide good feedback downstream to > TurboFan. > > TBR=ishell@chromium.org > > Bug: v8:8712 > Change-Id: Ieb79dcf1354ee294ad0f479a4a6c41a77f389850 > Reviewed-on: https://chromium-review.googlesource.com/c/1460955 > Reviewed-by: Michael Stanton <mvstanton@chromium.org> > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59483} TBR=ishell@chromium.org Bug: v8:8712 Change-Id: I31aa4c066ff46cb39187eed392313d2e524f4445 Reviewed-on: https://chromium-review.googlesource.com/c/1461998Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#59485}
-
Michael Stanton authored
This reverts commit 7179cdb1. Reason for revert: Breaks node integration build. Original change's description: > Reland "Introduce a PREMONOMORPHIC state to StoreGlobalIC" > > (Fixed test failure in lite-mode) > > Introduce a PREMONOMORPHIC state to StoreGlobalIC > > It's used rather narrowly for now -- only when we run into an > interceptor during the lookup. After the call to SetProperty, we know > more. That is, the interceptor was only there because it's a new > property, and the call to SetProperty ends up creating it. > > By delaying the initialization of the IC, we recognize the (now) > created property, and can provide good feedback downstream to > TurboFan. > > TBR=ishell@chromium.org > > Bug: v8:8712 > Change-Id: Ieb79dcf1354ee294ad0f479a4a6c41a77f389850 > Reviewed-on: https://chromium-review.googlesource.com/c/1460955 > Reviewed-by: Michael Stanton <mvstanton@chromium.org> > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59483} TBR=mvstanton@chromium.org,ishell@chromium.org Change-Id: Ifd45908ee66760ef9199d9722b7e558c31f77830 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8712 Reviewed-on: https://chromium-review.googlesource.com/c/1461997Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#59484}
-
Mike Stanton authored
(Fixed test failure in lite-mode) Introduce a PREMONOMORPHIC state to StoreGlobalIC It's used rather narrowly for now -- only when we run into an interceptor during the lookup. After the call to SetProperty, we know more. That is, the interceptor was only there because it's a new property, and the call to SetProperty ends up creating it. By delaying the initialization of the IC, we recognize the (now) created property, and can provide good feedback downstream to TurboFan. TBR=ishell@chromium.org Bug: v8:8712 Change-Id: Ieb79dcf1354ee294ad0f479a4a6c41a77f389850 Reviewed-on: https://chromium-review.googlesource.com/c/1460955Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#59483}
-
Michael Stanton authored
This reverts commit ec06b5c4. Reason for revert: Breaks "lite" builder. Original change's description: > Introduce a PREMONOMORPHIC state to StoreGlobalIC > > It's used rather narrowly for now -- only when we run into an > interceptor during the lookup. After the call to SetProperty, we know > more. That is, the interceptor was only there because it's a new > property, and the call to SetProperty ends up creating it. > > By delaying the initialization of the IC, we recognize the (now) > created property, and can provide good feedback downstream to > TurboFan. > > Bug: v8:8712 > Change-Id: I4e10ba220c8363b393c6de84ce35fe5ef0e9c427 > Reviewed-on: https://chromium-review.googlesource.com/c/1456090 > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59481} TBR=mvstanton@chromium.org,ishell@google.com,ishell@chromium.org Change-Id: I072a55275d64315924090a68247bb430f5c4f03d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8712 Reviewed-on: https://chromium-review.googlesource.com/c/1460954Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#59482}
-
Mike Stanton authored
It's used rather narrowly for now -- only when we run into an interceptor during the lookup. After the call to SetProperty, we know more. That is, the interceptor was only there because it's a new property, and the call to SetProperty ends up creating it. By delaying the initialization of the IC, we recognize the (now) created property, and can provide good feedback downstream to TurboFan. Bug: v8:8712 Change-Id: I4e10ba220c8363b393c6de84ce35fe5ef0e9c427 Reviewed-on: https://chromium-review.googlesource.com/c/1456090 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#59481}
-
- 08 Feb, 2019 1 commit
-
-
Mythri authored
This cl: https://chromium-review.googlesource.com/c/v8/v8/+/1421077 changed the implementation of SetProperty to infer the language mode. Language mode is only required when there is an error to decide if we have to throw an error or not. However we used to compute language mode eagerly for PropertyCallbackInfo. This causes regressions in some benchmarks. This cl changes it by deferring it further by computing it only when it is actually required. BUG: v8:8580, chromium:925289 Change-Id: Iba70ec5f9bb3deec16414a1ec418b3963f2144f9 Reviewed-on: https://chromium-review.googlesource.com/c/1454608Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#59450}
-
- 06 Feb, 2019 1 commit
-
-
Benedikt Meurer authored
This turns the previous compile time constant IC::kMaxPolymorphicMapCount into a runtime flag --max-polymorphic-map-count (defaults to 4 still), which makes it easier to play with different number of maps in POLYMORPHIC state. Bug: v8:8765 Change-Id: I86c04d9b2d8be21a3bc6b31f70b0bbc359067467 Reviewed-on: https://chromium-review.googlesource.com/c/1456097Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59398}
-
- 31 Jan, 2019 2 commits
-
-
Z Duong Nguyen-Huu authored
According to spec https://tc39.github.io/ecma262/#sec-object.assign, https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys, object.assign should copy symbols last. The current implementation ignores that order. The idea of the fix here is to do iteration twice, one to skip symbol first then one to skip string. Bug: v8:6705 Change-Id: I27a353e0c44a8f7adcf55d7143dd3ce26bea2724 Reviewed-on: https://chromium-review.googlesource.com/c/1432597 Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#59258}
-
Benedikt Meurer authored
Previously AccessorAssembler::HandlePolymorphicCase() had 4 versions of the inner loop unrolled, but we always had to check against the length after 1 (POLYMORPHIC with name) or 2 (regular POLYMORPHIC) unrolled iterations anyways, so there's not a lot of benefit to unrolling besides the potentially better branch prediction in some cases. But that doesn't seem to be beneficial even in extreme cases (in fact on ARM cores we might get some benefit from having less code instead), and probably doesn't justify the additional C++ / generated code. I used the following extreme micro-benchmark to check the worst case performance impact: ```js function test(o, n) { var result; for (var i = 0; i < n; ++i) { result = o.x; } return result; } const N = 1e8; const objs = [{x: 0}, {x:1,a:1}, {x:2,b:2}, {x:3,c:3}]; for (var j = 0; j < objs.length; ++j) test(objs[j], N); console.time('Time'); for (var j = 0; j < objs.length; ++j) test(objs[j], N); console.timeEnd('Time'); ``` Running this with --noopt shows a ~1% performance regression with this patch on a beefy z840 gLinux workstation, which gives me some confidence that overall this patch is going to be neutral and maybe beneficial in case of less powerful ARM cores. Note to performance sheriffs: This could potentially tank some performance tests. In that case we may need to revisit the unrolling. Bug: v8:8562 Change-Id: I731599a7778da1992d981d36022c407ef5c735eb Reviewed-on: https://chromium-review.googlesource.com/c/1448275Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59252}
-
- 30 Jan, 2019 1 commit
-
-
Benedikt Meurer authored
When the length is already available from an unrolled iteration (which seems to be the common case), we can just reuse that below for the actual loop. Also it's probably cheaper to always use IntPtr instead of Smi for the length, since that way we don't need expensive SmiConstant for the abort conditions in the unrolled iterations. Change-Id: I322c5d864d58bc56c181473ca8b796a7ab27a51f Reviewed-on: https://chromium-review.googlesource.com/c/1445984Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59211}
-
- 29 Jan, 2019 1 commit
-
-
Ulan Degenbaev authored
This replaces InNewSpace with InYoungGeneration, which is a prerequisite for young large objects. Additional changes: - FROM_SPACE, TO_SPACE flags are renamed to FROM_PAGE, TO_PAGE. - A new LARGE_PAGE flag is added. - The external string table is refactored to track young string instead of new space strings. Bug: chromium:924547 Change-Id: Ia4e3ba1b72995c3400257a1f98559f091533e811 Reviewed-on: https://chromium-review.googlesource.com/c/1437274Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#59156}
-
- 28 Jan, 2019 3 commits
-
-
Camillo Bruni authored
- Dehandlify ScopeInfo::ContextSlotIndex - Dehandlify ScriptContextTable::Lookup - Introduce function-kind.h with range-based helper methods - Spread usage of Scope::is_script_scope and friends Change-Id: I8ed1d82cc5bb9ea3fce856e16e9eafe194fb57ba Reviewed-on: https://chromium-review.googlesource.com/c/1430100Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#59120}
-
Clemens Hammacher authored
This reverts commit c9616b0f. Reason for revert: Fails gc-stress tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Mac64%20GC%20Stress/5460 Original change's description: > Infer the language mode instead of passing it as a parameter to builtins > > It is better to infer the language mode from the context and the closure > instead of getting it from the feedback vector. This will allow us to use > some of these builtins even when feedback vectors are not allocated. > Language mode is only needed to decide if we need to throw an exception > when a store fails. This is on a slow path and hence deriving the language > mode is not on critical path. > > Bug: v8:8580 > Change-Id: Id0d8e78d35046f015b5cdc15d5fc3f8a17dd8757 > Reviewed-on: https://chromium-review.googlesource.com/c/1421924 > Commit-Queue: Mythri Alle <mythria@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59113} TBR=mythria@chromium.org,verwaest@chromium.org Change-Id: I584b41ca4d396165a3a294b7facee30f0c4f4a7f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8580 Reviewed-on: https://chromium-review.googlesource.com/c/1436025Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59114}
-
Mythri authored
It is better to infer the language mode from the context and the closure instead of getting it from the feedback vector. This will allow us to use some of these builtins even when feedback vectors are not allocated. Language mode is only needed to decide if we need to throw an exception when a store fails. This is on a slow path and hence deriving the language mode is not on critical path. Bug: v8:8580 Change-Id: Id0d8e78d35046f015b5cdc15d5fc3f8a17dd8757 Reviewed-on: https://chromium-review.googlesource.com/c/1421924 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59113}
-
- 25 Jan, 2019 2 commits
-
-
Mythri authored
Inferring the language mode involves iterating the stack to find the closure. This is an expensive operation and should be done only when required. This cl changes the implementation to infer the language mode only when we can't defer it any further. Currently, we infer the language mode when throwing an exception or when passing this information to PropertyCallbackArguments. This cl also changes the language mode parameter to SetProperty related methods to Maybe<ShouldThrow>. We only use the language mode to decide if we need to throw and using ShouldThrow instead of language mode simplifies the code by avoiding conversions from Maybe<ShouldThrow> to Maybe<LanguageMode> and vice-versa. Bug: v8:8580, chromium:923820, chromium:925289 Change-Id: I72497497f62fe0d86fcecd57b06b3183b7531f7b Reviewed-on: https://chromium-review.googlesource.com/c/1425912 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59094}
-
Mythri authored
SetProperty now infers the language mode from the closure and the context So we no longer have to pass around the language mode. Cleanup by removing the parameter where it is no longer needed. Bug: v8:8580 Change-Id: I89452b5a762eb48a911f158d22c7bfa9e3bb1be4 Reviewed-on: https://chromium-review.googlesource.com/c/1421840 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59089}
-
- 24 Jan, 2019 1 commit
-
-
Mythri authored
This is a reland of 0896599f with a fix for failing layout test. Original change's description: > Change SetProperty/SetSuperProperty to infer language mode when possible > > In most cases, the language mode can be inferred from the closure and > the context. Computing the language mode instead of passing it around > simplifies the ICs and will make it possible to go towards lazily > allocating feedback vectors. Currently ICs obtain the language mode from > the feedback vectors and with lazy feedback allocation we may not always > have feedback vectors. Since computing language mode is a bit expensive > we want to defer it as far as possible. > > In Array builtins and other builtins like Reflect.Set we need to force a > language mode when setting the properties. To support these cases the > SetProperty methods allow the language mode to be overridden when needed. > > This is a first cl in a series of cls, that will defer the language mode > computation further and remove language mode where it is not needed. > > BUG: v8:8580 > Change-Id: I9c2396e3bcfe77c3c9d6760c46d86954d54744b9 > Reviewed-on: https://chromium-review.googlesource.com/c/1409426 > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Mythri Alle <mythria@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58893} TBR: ahaas@chromium.org Change-Id: Id5d81eae91b55638dbc72168f0e5203e684869fb Reviewed-on: https://chromium-review.googlesource.com/c/1421077 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#59075}
-
- 18 Jan, 2019 1 commit
-
-
Igor Sheludko authored
Bug: v8:8477, v8:8562 Change-Id: Ieb677e0989f77ed207567d468faec0bf92752967 Reviewed-on: https://chromium-review.googlesource.com/c/1388529Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#58922}
-