- 06 Oct, 2020 1 commit
-
-
Clemens Backes authored
This rewrites some more code to use GraphAssembler methods instead of manually creating and adding the nodes. To this end, we add three more methods to the GraphAssembler: UintPtrConstant, ProtectedStore, and ProtectedLoad. R=ahaas@chromium.org, tebbi@chromium.org Bug: v8:10123 Change-Id: I825137d4355d117d88e29063ab2ac68340883f77 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2445512 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#70338}
-
- 29 Sep, 2020 1 commit
-
-
Mike Stanton authored
Here is an alternate fix for chromium:1123379, which addresses a TODO. A callback is provided to the GraphAssembler when it's working on an unscheduled graph. In such cases, changed nodes in the main graph need to be revisited after change. The callback ensures that the GraphAssembler kicks that process off when necessary. Bug: chromium:1123379 Change-Id: I9d864c3390fbe670ee450152a67555dcbfa8f581 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2433924 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#70192}
-
- 28 Sep, 2020 1 commit
-
-
Santiago Aboy Solanes authored
Previously ToNumber could be called with an empty context. In a previous CL (https://crrev.com/c/v8/v8/+/2078580) we added DCHECKS to make sure that some paths were not using the empty context. Now we are doing the next step of adding a primitive to separate the cases. Small update from delphick@ to get the builtin descriptor right. Bug: v8:6949, v8:10933 Change-Id: Ie40b169f680f60a08eb26fac1fcfcef7d6169e65 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2428863 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#70162}
-
- 10 Sep, 2020 1 commit
-
-
Jakob Gruber authored
This is the final part of the tier-up commit series. It implements: - A prologue in NCI code objects that checks and acts upon the optimization marker. - Currently, handling is deferred to the InterpreterEntryTrampoline but this will change in the future. - The lifecycle is otherwise like Ignition-to-Turbofan; the runtime profiler marks a function for optimization, the next call to that function triggers optimization by calling into runtime, and the finished code object is installed both on the JSFunction and the optimized code cache. - The feedback vector's kOptimizedCodeWeakOrSmiOffset slot is currently reused for the mid-to-top tier up. Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng Bug: v8:8888 Change-Id: Iff50b05ddcc68b25d7ed0f1e0d20af076a1522a0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2361466Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Mythri Alle <mythria@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#69808}
-
- 24 Aug, 2020 1 commit
-
-
Jakob Gruber authored
Prior to this CL, one had to artificially insert a basic-block-terminating node after Unreachable. The common pattern was Unreachable(); Goto(&some_label); // Never reached but generates useless code. This CL improves usability by automatically merging Unreachable nodes to the end node, and terminating current effect/control. The updated pattern is just Unreachable(); or in cases where Turboprop must maintain a schedule: Unreachable(&some_label); Bug: v8:8888 Change-Id: I26a0b11b5e67252a6dc3584ae09ed06370f1eacc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362690 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#69531}
-
- 11 Aug, 2020 1 commit
-
-
Mythri A authored
We shouldn't spill weak pointers onto the stack when calling functions that can trigger GC. DynamicMapChecks operator was using feedback loaded from the feedback vector across the TryMigrateInstance function call. The feedback can be a weak pointer to receiver map for monomorphic cases and TryMigrateInstance can trigger a GC. This cl fixes it by holding a holding a strong reference to the feedback. Bug: v8:10774,v8:10582,v8:9684 Change-Id: Ia36f4d8ad46421ae570f41439bc1f0875081deee Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336804Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#69338}
-
- 22 Jul, 2020 1 commit
-
-
Sathya Gunasekaran authored
This is used by the DynamicCheckMaps operator to indicate that the optimized code should not be thrown away, but instead should be re-run again, after healing the feedback. Bug: v8:10582, v8:9684 Change-Id: Ib2408ba0d1d1a6bf50b2031a5312c7a8cca08730 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2308334 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68997}
-
- 20 Jul, 2020 1 commit
-
-
Sathya Gunasekaran authored
This CL introduces a new operator that loads the feedback vector and checks against maps at runtime, rather than embedding the map directly in the generated code. A follow on CL will use this operator when generating code for named property access. Bug: v8:10582, v8:9684 Change-Id: I372a01586d3048427760f0cb27619a59afc3f59e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2241518Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Mythri Alle <mythria@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#68930}
-
- 15 Jul, 2020 1 commit
-
-
Maya Lekova authored
This change adds a has_error parameter on the stack which allows the fast callback to report an error. In case this parameter is set to non-zero, the generated code calls the slow (default) callback, which can throw the exception. Bug: chromium:1052746 Change-Id: Ib11f6b0bef37d5eb1d04cd6d0a3ef59028dcc448 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2183929Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#68871}
-
- 08 Jun, 2020 1 commit
-
-
Clemens Backes authored
This is a little cleanup to use the {GraphAssembler} for implementing {TraceMemoryOperation}. The {GraphAssembler} needs to be extended by a straight-forward {StackSlot} method. R=tebbi@chromium.org CC=arobin@google.com Bug: v8:10123 Change-Id: Ic872870bfd8609bb09383a0458b5c08fd7586993 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2232556 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#68238}
-
- 25 May, 2020 1 commit
-
-
Ross McIlroy authored
We can't consistently rewire the successor blocks of an unreachable node to disconnect them from the graph when we are trying to maintain the schedule. Instead simply leave the code there. As a future optimization we could add a proper scheduled dead code elimination phase which can deal with this. As a side-effect, one of the tests sees a int64 DeadValue, so add support for that in the instruction selector. BUG=chromium:1083272,chromium:1083763,chromium:1084953,v8:9684 Change-Id: I69a6feaeef4eae62110392e27ea848b28bccf787 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209061 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Auto-Submit: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#67953}
-
- 14 May, 2020 1 commit
-
-
Ross McIlroy authored
The scheduler could schedule unreachable nodes on two basic blocks that later merge. Update DCHECK in graph-assembler's basic block updater to only check for the self-containedness of unreachable basic blocks removed from the schedule after all the blocks have been re-written to allow for this case. BUG=chromium:1079446,v8:9684 Change-Id: I91899dbf389e4425542dbd2b1ca95c3f6ad79c05 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196354Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#67812}
-
- 07 May, 2020 1 commit
-
-
Nico Hartmann authored
The code generated by TurboFan was incorrect when comparing to non-oddball undetectables using abstract equality. In particular, %GetUndetectable() == %GetUndetectable() did not return false. Bug: chromium:1051008 Change-Id: Ib62adc72a20aa6cca9ef6499d5fe7429f04623cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187498 Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#67647}
-
- 06 May, 2020 1 commit
-
-
Ross McIlroy authored
Fully remove the successor blocks when effect-control-linearization reaches an unreachable node and is maintaining the schedule. Previously we just updated the current_block_'s successor and removed any unreachable predecessors from end, however if the current_block_ is not an original block in the schedule, but a new one added due to control flow from effect control linearization lowering, the removed successor blocks could still be re-connected to the end block when they were lowered. Instead, entirely remove these unreachable blocks from the predecessor / successor chains, and have the effect-control-linearizer avoid lowering these blocks entirely. BUG=chromium:1076569,v8:9684 Change-Id: I4b4216019d55aef5363d88255726b85df8e7ada5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2179842Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#67595}
-
- 03 Apr, 2020 1 commit
-
-
Ross McIlroy authored
Effect-control-linearizer will update a basic block to connect it directly to the end node if it has an Unreachable node. Usually the block would already have been connected directly to end (via a Throw node) already, however in some cases it can be connected indirectly (via a branch, where both end in a throw node). If this happens, and the Effect-control-linearizer is maintaining the schedule (e.g., for TurboProp), it will cause the end block to have unreachable predecessor blocks, which can cause issues with the register allocator. To fix this, have the BasicBlockUpdater remove all successor blocks from the schedule, when they become Unreachable. Also add some tests to cover this in effect-control-linearizer-unittests. BUG=v8:10332,v8:9684 Change-Id: Ibce140e6d1f61751a86247e6f8c36075723a1e55 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2120537 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#66994}
-
- 31 Mar, 2020 1 commit
-
-
Junliang Yan authored
Drive-by: Fix a few BE related issue with ptr-compr enabled. Change-Id: Ic2ff9e69a42e65089a1c1544e5eba1833c2fd95e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2057355Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#66926}
-
- 06 Feb, 2020 1 commit
-
-
Clemens Backes authored
The LOAD_RAW and LOAD_RAW_NODE_OFFSET macros just call method on the GraphAssembler now, hence we can remove the macros and just do the calls directly. This reduces code complexity. R=jkummerow@chromium.org, tebbi@chromium.org Bug: v8:10123 Change-Id: I1d779969a14a52256eecb33007564eb190bdcff2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2039051 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#66149}
-
- 23 Jan, 2020 1 commit
-
-
Jakob Gruber authored
Loop exits are marked automatically by the loop scope mechanism in combination with MergeState. Creating a LoopExitValue node explicitly created an invalid graph. Drive-by: Remove LoopExit{,Effect,Value} convenience methods. Bug: chromium:1044878,v8:9972 Change-Id: I6fb52a8463e5352b5a5b243f800a9eda47df9d5a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2016593 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65949}
-
- 20 Jan, 2020 1 commit
-
-
Jakob Gruber authored
The loop peeling optimization requires all loop exits to be marked with {LoopExit,LoopExitEffect,LoopExitValue} nodes in order to peel the first loop iteration. Previously, the graph assembler only marked the default loop exit (taken once the loop condition evaluates to false). This CL adds more general support, such that all exits taken inside the loop body passed to a ForBuilder are automatically marked. We do this by tracking the current loop nesting level and a stack of loop headers inside the graph assembler, and creating marker nodes as needed inside MergeState. Bug: v8:9972,chromium:1038297 Change-Id: I1d0196ead55d6678880f8330c7cc7b8d4f2cea06 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2000740 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65861}
-
- 15 Jan, 2020 2 commits
-
-
Tobias Tebbi authored
Rename ToNumber to PlainPrimitiveToNumber since it must only be used on primitives, as we assume that it never throws and has no side effects. Change-Id: I78880545e58e46d38712f5ab75fe0b627ad178c5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2002394 Auto-Submit: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65796}
-
Clemens Backes authored
This moves first parts of the wrapper generation to the GraphAssembler. We should migrate more code in follow-up CLs, and think about also computing the schedule in the GraphAssembler (once everything is migrated). This also removes the only uses of the controversial {HalfDiamond} construct, hence this is also removed in this CL. Plus a bug fix in the GraphAssembler::Call method, and a new method in GraphAssembler to load heap number values. R=jkummerow@chromium.org, tebbi@chromium.org Bug: v8:10123 Change-Id: Iac4661cdd50049cb73a2f305e280c1af6200729a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2000756Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65784}
-
- 25 Dec, 2019 2 commits
-
-
Jakob Gruber authored
Tbr: mvstanton@chromium.org Bug: v8:9972 Change-Id: If491e37e43e2a639b452b7d5558baca75bca1791 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1973737 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#65556}
-
Jakob Gruber authored
Bug: v8:9972 Change-Id: I94a6a1a520de9da76a5de7bdcc19bd1b71b303cd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1973736 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65555}
-
- 23 Dec, 2019 1 commit
-
-
Tobias Tebbi authored
This enables using the GraphAssembler for Wasm. Change-Id: Id1f46db6cc05c9de6e878fb062434211a9c390ff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1977160 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65552}
-
- 18 Dec, 2019 1 commit
-
-
Jakob Gruber authored
Bug: v8:9972 Change-Id: Ic1d18586c92536575c9bf4e7b3d2758b44acab30 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954389 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#65489}
-
- 16 Dec, 2019 1 commit
-
-
Santiago Aboy Solanes authored
This is a reland of c924f54e Reason: Added back a bitcast that was supposed to be redundant (but it wasn't) Changes can be seen from patchets 1..3. Original change's description: > [turbofan][ptr-compr] Remove redundant ChangeTaggedToCompressed > > The final goal is to eliminate it altogether. This CL just > eliminate the redundant ones. > > Bug: v8:7703 > Change-Id: If6e718c373fca7c65ce46c347533ec4550fbc444 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950968 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#65398} Bug: v8:7703 Change-Id: I099e67d0255d4ad5529a73b272df893069374136 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1965582Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#65454}
-
- 10 Dec, 2019 2 commits
-
-
Michael Achenbach authored
This reverts commit c924f54e. Reason for revert: Suspect for GPU failures: https://ci.chromium.org/p/v8/builders/ci/Linux%20V8%20FYI%20Release%20(NVIDIA)/7641 Original change's description: > [turbofan][ptr-compr] Remove redundant ChangeTaggedToCompressed > > The final goal is to eliminate it altogether. This CL just > eliminate the redundant ones. > > Bug: v8:7703 > Change-Id: If6e718c373fca7c65ce46c347533ec4550fbc444 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950968 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#65398} TBR=tebbi@chromium.org,solanes@chromium.org Change-Id: Id280d7b0a850e3aacd56f839a0fc36d02a88f34c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7703 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1960286Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#65403}
-
Santiago Aboy Solanes authored
The final goal is to eliminate it altogether. This CL just eliminate the redundant ones. Bug: v8:7703 Change-Id: If6e718c373fca7c65ce46c347533ec4550fbc444 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950968Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#65398}
-
- 28 Nov, 2019 5 commits
-
-
Jakob Gruber authored
Ports are getting easier now. This one was fairly straightforward. Bug: v8:9972 Change-Id: I69c0566060523e505e30980cb1d3d9633da976b0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940257 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#65246}
-
Jakob Gruber authored
These node/edge kinds don't fit into the heap object type system; add wrapper classes for them instead. The wrapper class must be explicitly created, but is implicitly convertible to Node*. Bug: v8:9972 Change-Id: Ic6c253a95bb5705fb946ee3f35508ea70c9f0070 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940255 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65244}
-
Jakob Gruber authored
... for convenient TNode access (e.g.: PhiAt, LoadField, LoadElement). Bug: v8:9972 Change-Id: Ie6f5f204079cf7c84279d1cb015055816f301916 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940254 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65243}
-
Jakob Gruber authored
This is an initial (and partial) step towards full typing in graph assembler. It removes all uses of SloppyTNode, starts to introduce types in the GraphAssembler base class, and makes lambda function types (for if- and for-builders) more specific. Plenty of TODOs remain; e.g. checked casts and complete typing of GraphAssembler are left to follow-up work. Bug: v8:9972 Change-Id: I780adf83b53ad76beda4726960d95ab6df13e2ce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940476 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65241}
-
Jakob Gruber authored
Very similar to the recent ArrayPrototypeForEach port, this moves the Reduce reduction, which previously operated directly on the graph, to graph assembler. Nothing too interesting here, but it's becoming clearer that we will need more flexible Branch (multiple merge values) and If (a `break` mechanism) handling in the future. Bug: v8:9972 Change-Id: Ic48c85305ba721a9a43c67f7ad13c60da310487e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1934329 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65233}
-
- 27 Nov, 2019 1 commit
-
-
Jakob Gruber authored
After landing a few relatively simple ports in preceding work, this CL ports the more involved Array.prototype.forEach reduction, containing checkpoints, JS and runtime calls, loops, and exceptions. With the mechanisms introduced in this change, I'd expect a large chunk of js-call reductions to be trivially portable. Newly introduced: - IfBuilder0 for if-then-else statements (with optional else). - ForBuilder for for-loop statements. - MayThrow() for exceptional control flow. Exceptional edges are automatically merged and wired into the outer graph if necessary. Bug: v8:9972 Change-Id: I835bf90c5871fbd94a1d12721d44b500fbef75e2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1921798Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#65193}
-
- 21 Nov, 2019 1 commit
-
-
Jakob Gruber authored
An initial investigation of using GraphAssembler in JSCallReducer. This CL ports two simple reductions (ReduceMathUnary, ReduceMathBinary) as well as a slightly more involved reduction with branching control flow (ReduceStringPrototypeSubstring). The graph assembler abstracts away the details of maintaining effect and control edges. Resulting code ends up looking very similar to CSA. Newly introduced: - Typing through TNode. - IfBuilder1 for nicer if-then-else sequences that return exactly 1 value. Future CLs will add more convenience builders that follow this pattern. - Many small readability improvements through helper functions. Bug: v8:9972 Change-Id: Iaa186b76c006e07c8d69a74f340a4912577a32a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1914204 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65095}
-
- 20 Nov, 2019 1 commit
-
-
Jakob Gruber authored
Bug: v8:9972 Change-Id: Ia85520eea8d3bcadc2573c16bf2778b1c3ff0c5a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1926028 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65061}
-
- 19 Nov, 2019 1 commit
-
-
Jakob Gruber authored
Drive-by: For more flexibility (e.g. for future IsNull methods), remove 'Constant' from names in the list of constants. Bug: v8:9972 Change-Id: I66ec64c30cb397641d77cd26b514e8ac52763e16 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924348 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#65030}
-
- 07 Nov, 2019 1 commit
-
-
Santiago Aboy Solanes authored
Since the turbo_decompression_elimination flag is removed, there are several methods in machine-type.h that get simplified, e.g TypeCompressedTaggedPointer() can be replaced by just "TaggedPointer()". Also Removing the creation of Change to/from Compressed nodes. Removing these Change nodes' logic is left to a follow-up CL. Bug: v8:7703 Change-Id: Iff1f9aa8361189cf781a26317fd342b942fd5aa4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897537 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#64834}
-
- 05 Nov, 2019 1 commit
-
-
Georgia Kouveli authored
Change-Id: Ie51d9d88fd1c13048557687fcf1a76435f776b9a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1856009Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#64767}
-
- 29 Oct, 2019 1 commit
-
-
Ross McIlroy authored
Inlines UpdateEffectControlWith and AddClonedNode in GraphAssembler to address a regression in some benchmarks caused by Add the ability for GraphAssembler to update basic blocks. BUG=chromium:1018661,v8:9684 Change-Id: I05513c13305465310552448192e0474f5aaa4a20 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1886917 Auto-Submit: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#64615}
-