- 23 Aug, 2022 1 commit
-
-
wenqin.yang authored
We found there are redundant load context operations in some bytecode array. like this: LdaImmutableCurrentContextSlot [1] Star0 ...... (don’t edit accumulator) LdaImmutableCurrentContextSlot [1] Star1 Add r1 In that case, we could modify this bytecode array as: LdaImmutableCurrentContextSlot [1] Star0 ...... (don’t edit accumulator) Add r0 This CL will elide these redundant bytecodes (LdaImmutableCurrentContextSlot and Star1), because there is no side effect for loading context, and this context slot is immutable. Change-Id: Ia26f4b934d3bd1d48c50c0c4699ba7942939991c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3816221Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#82641}
-
- 17 Aug, 2022 1 commit
-
-
Michael Lippautz authored
- Move InnerPointerToCodeCache to using internal callbacks. - Refactor internal and external callbacks to use a unified interface. Bug: v8:13184 Change-Id: If0006d324b0433f5d6bbf00b6d0fc1a2589227bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3834583Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#82515}
-
- 16 Aug, 2022 2 commits
-
-
Danylo Boiko authored
Bug: v8:7327 Change-Id: Ia0b768fe6a08c6e628fb91ac489556ddedf120ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3805662Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Danylo Boiko <danielboyko02@gmail.com> Cr-Commit-Position: refs/heads/main@{#82496}
-
Simon Zünd authored
This CL builds upon https://crrev.com/c/3284887 (and partly reverts it). Class literals are a bit iffy when it comes to source position and debugging. Mainly the debugger assumes the following invariant: When we are paused inside a class scope, then we expect the class's BlockContext to be pushed already. On the other hand, when we are paused outside a class scope in a function, we don't expect to find the class's BlockContext. The problem is that there are cases where we can either pause "inside" or "outside" the class scope. E.g.: * `var x = class {};` will break on `class` which is inside the class scope, so we expect the BlockContext to be pushed * `new class x {};` will break on `new` which is outside the class scope, so we expect the BlockContext to not be pushed yet. The issue with the fix in https://crrev.com/c/3284887 is that it adjusted the break position for the bytecode of class literals to ALWAYS be after the BlockContext is pushed. This breaks the second example above. We need to tighten the fix a bit and only defer the break position if the "current source position" is inside the class's scope. This way we always guarantee that the BlockContext is pushed or not, depending if the source position that corresponds to the break position is inside or outside the class's scope. Note 1: The CL updates a lot of the bytecode expectations. This is because the class literals are often the first statement in the snippet so we don't need to defer the break position. Note 2: We add a mirrored debugger test to the inspector test so the fuzzer can have some more fun. Fixed: chromim:1350842 Change-Id: I9b5a409f77be80db674217a685a3fc9f8a0a71cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3827871Reviewed-by:
Shu-yu Guo <syg@chromium.org> Reviewed-by:
Kim-Anh Tran <kimanh@chromium.org> Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/main@{#82473}
-
- 05 Aug, 2022 1 commit
-
-
wenqin.yang authored
There are a same name field equivalence_id_ in both BytecodeRegisterOptimizer and RegisterInfo, but one of them is int, another one is uint32_t, it's better to change them as same type to avoid addtional or potential type casting. Change-Id: I509f850d82a9a0fc30168fae83a0bd6565b7000e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3811138Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Wenqin Yang <wenqin.yang@intel.com> Cr-Commit-Position: refs/heads/main@{#82214}
-
- 04 Aug, 2022 1 commit
-
-
Lu Yahan authored
This is a reland of commit 491de34b co-authors: Ji Qiu <qiuji@iscas.ac.cn> Alvise De Faveri Tron <elvisilde@gmail.com> Usman Zain <uszain@gmail.com> Zheng Quan <vitalyankh@gmail.com> Original change's description: > [riscv32] Add RISCV32 backend > > This very large changeset adds support for RISCV32. > > Bug: v8:13025 > Change-Id: Ieacc857131e6620f0fcfd7daa88a0f8d77056aa9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3736732 > Reviewed-by: Michael Achenbach <machenbach@chromium.org> > Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> > Reviewed-by: ji qiu <qiuji@iscas.ac.cn> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Cr-Commit-Position: refs/heads/main@{#82053} Bug: v8:13025 Change-Id: I220fae4b8e2679bdc111724e08817b079b373bd5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3807124 Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
ji qiu <qiuji@iscas.ac.cn> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#82198}
-
- 03 Aug, 2022 1 commit
-
-
Lu Yahan authored
This reverts commit 491de34b. Reason for revert: Lose co-authors information Original change's description: > [riscv32] Add RISCV32 backend > > This very large changeset adds support for RISCV32. > > Bug: v8:13025 > Change-Id: Ieacc857131e6620f0fcfd7daa88a0f8d77056aa9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3736732 > Reviewed-by: Michael Achenbach <machenbach@chromium.org> > Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> > Reviewed-by: ji qiu <qiuji@iscas.ac.cn> > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Cr-Commit-Position: refs/heads/main@{#82053} Bug: v8:13025 Change-Id: I6abea32c8ea43b080a938782dc643c97a123f1d8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3803994Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
ji qiu <qiuji@iscas.ac.cn> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Cr-Commit-Position: refs/heads/main@{#82163}
-
- 01 Aug, 2022 1 commit
-
-
Victor Gomes authored
Bug: v8:7700 Change-Id: I3ea3027feb51f10ef0587328835d5a3a1002ed54 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3803029Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#82101}
-
- 29 Jul, 2022 1 commit
-
-
Lu Yahan authored
This very large changeset adds support for RISCV32. Bug: v8:13025 Change-Id: Ieacc857131e6620f0fcfd7daa88a0f8d77056aa9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3736732Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Reviewed-by:
ji qiu <qiuji@iscas.ac.cn> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#82053}
-
- 25 Jul, 2022 1 commit
-
-
Leszek Swirski authored
Too often, maglev has an issue during graph building. These are hard to debug, because failing to build a graph means that no graph can be printed. This patch adds a tracing printer that dumps out nodes as they are added to the graph -- it doesn't have the beautiful unicode arrows, but at least it's something. Bug: v8:7700 Change-Id: Id6673a9ee2436eac365d6d449dd2fa49bdc354d0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3780527Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#81926}
-
- 20 Jul, 2022 1 commit
-
-
ishell@chromium.org authored
... in favour of Builtins::name(). Bug: v8:11880 Change-Id: I1e06314aec71ea367cd8096316e8fb9aceb63feb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3776686 Auto-Submit: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#81854}
-
- 08 Jul, 2022 1 commit
-
-
Manos Koukoutos authored
Mostly src/codegen, src/compiler, src/interpreter, src/libplatform. Drive-by: Remove some unreachable code. Bug: v8:13006 Change-Id: I1a9467f7e42531c545f660d35416c388e8ef9d3c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3749193 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#81613}
-
- 05 Jul, 2022 3 commits
-
-
Manos Koukoutos authored
This is a reland of commit 2d74bfa4 Difference compared to original: Restore one needed include. Original change's description: > Remove some unused includes > > Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. > > Bug: v8:13006 > Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702 > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81523} Bug: v8:13006 Change-Id: I88c45059572fa25af4e0999f479ba5c28572db7f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3746077Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#81539}
-
Manos Koukoutos authored
This reverts commit 2d74bfa4. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac%20-%20arm64%20-%20debug%20builder/7403/overview Original change's description: > Remove some unused includes > > Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. > > Bug: v8:13006 > Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702 > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81523} Bug: v8:13006 Change-Id: I7579dc3805ed4cbcd56488c31450c7941b430b1a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3746076 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81526}
-
Manos Koukoutos authored
Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. Bug: v8:13006 Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#81523}
-
- 14 Jun, 2022 1 commit
-
-
Yolanda Chen authored
Bug: v8:12940 Change-Id: I2e12ba483f641a27fab623ae4d4f652aa8cdedff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3699226Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Yolanda Chen <yolanda.chen@intel.com> Cr-Commit-Position: refs/heads/main@{#81121}
-
- 09 Jun, 2022 1 commit
-
-
Yolanda Chen authored
Some temp register slots are only used in a short range at the begining of a statement or expression. They can be released earlier to save a slot for later use. After the change, we can see frame size reduced in the switch, class literal and ForOf tests. Bug: v8:12940 Change-Id: I17b412d89353206fc01248cb3eefd2c678bc4ebb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3688565Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Yolanda Chen <yolanda.chen@intel.com> Cr-Commit-Position: refs/heads/main@{#81021}
-
- 23 May, 2022 1 commit
-
-
Leszek Swirski authored
Add an implementation of BranchIfInt32Compare, which is emitted whenever a compare op is immediately followed by a branch. Bug: v8:7700 Change-Id: I2c56d9de199bac8de33b33201f8614aee8e9894e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3647693Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#80694}
-
- 13 May, 2022 1 commit
-
-
Clemens Backes authored
Now that we require C++17 support, we can just use the standard static_assert without message, instead of our STATIC_ASSERT macro. R=leszeks@chromium.org Bug: v8:12425 Change-Id: I1d4e39c310b533bcd3a4af33d027827e6c083afe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3647353Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#80524}
-
- 10 May, 2022 1 commit
-
-
Shu-yu Guo authored
Private brand checks have shipped since M91. Bug: v8:11374 Change-Id: Ifd2f8e9904cdb25b45b2e4019da13b3cfc9efdc5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3622266Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Auto-Submit: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#80455}
-
- 03 May, 2022 1 commit
-
-
Camillo Bruni authored
To be consistent with the all the other tiers and avoid confusion, we rename --opt to ---turbofan, and --always-opt to --always-turbofan. Change-Id: Ie23dc8282b3fb4cf2fbf73b6c3d5264de5d09718 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3610431Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80336}
-
- 02 May, 2022 1 commit
-
-
Jakob Linke authored
This is a reland of commit 91453880 Fixed: properly reference the ClearedValue in CSA (i.e. without the cage_base upper 32 bits). Original change's description: > Reland "[osr] Use the new OSR cache" > > This is a reland of commit 91da3883 > > Fixed: Use an X register for JumpIfCodeTIsMarkedForDeoptimization > on arm64. > > Original change's description: > > [osr] Use the new OSR cache > > > > This CL switches over our OSR system to be based on the feedback > > vector osr caches. > > > > - OSRing to Sparkplug is fully separated from OSR urgency. If > > SP code exists, we simply jump to it, no need to maintain an > > installation request. > > - Each JumpLoop checks its dedicated FeedbackVector cache slot. > > If a valid target code object exists, we enter it *without* > > calling into runtime to fetch the code object. > > - Finally, OSR urgency still remains as the heuristic for > > requesting Turbofan OSR compile jobs. Note it no longer has a > > double purpose of being a generic untargeted installation > > request. > > > > With the new system in place, we can remove now-unnecessary > > hacks: > > > > - Early OSR tierup is replaced by the standard OSR system. Any > > present OSR code is automatically entered. > > - The synchronous OSR compilation fallback is removed. With > > precise installation (= per-JumpLoop-bytecode) we no longer > > have the problem of 'getting unlucky' with JumpLoop/cache entry > > mismatches. Execution has moved on while compiling? Simply spawn > > a new concurrent compile job. > > - Remove the synchronous (non-OSR) Turbofan compile request now > > that we always enter available OSR code as early as possible. > > - Tiering into Sparkplug no longer messes with OSR state. > > > > Bug: v8:12161 > > Change-Id: I0a85e53d363504b7dac174dbaf69c03c35e66700 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596167 > > Commit-Queue: Jakob Linke <jgruber@chromium.org> > > Auto-Submit: Jakob Linke <jgruber@chromium.org> > > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#80147} > > Bug: v8:12161 > Change-Id: Ib3597cf1d99cdb5d0f2c5ac18e311914f376231d > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3606232 > Auto-Submit: Jakob Linke <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80167} Bug: v8:12161,chromium:1320189 Change-Id: Ibd9a2ab61f51ebb32a3f5a66f7c602faead71c3e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3620273Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80306}
-
- 29 Apr, 2022 1 commit
-
-
Rohan Pavone authored
This reverts commit 91453880. Reason for revert: Breaking the Fuchsia Deterministic Builder Original change's description: > Reland "[osr] Use the new OSR cache" > > This is a reland of commit 91da3883 > > Fixed: Use an X register for JumpIfCodeTIsMarkedForDeoptimization > on arm64. > > Original change's description: > > [osr] Use the new OSR cache > > > > This CL switches over our OSR system to be based on the feedback > > vector osr caches. > > > > - OSRing to Sparkplug is fully separated from OSR urgency. If > > SP code exists, we simply jump to it, no need to maintain an > > installation request. > > - Each JumpLoop checks its dedicated FeedbackVector cache slot. > > If a valid target code object exists, we enter it *without* > > calling into runtime to fetch the code object. > > - Finally, OSR urgency still remains as the heuristic for > > requesting Turbofan OSR compile jobs. Note it no longer has a > > double purpose of being a generic untargeted installation > > request. > > > > With the new system in place, we can remove now-unnecessary > > hacks: > > > > - Early OSR tierup is replaced by the standard OSR system. Any > > present OSR code is automatically entered. > > - The synchronous OSR compilation fallback is removed. With > > precise installation (= per-JumpLoop-bytecode) we no longer > > have the problem of 'getting unlucky' with JumpLoop/cache entry > > mismatches. Execution has moved on while compiling? Simply spawn > > a new concurrent compile job. > > - Remove the synchronous (non-OSR) Turbofan compile request now > > that we always enter available OSR code as early as possible. > > - Tiering into Sparkplug no longer messes with OSR state. > > > > Bug: v8:12161 > > Change-Id: I0a85e53d363504b7dac174dbaf69c03c35e66700 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596167 > > Commit-Queue: Jakob Linke <jgruber@chromium.org> > > Auto-Submit: Jakob Linke <jgruber@chromium.org> > > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#80147} > > Bug: v8:12161 > Change-Id: Ib3597cf1d99cdb5d0f2c5ac18e311914f376231d > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3606232 > Auto-Submit: Jakob Linke <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80167} Bug: v8:12161 Change-Id: I73e2d98660e9edfbe07a152a14402380ea9227de Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3615219Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Owners-Override: Deepti Gandluri <gdeepti@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#80287}
-
- 27 Apr, 2022 1 commit
-
-
Jakob Gruber authored
This logic was confused in the presence of inlined frames; the deopt exit offset would point inside the innermost inlined frame while we incorrectly assumed it points at the outermost frame. Fix this by always referring to the bytecode offset of the outermost frame. Bug: v8:12161 Fixed: chromium:1320094 Change-Id: I2eb28498639432c5344859f64a9388d93ee23bde Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3608630 Auto-Submit: Jakob Linke <jgruber@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80212}
-
- 26 Apr, 2022 1 commit
-
-
Jakob Gruber authored
This is a reland of commit 91da3883 Fixed: Use an X register for JumpIfCodeTIsMarkedForDeoptimization on arm64. Original change's description: > [osr] Use the new OSR cache > > This CL switches over our OSR system to be based on the feedback > vector osr caches. > > - OSRing to Sparkplug is fully separated from OSR urgency. If > SP code exists, we simply jump to it, no need to maintain an > installation request. > - Each JumpLoop checks its dedicated FeedbackVector cache slot. > If a valid target code object exists, we enter it *without* > calling into runtime to fetch the code object. > - Finally, OSR urgency still remains as the heuristic for > requesting Turbofan OSR compile jobs. Note it no longer has a > double purpose of being a generic untargeted installation > request. > > With the new system in place, we can remove now-unnecessary > hacks: > > - Early OSR tierup is replaced by the standard OSR system. Any > present OSR code is automatically entered. > - The synchronous OSR compilation fallback is removed. With > precise installation (= per-JumpLoop-bytecode) we no longer > have the problem of 'getting unlucky' with JumpLoop/cache entry > mismatches. Execution has moved on while compiling? Simply spawn > a new concurrent compile job. > - Remove the synchronous (non-OSR) Turbofan compile request now > that we always enter available OSR code as early as possible. > - Tiering into Sparkplug no longer messes with OSR state. > > Bug: v8:12161 > Change-Id: I0a85e53d363504b7dac174dbaf69c03c35e66700 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596167 > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Auto-Submit: Jakob Linke <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80147} Bug: v8:12161 Change-Id: Ib3597cf1d99cdb5d0f2c5ac18e311914f376231d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3606232 Auto-Submit: Jakob Linke <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#80167}
-
- 25 Apr, 2022 3 commits
-
-
Nico Hartmann authored
This reverts commit 91da3883. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20-%20arm64%20-%20sim%20-%20pointer%20compression%20-%20builder/21150/overview Original change's description: > [osr] Use the new OSR cache > > This CL switches over our OSR system to be based on the feedback > vector osr caches. > > - OSRing to Sparkplug is fully separated from OSR urgency. If > SP code exists, we simply jump to it, no need to maintain an > installation request. > - Each JumpLoop checks its dedicated FeedbackVector cache slot. > If a valid target code object exists, we enter it *without* > calling into runtime to fetch the code object. > - Finally, OSR urgency still remains as the heuristic for > requesting Turbofan OSR compile jobs. Note it no longer has a > double purpose of being a generic untargeted installation > request. > > With the new system in place, we can remove now-unnecessary > hacks: > > - Early OSR tierup is replaced by the standard OSR system. Any > present OSR code is automatically entered. > - The synchronous OSR compilation fallback is removed. With > precise installation (= per-JumpLoop-bytecode) we no longer > have the problem of 'getting unlucky' with JumpLoop/cache entry > mismatches. Execution has moved on while compiling? Simply spawn > a new concurrent compile job. > - Remove the synchronous (non-OSR) Turbofan compile request now > that we always enter available OSR code as early as possible. > - Tiering into Sparkplug no longer messes with OSR state. > > Bug: v8:12161 > Change-Id: I0a85e53d363504b7dac174dbaf69c03c35e66700 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596167 > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Auto-Submit: Jakob Linke <jgruber@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80147} Bug: v8:12161 Change-Id: I4a6955f4f20b6f3b13e98d5600c7c6a5205915bc No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3605608 Auto-Submit: Nico Hartmann <nicohartmann@chromium.org> Owners-Override: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#80148}
-
Jakob Gruber authored
This CL switches over our OSR system to be based on the feedback vector osr caches. - OSRing to Sparkplug is fully separated from OSR urgency. If SP code exists, we simply jump to it, no need to maintain an installation request. - Each JumpLoop checks its dedicated FeedbackVector cache slot. If a valid target code object exists, we enter it *without* calling into runtime to fetch the code object. - Finally, OSR urgency still remains as the heuristic for requesting Turbofan OSR compile jobs. Note it no longer has a double purpose of being a generic untargeted installation request. With the new system in place, we can remove now-unnecessary hacks: - Early OSR tierup is replaced by the standard OSR system. Any present OSR code is automatically entered. - The synchronous OSR compilation fallback is removed. With precise installation (= per-JumpLoop-bytecode) we no longer have the problem of 'getting unlucky' with JumpLoop/cache entry mismatches. Execution has moved on while compiling? Simply spawn a new concurrent compile job. - Remove the synchronous (non-OSR) Turbofan compile request now that we always enter available OSR code as early as possible. - Tiering into Sparkplug no longer messes with OSR state. Bug: v8:12161 Change-Id: I0a85e53d363504b7dac174dbaf69c03c35e66700 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596167 Commit-Queue: Jakob Linke <jgruber@chromium.org> Auto-Submit: Jakob Linke <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#80147}
-
jameslahm authored
This is a reland of commit 62632c08. Reason for previous revert: Performance regressions crbug.com/1315724. The reland only optimizes strict equal boolean literal like "a===true" or "a===false", and we generate TestReferenceEqual rather than TestStrictEqual for the comparasion. And also add typed optimization for ReferenceEqual when all inputs are boolean with boolean constant. Original change's description: > [interpreter] Optimize strict equal boolean > > For strict equal boolean literal like "a===true" > or "a===false", we could generate TestReferenceEqual > rather than TestStrictEqual. And in `execution_result()->IsTest()` > case, we could directly emit JumpIfTrue/JumpIfFalse. > > E.g. > ``` > a === true > ``` > Generated Bytecode From: > ``` > LdaGlobal > Star1 > LdaTrue > TestEqualStrict > ``` > To: > ``` > LdaGlobal > Star1 > LdaTrue > TestReferenceEqual > ``` > > E.g. > ``` > if (a === true) > ``` > Generated Bytecode From: > ``` > LdaGlobal > Star1 > LdaTrue > TestEqualStrict > JumpIfFalse > ``` > To > ``` > LdaGlobal > JumpIfTrue > Jump > ``` > > > Bug: v8:6403 > Change-Id: Ieaca147acd2d523ac0d2466e7861afb2d29a1310 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568923 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: 王澳 <wangao.james@bytedance.com> > Cr-Commit-Position: refs/heads/main@{#79935} Bug: v8:6403 Change-Id: I2ae3ab57dce85313af200fa522e3632af5c3a554 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3592039Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80141}
-
- 22 Apr, 2022 1 commit
-
-
jameslahm authored
This CL extends GetIterator to check whether the result of calling @@iterator is JSReceiver and throw SymbolIteratorInvalid if it's not JSReceiver. GetIterator bytecode involves 3 steps now: - method = GetMethod(obj, @@iterator) - iterator = Call(method, obj) - if(!IsJSReceiver(iterator)) throw SymbolIteratorInvalid [Added] New Builtin: CallIteratorWithFeedbackLazyDeoptContinuation, which is used when lazy deopt is triggered by call @@iterator. Related spec: https://tc39.es/ecma262/#sec-getiterator. Related doc: https://docs.google.com/document/d/1s67HC2f-4zxA_s1Bmm7dfwMFv_KDUfMiWIKkNSeQNKw/edit#heading=h.kdzv8mq4g4ks. Bug: v8:9489 Change-Id: I17952c0f3e24e1e600ee1348809fb188c2c70f8e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3563447Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: 王澳 <wangao.james@bytedance.com> Cr-Commit-Position: refs/heads/main@{#80112}
-
- 20 Apr, 2022 1 commit
-
-
Jakob Gruber authored
.. which points back at the corresponding feedback vector slot for each JumpLoop bytecode. Bug: v8:12161 Change-Id: I95f4d013544a69e088314655af7eb1dc504a8657 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596166Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#80048}
-
- 19 Apr, 2022 1 commit
-
-
Jakob Linke authored
This reverts commit 62632c08. Reason for revert: Performance regressions crbug.com/1315724 Original change's description: > [interpreter] Optimize strict equal boolean > > For strict equal boolean literal like "a===true" > or "a===false", we could generate TestReferenceEqual > rather than TestStrictEqual. And in `execution_result()->IsTest()` > case, we could directly emit JumpIfTrue/JumpIfFalse. > > E.g. > ``` > a === true > ``` > Generated Bytecode From: > ``` > LdaGlobal > Star1 > LdaTrue > TestEqualStrict > ``` > To: > ``` > LdaGlobal > Star1 > LdaTrue > TestReferenceEqual > ``` > > E.g. > ``` > if (a === true) > ``` > Generated Bytecode From: > ``` > LdaGlobal > Star1 > LdaTrue > TestEqualStrict > JumpIfFalse > ``` > To > ``` > LdaGlobal > JumpIfTrue > Jump > ``` > > > Bug: v8:6403 > Change-Id: Ieaca147acd2d523ac0d2466e7861afb2d29a1310 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568923 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: 王澳 <wangao.james@bytedance.com> > Cr-Commit-Position: refs/heads/main@{#79935} Bug: v8:6403, chromium:1315724 Change-Id: I65c520590093724e838f738c795d229687efb9de Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3592752Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#80010}
-
- 14 Apr, 2022 1 commit
-
-
Jakob Gruber authored
This is a reland of commit a4216b7b Original change's description: > [osr] Extract extended OSR checks to BaselineOnStackReplacement builtin > > .. to reduce Sparkplug code size. > > Bug: v8:12161 > Change-Id: I4029a75dfa37f716c285ce27153c077a0a82a341 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3576119 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79962} Bug: v8:12161 Change-Id: I69afd0832d7ca447b5481651ef47ebaa8d023ded Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3585943 Auto-Submit: Jakob Linke <jgruber@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#79980}
-
- 13 Apr, 2022 2 commits
-
-
Tobias Tebbi authored
This reverts commit a4216b7b. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/43174/overview Original change's description: > [osr] Extract extended OSR checks to BaselineOnStackReplacement builtin > > .. to reduce Sparkplug code size. > > Bug: v8:12161 > Change-Id: I4029a75dfa37f716c285ce27153c077a0a82a341 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3576119 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79962} Bug: v8:12161 Change-Id: I382609d0b8cd951a3df5c9c834fe7071eb90faa5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3584121 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Owners-Override: Tobias Tebbi <tebbi@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#79966}
-
Jakob Gruber authored
.. to reduce Sparkplug code size. Bug: v8:12161 Change-Id: I4029a75dfa37f716c285ce27153c077a0a82a341 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3576119Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79962}
-
- 12 Apr, 2022 1 commit
-
-
jameslahm authored
For strict equal boolean literal like "a===true" or "a===false", we could generate TestReferenceEqual rather than TestStrictEqual. And in `execution_result()->IsTest()` case, we could directly emit JumpIfTrue/JumpIfFalse. E.g. ``` a === true ``` Generated Bytecode From: ``` LdaGlobal Star1 LdaTrue TestEqualStrict ``` To: ``` LdaGlobal Star1 LdaTrue TestReferenceEqual ``` E.g. ``` if (a === true) ``` Generated Bytecode From: ``` LdaGlobal Star1 LdaTrue TestEqualStrict JumpIfFalse ``` To ``` LdaGlobal JumpIfTrue Jump ``` Bug: v8:6403 Change-Id: Ieaca147acd2d523ac0d2466e7861afb2d29a1310 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568923Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: 王澳 <wangao.james@bytedance.com> Cr-Commit-Position: refs/heads/main@{#79935}
-
- 11 Apr, 2022 1 commit
-
-
Jakob Gruber authored
This is a reland of commit 51b99213 Fixed in reland: - bytecode_age was incorrectly still accessed as an int8 (instead of int16). - age and osr state were incorrectly reset on ia32 (16-bit write instead of 32-bit). Original change's description: > [osr] Add an install-by-offset mechanism > > .. for concurrent OSR. There, the challenge is to hit the correct > JumpLoop bytecode once compilation completes, since execution has > moved on in the meantime. > > This CL adds a new mechanism to request installation at a specific > bytecode offset. We add a new `osr_install_target` field to the > BytecodeArray: > > bitfield struct OSRUrgencyAndInstallTarget extends uint16 { > osr_urgency: uint32: 3 bit; > osr_install_target: uint32: 13 bit; > } > > // [...] > osr_urgency_and_install_target: OSRUrgencyAndInstallTarget; > bytecode_age: uint16; // Only 3 bits used. > // [...] > > Note urgency and install target are packed into one 16 bit field, > we can thus merge both checks into one comparison within JumpLoop. > Note also that these fields are adjacent to the bytecode age; we > still reset both OSR state and age with a single (now 32-bit) > store. > > The install target is the lowest 13 bits of the bytecode offset. > When set, every reached JumpLoop will check `is this my offset?`, > and if yes, jump into runtime to tier up. > > Drive-by: Rename BaselineAssembler::LoadByteField to LoadWord8Field. > > Bug: v8:12161 > Change-Id: I275d468b19df3a4816392a2fec0713a8d211ef80 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571812 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79853} Bug: v8:12161 Change-Id: I7c59b2a2aacb1d7d40fdf39396ec9d8d48b0b9ac Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3578543Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79911}
-
- 07 Apr, 2022 2 commits
-
-
Leszek Swirski authored
This reverts commit 51b99213. Reason for revert: Speculative revert for MSAN failure https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/43080/overview Original change's description: > [osr] Add an install-by-offset mechanism > > .. for concurrent OSR. There, the challenge is to hit the correct > JumpLoop bytecode once compilation completes, since execution has > moved on in the meantime. > > This CL adds a new mechanism to request installation at a specific > bytecode offset. We add a new `osr_install_target` field to the > BytecodeArray: > > bitfield struct OSRUrgencyAndInstallTarget extends uint16 { > osr_urgency: uint32: 3 bit; > osr_install_target: uint32: 13 bit; > } > > // [...] > osr_urgency_and_install_target: OSRUrgencyAndInstallTarget; > bytecode_age: uint16; // Only 3 bits used. > // [...] > > Note urgency and install target are packed into one 16 bit field, > we can thus merge both checks into one comparison within JumpLoop. > Note also that these fields are adjacent to the bytecode age; we > still reset both OSR state and age with a single (now 32-bit) > store. > > The install target is the lowest 13 bits of the bytecode offset. > When set, every reached JumpLoop will check `is this my offset?`, > and if yes, jump into runtime to tier up. > > Drive-by: Rename BaselineAssembler::LoadByteField to LoadWord8Field. > > Bug: v8:12161 > Change-Id: I275d468b19df3a4816392a2fec0713a8d211ef80 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571812 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Jakob Linke <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79853} Bug: v8:12161 Change-Id: I0c47499544465c80b5b23a492c00ec1c62815caa No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3576121 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#79855}
-
Jakob Gruber authored
.. for concurrent OSR. There, the challenge is to hit the correct JumpLoop bytecode once compilation completes, since execution has moved on in the meantime. This CL adds a new mechanism to request installation at a specific bytecode offset. We add a new `osr_install_target` field to the BytecodeArray: bitfield struct OSRUrgencyAndInstallTarget extends uint16 { osr_urgency: uint32: 3 bit; osr_install_target: uint32: 13 bit; } // [...] osr_urgency_and_install_target: OSRUrgencyAndInstallTarget; bytecode_age: uint16; // Only 3 bits used. // [...] Note urgency and install target are packed into one 16 bit field, we can thus merge both checks into one comparison within JumpLoop. Note also that these fields are adjacent to the bytecode age; we still reset both OSR state and age with a single (now 32-bit) store. The install target is the lowest 13 bits of the bytecode offset. When set, every reached JumpLoop will check `is this my offset?`, and if yes, jump into runtime to tier up. Drive-by: Rename BaselineAssembler::LoadByteField to LoadWord8Field. Bug: v8:12161 Change-Id: I275d468b19df3a4816392a2fec0713a8d211ef80 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571812Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79853}
-
- 31 Mar, 2022 1 commit
-
-
Leszek Swirski authored
Nodes can now hold a LazyDeoptSafepoint which stores the frame state in case they trigger a lazy deopt. OpProperties have a new CanLazyDeopt bit, and codegen emits a safepoint table entry + lazy deopt for all nodes with this bit. Also, we now check the deoptimized code bit on entry into the maglev compiled function. An example use of these lazy deopts is added as a PropertyCell fast path for LdaGlobal, which adds a code dependency on the property cell. Bug: v8:7700 Change-Id: I663db38dfa7325d38fc6d5f079d263a958074e36 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3557251Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jakob Linke <jgruber@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#79688}
-
- 23 Mar, 2022 1 commit
-
-
Joyee Cheung authored
Since assignments to read-only private references can be skipped due to short-circuiting in logical assignments, we should not eagerly emit the error of invalid writes, and should instead load the values as usual, only emitting an error when the assignment happens, which can be handled by BytecodeGenerator::BuildAssignment(). Bug: v8:12680, v8:8330, v8:10372 Change-Id: Ia5fea9090bc48b0af8a9c8d6f95174f7aa2d86f8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509298Reviewed-by:
Shu-yu Guo <syg@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/main@{#79583}
-