- 18 Jun, 2018 1 commit
-
-
Georg Neis authored
This adds an overload of JSGraph::Constant that takes an ObjectReference rather than a Handle<Object>. ObjectReference is a new superclass of HeapReference. Also several refactorings and renaming, e.g.: - Rename HeapReference to HeapObjectRef. - Rename ContextHeapReference to ContextRef. - ... - Rename HeapReferenceType to HeapObjectType. Bug: v8:7790 Change-Id: Id3e567cbaf7c326189b99b2fd4ced6bff02f9640 Reviewed-on: https://chromium-review.googlesource.com/1104337Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#53797}
-
- 07 May, 2018 1 commit
-
-
Ben L. Titzer authored
In preparation for cleaning up PipelineData to use a MachineGraph where appropriate, move the dead node up to MachineGraph. R=ahaas@chromium.org Bug: v8:7721 Change-Id: I3f9d456aef7cf4d80adbc93ae938636ffcc3712d Reviewed-on: https://chromium-review.googlesource.com/1046828 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#53037}
-
- 04 May, 2018 1 commit
-
-
Ben L. Titzer authored
This CL factors the parts of the JSGraph that only depend on the machine part of JSGraph into a separate base class, MachineGraph. This helps separate the two layers and also allows the MachineGraph to be constructed without an Isolate, which is needed for fully asynchronous compilation, a goal for WASM. R=mstarzinger@chromium.org CC=jarin@chromium.org, mvstanton@chromium.org BUG=v8:7721 Change-Id: Ie8bc3de40159332645dcb3cadcee581e1bf9830a Reviewed-on: https://chromium-review.googlesource.com/1043746Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52990}
-
- 02 Feb, 2018 1 commit
-
-
jgruber authored
This check verifies that all .h files in the src/ directory have an include guard of the form #ifndef V8_PATH_TO_FILE_H_ #define V8_PATH_TO_FILE_H_ // ... #endif // V8_PATH_TO_FILE_H_ The check can be skipped with a magic comment: // PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I0a7b96abec289ad60f64ba8418f1892a6969596d Reviewed-on: https://chromium-review.googlesource.com/897487Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#51079}
-
- 04 Jan, 2018 2 commits
-
-
Tobias Tebbi authored
DeadValue was a constant node of type None. This is unsound in the presence of re-scheduling. This CL adds a value input to DeadValue, which preserves the dependency on the original node of type None. This reland addresses the bug that the EffectControlLinearizer could destroy dependencies of DeadValue by attaching DeadValue nodes to the effect chain in the EffectControlLinearizer. Bug: chromium:796041 chromium:798938 Change-Id: If47b54a7986d257eb63b437f855769b503679ff5 Reviewed-on: https://chromium-review.googlesource.com/850392Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#50360}
-
Tobias Tebbi authored
Revert "[turbofan] add value input to DeadValue" and "[turbofan] add regression test for chromium:796041" This reverts https://chromium-review.googlesource.com/c/v8/v8/+/848995 and https://chromium-review.googlesource.com/c/v8/v8/+/847011 Bug: chromium:798938 Change-Id: I4be8e5bca77037a278fd9882f0d76de1ae12c23f TBR: jarin@chromium.org Reviewed-on: https://chromium-review.googlesource.com/849995Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#50356}
-
- 03 Jan, 2018 1 commit
-
-
Tobias Tebbi authored
DeadValue was a constant node of type None. This is unsound in the presence of re-scheduling. This CL adds a value input to DeadValue, which preserves the dependency on the original node of type None. Bug: chromium:796041 Change-Id: I3ac459bf661fb78c56552e8201aa18a7dbc4d182 Reviewed-on: https://chromium-review.googlesource.com/847011 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50340}
-
- 16 Nov, 2017 1 commit
-
-
Tobias Tebbi authored
Reland of https://chromium-review.googlesource.com/c/v8/v8/+/727893 The crashes should be fixed by https://chromium-review.googlesource.com/c/v8/v8/+/763531 Original change's description: > Revert "Reland^5 "[turbofan] eagerly prune None types and deadness from the graph"" > > This reverts commit ac0661b3. > > Reason for revert: Clusterfuzz unhappy: chromium:783019 chromium:783035 > > Original change's description: > > Reland^5 "[turbofan] eagerly prune None types and deadness from the graph" > > > > This gives up on earlier attempts to interpret DeadValue as a signal of > > unreachable code. This does not work because free-floating dead value > > nodes, and even pure branch nodes that use them, can get scheduled so > > early that they get reachable. Instead, we now eagerly remove branches > > that use DeadValue in DeadCodeElimination and replace DeadValue inputs > > to value phi nodes with dummy values. > > > > Reland of https://chromium-review.googlesource.com/715716 > > > > Bug: chromium:741225 chromium:776256 > > Change-Id: I251efd507c967d4a8882ad8fd2fd96c4185781fe > > Reviewed-on: https://chromium-review.googlesource.com/727893 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#49188} > > TBR=jarin@chromium.org,tebbi@chromium.org > > Bug: chromium:741225 chromium:776256 chromium:783019 chromium:783035 > Change-Id: I6a8fa3a08ce2824a858ae01817688e63ed1f442e > Reviewed-on: https://chromium-review.googlesource.com/758770 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49262} TBR=jarin@chromium.org,tebbi@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:741225 chromium:776256 chromium:783019 chromium:783035 Change-Id: I6c02b4beb02997ec34015ed2f6791a93c70f5e36 Reviewed-on: https://chromium-review.googlesource.com/772150 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#49429}
-
- 14 Nov, 2017 1 commit
-
-
Michael Stanton authored
This reverts commit f010b28f. Reason for revert: Introduces a clusterfuzz issue and CAnary crash Original change's description: > [TurboFan] Diagnostic code to track down bug in representation selection > > We need to characterize the types of dead (IrOpcode::kDead) nodes > introduced in compilation phases prior to representation selection. > Normally, a dead node isn't expected at the start of this phase. The > question is, which phase introduced the dead node and failed to > deal with it properly? > > Bug: chromium:780658 > Change-Id: Ief5b45480bb7d704a2d09dafd60b5d389e0fd42e > Reviewed-on: https://chromium-review.googlesource.com/765968 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49328} TBR=mvstanton@chromium.org,mstarzinger@chromium.org Change-Id: I5d628eb1de630ce4a353b6ef0f80fd74ad740f17 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:780658 Reviewed-on: https://chromium-review.googlesource.com/768747Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#49347}
-
- 13 Nov, 2017 1 commit
-
-
Mike Stanton authored
We need to characterize the types of dead (IrOpcode::kDead) nodes introduced in compilation phases prior to representation selection. Normally, a dead node isn't expected at the start of this phase. The question is, which phase introduced the dead node and failed to deal with it properly? Bug: chromium:780658 Change-Id: Ief5b45480bb7d704a2d09dafd60b5d389e0fd42e Reviewed-on: https://chromium-review.googlesource.com/765968Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#49328}
-
- 09 Nov, 2017 1 commit
-
-
Tobias Tebbi authored
This reverts commit ac0661b3. Reason for revert: Clusterfuzz unhappy: chromium:783019 chromium:783035 Original change's description: > Reland^5 "[turbofan] eagerly prune None types and deadness from the graph" > > This gives up on earlier attempts to interpret DeadValue as a signal of > unreachable code. This does not work because free-floating dead value > nodes, and even pure branch nodes that use them, can get scheduled so > early that they get reachable. Instead, we now eagerly remove branches > that use DeadValue in DeadCodeElimination and replace DeadValue inputs > to value phi nodes with dummy values. > > Reland of https://chromium-review.googlesource.com/715716 > > Bug: chromium:741225 chromium:776256 > Change-Id: I251efd507c967d4a8882ad8fd2fd96c4185781fe > Reviewed-on: https://chromium-review.googlesource.com/727893 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49188} TBR=jarin@chromium.org,tebbi@chromium.org Bug: chromium:741225 chromium:776256 chromium:783019 chromium:783035 Change-Id: I6a8fa3a08ce2824a858ae01817688e63ed1f442e Reviewed-on: https://chromium-review.googlesource.com/758770Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#49262}
-
- 07 Nov, 2017 1 commit
-
-
Tobias Tebbi authored
This gives up on earlier attempts to interpret DeadValue as a signal of unreachable code. This does not work because free-floating dead value nodes, and even pure branch nodes that use them, can get scheduled so early that they get reachable. Instead, we now eagerly remove branches that use DeadValue in DeadCodeElimination and replace DeadValue inputs to value phi nodes with dummy values. Reland of https://chromium-review.googlesource.com/715716 Bug: chromium:741225 chromium:776256 Change-Id: I251efd507c967d4a8882ad8fd2fd96c4185781fe Reviewed-on: https://chromium-review.googlesource.com/727893 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#49188}
-
- 19 Oct, 2017 1 commit
-
-
Tobias Tebbi authored
This revert is manual, but almost completely automatic. It was just blocked by a single-line irrelevant refactoring change. This reverts commit 1cee0e01. Reason for revert: chromium:776256 Original change's description: > Reland^4 "[turbofan] eagerly prune None types and deadness from the graph" > > This fixes https://bugs.chromium.org/p/chromium/issues/detail?id=773954. > The issue was that in the EffectControlLinearizer, the effect input of an > {Unreachable} node was not updated, leaving a {Checkpoint} behind. > > This is a reland of 4cf47645 > Original change's description: > > Reland^3 "[turbofan] eagerly prune None types and deadness from the graph" > > > > This fixes the issues > > https://bugs.chromium.org/p/chromium/issues/detail?id=772873 > > and https://bugs.chromium.org/p/chromium/issues/detail?id=772872. > > > > One problem was that mutating an effect node into Unreachable confused > > the LoadElimination sidetables, so I just always create a new node now. > > > > The other problem was that UpdateBlockControl() was executed after > > UpdateEffectPhi() in the lazy case. This reverted the update to the Merge input. > > So now I make sure that UpdateEffectPhi() is always executed last. > > > > This is a reland of 6ddb5e7d > > Original change's description: > > > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" > > > > > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the > > > graph end. This fixes issues with later phases running DeadCodeElimination and > > > introducing new DeadValue nodes when processing uses of Unreachable. > > > > > > This is a reland of 3c4bc27f > > > Original change's description: > > > > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > > > > > > > This is a reland of e1cdda25 > > > > Original change's description: > > > > > [turbofan] eagerly prune None types and deadness from the graph > > > > > > > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > > > > depend on them, we introduce a {DeadValue} node representing an impossible value > > > > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > > > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > > > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > > > > of a node with type {None} as dead. > > > > > > > > > > Bug: chromium:741225 > > > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > > > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > > > Cr-Commit-Position: refs/heads/master@{#48208} > > > > > > > > Bug: chromium:741225 > > > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > > > > Reviewed-on: https://chromium-review.googlesource.com/692034 > > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > > Cr-Commit-Position: refs/heads/master@{#48232} > > > > > > Bug: chromium:741225 > > > Change-Id: I5702ec34856c075717162153adc765774453c45f > > > Reviewed-on: https://chromium-review.googlesource.com/702264 > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > Cr-Commit-Position: refs/heads/master@{#48366} > > > > Bug: chromium:741225 > > Change-Id: I4054a694d2521c2e1f0c4a3ad0f3cf100b5c536f > > Reviewed-on: https://chromium-review.googlesource.com/709214 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48469} > > Bug: chromium:741225 > Change-Id: Id9d4f3a3ae36cb3e38f80edcdba88efa7922ca24 > Reviewed-on: https://chromium-review.googlesource.com/715716 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48660} TBR=jarin@chromium.org,tebbi@chromium.org,bmeurer@chromium.org Bug: chromium:741225 chromium:776256 Change-Id: Iaf2af3cb6dea5fdece43297cb9d987e7decc726d Reviewed-on: https://chromium-review.googlesource.com/727804 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48749}
-
- 18 Oct, 2017 1 commit
-
-
Tobias Tebbi authored
This fixes https://bugs.chromium.org/p/chromium/issues/detail?id=773954. The issue was that in the EffectControlLinearizer, the effect input of an {Unreachable} node was not updated, leaving a {Checkpoint} behind. This is a reland of 4cf47645 Original change's description: > Reland^3 "[turbofan] eagerly prune None types and deadness from the graph" > > This fixes the issues > https://bugs.chromium.org/p/chromium/issues/detail?id=772873 > and https://bugs.chromium.org/p/chromium/issues/detail?id=772872. > > One problem was that mutating an effect node into Unreachable confused > the LoadElimination sidetables, so I just always create a new node now. > > The other problem was that UpdateBlockControl() was executed after > UpdateEffectPhi() in the lazy case. This reverted the update to the Merge input. > So now I make sure that UpdateEffectPhi() is always executed last. > > This is a reland of 6ddb5e7d > Original change's description: > > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" > > > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the > > graph end. This fixes issues with later phases running DeadCodeElimination and > > introducing new DeadValue nodes when processing uses of Unreachable. > > > > This is a reland of 3c4bc27f > > Original change's description: > > > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > > > > > This is a reland of e1cdda25 > > > Original change's description: > > > > [turbofan] eagerly prune None types and deadness from the graph > > > > > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > > > depend on them, we introduce a {DeadValue} node representing an impossible value > > > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > > > of a node with type {None} as dead. > > > > > > > > Bug: chromium:741225 > > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > > Cr-Commit-Position: refs/heads/master@{#48208} > > > > > > Bug: chromium:741225 > > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > > > Reviewed-on: https://chromium-review.googlesource.com/692034 > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > Cr-Commit-Position: refs/heads/master@{#48232} > > > > Bug: chromium:741225 > > Change-Id: I5702ec34856c075717162153adc765774453c45f > > Reviewed-on: https://chromium-review.googlesource.com/702264 > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48366} > > Bug: chromium:741225 > Change-Id: I4054a694d2521c2e1f0c4a3ad0f3cf100b5c536f > Reviewed-on: https://chromium-review.googlesource.com/709214 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48469} Bug: chromium:741225 Change-Id: Id9d4f3a3ae36cb3e38f80edcdba88efa7922ca24 Reviewed-on: https://chromium-review.googlesource.com/715716Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48660}
-
- 13 Oct, 2017 1 commit
-
-
Georgia Kouveli authored
This is part of JSSP removal for arm64. The padding is needed so that the extra arguments, which are pushed separately from the rest of the arguments, will take up an even number of slots, to avoid copying the rest of the arguments one slot down. Bug: v8:6644 Change-Id: I00a8730c375e4b4cc8fa0c8b6372751f92754466 Reviewed-on: https://chromium-review.googlesource.com/713255 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#48547}
-
- 12 Oct, 2017 1 commit
-
-
Benedikt Meurer authored
This reverts commit 4cf47645. Reason for revert: Broken effect chains detected by Clusterfuzz. Playing it safe for the 63 branch. Original change's description: > Reland^3 "[turbofan] eagerly prune None types and deadness from the graph" > > This fixes the issues > https://bugs.chromium.org/p/chromium/issues/detail?id=772873 > and https://bugs.chromium.org/p/chromium/issues/detail?id=772872. > > One problem was that mutating an effect node into Unreachable confused > the LoadElimination sidetables, so I just always create a new node now. > > The other problem was that UpdateBlockControl() was executed after > UpdateEffectPhi() in the lazy case. This reverted the update to the Merge input. > So now I make sure that UpdateEffectPhi() is always executed last. > > This is a reland of 6ddb5e7d > Original change's description: > > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" > > > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the > > graph end. This fixes issues with later phases running DeadCodeElimination and > > introducing new DeadValue nodes when processing uses of Unreachable. > > > > This is a reland of 3c4bc27f > > Original change's description: > > > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > > > > > This is a reland of e1cdda25 > > > Original change's description: > > > > [turbofan] eagerly prune None types and deadness from the graph > > > > > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > > > depend on them, we introduce a {DeadValue} node representing an impossible value > > > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > > > of a node with type {None} as dead. > > > > > > > > Bug: chromium:741225 > > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > > Cr-Commit-Position: refs/heads/master@{#48208} > > > > > > Bug: chromium:741225 > > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > > > Reviewed-on: https://chromium-review.googlesource.com/692034 > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > Cr-Commit-Position: refs/heads/master@{#48232} > > > > Bug: chromium:741225 > > Change-Id: I5702ec34856c075717162153adc765774453c45f > > Reviewed-on: https://chromium-review.googlesource.com/702264 > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48366} > > Bug: chromium:741225 > Change-Id: I4054a694d2521c2e1f0c4a3ad0f3cf100b5c536f > Reviewed-on: https://chromium-review.googlesource.com/709214 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48469} TBR=jarin@chromium.org,tebbi@chromium.org Change-Id: Icf6a6af4feaafd4bde28cb7b996735ff91bb3810 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:741225 Reviewed-on: https://chromium-review.googlesource.com/715096Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48482}
-
- 11 Oct, 2017 1 commit
-
-
Tobias Tebbi authored
This fixes the issues https://bugs.chromium.org/p/chromium/issues/detail?id=772873 and https://bugs.chromium.org/p/chromium/issues/detail?id=772872. One problem was that mutating an effect node into Unreachable confused the LoadElimination sidetables, so I just always create a new node now. The other problem was that UpdateBlockControl() was executed after UpdateEffectPhi() in the lazy case. This reverted the update to the Merge input. So now I make sure that UpdateEffectPhi() is always executed last. This is a reland of 6ddb5e7d Original change's description: > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the > graph end. This fixes issues with later phases running DeadCodeElimination and > introducing new DeadValue nodes when processing uses of Unreachable. > > This is a reland of 3c4bc27f > Original change's description: > > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > > > This is a reland of e1cdda25 > > Original change's description: > > > [turbofan] eagerly prune None types and deadness from the graph > > > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > > depend on them, we introduce a {DeadValue} node representing an impossible value > > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > > of a node with type {None} as dead. > > > > > > Bug: chromium:741225 > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > Cr-Commit-Position: refs/heads/master@{#48208} > > > > Bug: chromium:741225 > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > > Reviewed-on: https://chromium-review.googlesource.com/692034 > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48232} > > Bug: chromium:741225 > Change-Id: I5702ec34856c075717162153adc765774453c45f > Reviewed-on: https://chromium-review.googlesource.com/702264 > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48366} Bug: chromium:741225 Change-Id: I4054a694d2521c2e1f0c4a3ad0f3cf100b5c536f Reviewed-on: https://chromium-review.googlesource.com/709214 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48469}
-
- 09 Oct, 2017 2 commits
-
-
Tobias Tebbi authored
This reverts commit 6ddb5e7d. Reason for revert: chromium:772873 chromium:772872 Original change's description: > Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" > > Now, the EffectControlLinearizer connects all occurrences of Unreachable to the > graph end. This fixes issues with later phases running DeadCodeElimination and > introducing new DeadValue nodes when processing uses of Unreachable. > > This is a reland of 3c4bc27f > Original change's description: > > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > > > This is a reland of e1cdda25 > > Original change's description: > > > [turbofan] eagerly prune None types and deadness from the graph > > > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > > depend on them, we introduce a {DeadValue} node representing an impossible value > > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > > of a node with type {None} as dead. > > > > > > Bug: chromium:741225 > > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > > Cr-Commit-Position: refs/heads/master@{#48208} > > > > Bug: chromium:741225 > > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > > Reviewed-on: https://chromium-review.googlesource.com/692034 > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48232} > > Bug: chromium:741225 > Change-Id: I5702ec34856c075717162153adc765774453c45f > Reviewed-on: https://chromium-review.googlesource.com/702264 > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48366} TBR=jarin@chromium.org,tebbi@chromium.org Change-Id: Ib0f59b8463681abf6a9158112515aefae3c76b5f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:741225 Reviewed-on: https://chromium-review.googlesource.com/707275Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48407}
-
Tobias Tebbi authored
Now, the EffectControlLinearizer connects all occurrences of Unreachable to the graph end. This fixes issues with later phases running DeadCodeElimination and introducing new DeadValue nodes when processing uses of Unreachable. This is a reland of 3c4bc27f Original change's description: > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > This is a reland of e1cdda25 > Original change's description: > > [turbofan] eagerly prune None types and deadness from the graph > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > depend on them, we introduce a {DeadValue} node representing an impossible value > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > of a node with type {None} as dead. > > > > Bug: chromium:741225 > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48208} > > Bug: chromium:741225 > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > Reviewed-on: https://chromium-review.googlesource.com/692034 > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48232} Bug: chromium:741225 Change-Id: I5702ec34856c075717162153adc765774453c45f Reviewed-on: https://chromium-review.googlesource.com/702264Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48366}
-
- 30 Sep, 2017 1 commit
-
-
Tobias Tebbi authored
This reverts commit 3c4bc27f. Reason for revert: https://bugs.chromium.org/p/chromium/issues/detail?id=770257 Original change's description: > Reland "[turbofan] eagerly prune None types and deadness from the graph" > > This is a reland of e1cdda25 > Original change's description: > > [turbofan] eagerly prune None types and deadness from the graph > > > > In addition to using the {Dead} node to prune dead control nodes and nodes that > > depend on them, we introduce a {DeadValue} node representing an impossible value > > that can occur at any position in the graph. The extended {DeadCodeElimination} > > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > > the effect chain when possible. The remaining uses of {DeadValue} are handled > > in {EffectControlLinearizer}, where we always have access to the effect chain. > > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > > of a node with type {None} as dead. > > > > Bug: chromium:741225 > > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > > Reviewed-on: https://chromium-review.googlesource.com/641250 > > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#48208} > > Bug: chromium:741225 > Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 > Reviewed-on: https://chromium-review.googlesource.com/692034 > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48232} TBR=jarin@chromium.org,tebbi@chromium.org Change-Id: Ied8da411a9c8cbe4ed2e1d3e98a76162c2834c97 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:741225 chromium:770257 Reviewed-on: https://chromium-review.googlesource.com/693235Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48246}
-
- 29 Sep, 2017 1 commit
-
-
Tobias Tebbi authored
This is a reland of e1cdda25 Original change's description: > [turbofan] eagerly prune None types and deadness from the graph > > In addition to using the {Dead} node to prune dead control nodes and nodes that > depend on them, we introduce a {DeadValue} node representing an impossible value > that can occur at any position in the graph. The extended {DeadCodeElimination} > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > the effect chain when possible. The remaining uses of {DeadValue} are handled > in {EffectControlLinearizer}, where we always have access to the effect chain. > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > of a node with type {None} as dead. > > Bug: chromium:741225 > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > Reviewed-on: https://chromium-review.googlesource.com/641250 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48208} Bug: chromium:741225 Change-Id: I21316913dae02864f7a6d7c9269405a79f054138 Reviewed-on: https://chromium-review.googlesource.com/692034Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48232}
-
- 28 Sep, 2017 2 commits
-
-
Clemens Hammacher authored
This reverts commit e1cdda25. Reason for revert: Fails 'constructor-inlining' on GC-Stress bot: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/15270 Original change's description: > [turbofan] eagerly prune None types and deadness from the graph > > In addition to using the {Dead} node to prune dead control nodes and nodes that > depend on them, we introduce a {DeadValue} node representing an impossible value > that can occur at any position in the graph. The extended {DeadCodeElimination} > prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into > the effect chain when possible. The remaining uses of {DeadValue} are handled > in {EffectControlLinearizer}, where we always have access to the effect chain. > In addition to explicitly introduced {DeadValue} nodes, we consider any value use > of a node with type {None} as dead. > > Bug: chromium:741225 > Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 > Reviewed-on: https://chromium-review.googlesource.com/641250 > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48208} TBR=jarin@chromium.org,tebbi@chromium.org Change-Id: I9c175d47e2ee4b11a36ed90421202f2354610398 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:741225 Reviewed-on: https://chromium-review.googlesource.com/690080Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48210}
-
Tobias Tebbi authored
In addition to using the {Dead} node to prune dead control nodes and nodes that depend on them, we introduce a {DeadValue} node representing an impossible value that can occur at any position in the graph. The extended {DeadCodeElimination} prunes {DeadValue} and its uses, inserting a crashing {Unreachable} node into the effect chain when possible. The remaining uses of {DeadValue} are handled in {EffectControlLinearizer}, where we always have access to the effect chain. In addition to explicitly introduced {DeadValue} nodes, we consider any value use of a node with type {None} as dead. Bug: chromium:741225 Change-Id: Icc4b636d1d018c452ba1a2fa7cd3e00e522f1655 Reviewed-on: https://chromium-review.googlesource.com/641250 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48208}
-
- 11 Jul, 2017 1 commit
-
-
Sathya Gunasekaran authored
This patch changes the backing store of slow properties to be a new instance type called PropertyArray. Currently the only difference between this and a FixedArray is the map. A future patch will change the length property to store the hash code. Bug: v8:5717, v8:6404 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Iaebc98f42e6d93c1392772e6f837787beb64afec Reviewed-on: https://chromium-review.googlesource.com/539028Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#46569}
-
- 10 Jul, 2017 2 commits
-
-
Benedikt Meurer authored
This improves the general Array constructor call performance (w/o usable AllocationSite feedback) in TurboFan by ~2x, i.e. for example invoking the Array constructor like this var a = Array.call(undefined, n); instead of var a = Array(n); such that the CallIC doesn't know that it's eventually calling the Array constructor. It also thus changes the single argument Array constructor to always return holey arrays. Previously the single argument case for the Array constructor was somehow trying to dynamically detect 0 and in that case returned a packed array instead of a holey one. That adds quite a lot of churn, and doesn't seem to be very useful, especially since this might lead to unnecessary feedback pollution later. R=mvstanton@chromium.org Bug: v8:2229, v8:5269, v8:6399 Change-Id: I3d7cb9bd975ec0e491e3cdbcf1230185cfd1e3de Reviewed-on: https://chromium-review.googlesource.com/565721Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46538}
-
Jaroslav Sevcik authored
This introduces a new builtin (MapLookupHashIndex) and uses it in Turbofan to compute Map.p.get and Map.p.has. I have also refactored the existing CSA builtins for Map.p.get and Map.p.has to use the new builtin under the hood. The code for the lookup has been also improved. - Specialized lookups for smis, strings, heap numbers and everything else. - the advantage is that we can use fast equalities for the lookup. - strings can likely be optimized further if we care about the internalized string fast case. - Instead of a call to runtime to get the hash code, we now call C directly. In the Turbofan implementation itself, there are no special optimizations yet. The next step is to teach load elimination to reuse the indexes from previous calls of MapLookupHashIndex. BUG=v8:6410 Change-Id: I0b1a70493eb031d444e51002f6b2cc1f30ea2b68 Reviewed-on: https://chromium-review.googlesource.com/560169Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#46510}
-
- 04 May, 2017 1 commit
-
-
jarin authored
This saves about 5% of memory and node count consumed by graph building on the TypeScript benchmark. High watermark goes down by 3-4%. BUG=v8:5267 Review-Url: https://codereview.chromium.org/2829093002 Cr-Commit-Position: refs/heads/master@{#45113}
-
- 06 Feb, 2017 1 commit
-
-
mvstanton authored
TypeFeedbackVectors are strongly rooted by a closure. However, in modern JavaScript closures are created and abandoned more freely. An important closure may not be present in the root-set at time of garbage collection, even though we've cached optimized code and use it regularly. For example, consider leaf functions in an event dispatching system. They may well be "hot," but tragically non-present when we collect the heap. Until now, we've relied on a weak root to cache the feedback vector in this case. Since there is no way to signal intent or relative importance, this weak root is as susceptible to clearing as any other weak root at garbage collection time. Meanwhile, the feedback vector has become more important. All of our ICs store their data there. Literal and regex boilerplates are stored there. If we lose the vector, then we not only lose optimized code built from it, we also lose the very feedback which allowed us to create that optimized code. Therefore it's vital to express that dependency through the root set. This CL does this by creating a strong link to a feedback vector at the instantiation site of the function closure. This instantiation site is in the code and feedback vector of the outer closure. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2674593003 Cr-Commit-Position: refs/heads/master@{#42953}
-
- 30 Jan, 2017 1 commit
-
-
mvstanton authored
They have the same lifetime. It's a match! Both structures are native context dependent and dealt with (creation, clearing, gathering feedback) at the same time. By treating the spaces used for literal boilerplates as feedback vector slots, we no longer have to keep track of the materialized literal count elsewhere. A follow-on CL removes even more parser infrastructure related to this count. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2655853010 Cr-Commit-Position: refs/heads/master@{#42771}
-
- 19 Jan, 2017 3 commits
-
-
mvstanton authored
GC performance issues need to be addressed first. TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642743002 Cr-Original-Commit-Position: refs/heads/master@{#42495} Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567 Review-Url: https://codereview.chromium.org/2642743002 Cr-Commit-Position: refs/heads/master@{#42517}
-
machenbach authored
Revert of Revert [TypeFeedbackVector] Root literal arrays in function literal slots (patchset #2 id:20001 of https://codereview.chromium.org/2642743002/ ) Reason for revert: Breaks nosnap: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/13802 Original issue's description: > Revert [TypeFeedbackVector] Root literal arrays in function literal slots > > GC performance issues need to be addressed first. > > TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2642743002 > Cr-Commit-Position: refs/heads/master@{#42495} > Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567 TBR=mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642933003 Cr-Commit-Position: refs/heads/master@{#42496}
-
mvstanton authored
GC performance issues need to be addressed first. TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642743002 Cr-Commit-Position: refs/heads/master@{#42495}
-
- 12 Jan, 2017 3 commits
-
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2620753003 Cr-Original-Commit-Position: refs/heads/master@{#42258} Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6 Review-Url: https://codereview.chromium.org/2620753003 Cr-Commit-Position: refs/heads/master@{#42264}
-
machenbach authored
Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #7 id:120001 of https://codereview.chromium.org/2620753003/ ) Reason for revert: gc stress: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/8105 also on mac Original issue's description: > [TypeFeedbackVector] Root literal arrays in function literals slots > > Literal arrays and feedback vectors for a function can be garbage > collected if we don't have a rooted closure for the function, which > happens often. It's expensive to come back from this (recreating > boilerplates and gathering feedback again), and the cost is > disproportionate if the function was inlined into optimized code. > > To guard against losing these arrays when we need them, we'll now > create literal arrays when creating the feedback vector for the outer > closure, and root them strongly in that vector. > > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2620753003 > Cr-Commit-Position: refs/heads/master@{#42258} > Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6 TBR=bmeurer@chromium.org,mstarzinger@chromium.org,yangguo@chromium.org,mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2626863004 Cr-Commit-Position: refs/heads/master@{#42260}
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2620753003 Cr-Commit-Position: refs/heads/master@{#42258}
-
- 30 Dec, 2016 1 commit
-
-
mvstanton authored
R=epertoso@chromium.org BUG=5428 Review-Url: https://codereview.chromium.org/2607243002 Cr-Commit-Position: refs/heads/master@{#42003}
-
- 11 Nov, 2016 1 commit
-
-
bmeurer authored
This adds a new ExternalPointer type, which is an Internal type that is used for ExternalReferences and other pointer values, like the pointers into the asm.js heap. It also adds a PointerConstant operator, which we use to represents these raw constants (we can probably remove that particular operator again once WebAssembly ships with the validator). R=mvstanton@chromium.org BUG=v8:5267,v8:5270 Review-Url: https://codereview.chromium.org/2494753003 Cr-Commit-Position: refs/heads/master@{#40923}
-
- 17 Oct, 2016 1 commit
-
-
jochen authored
R=machenbach@chromium.org,titzer@chromium.org,bmeurer@chromium.org,jgruber@chromium.org BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg,v8_mac_dbg;master.tryserver.chromium.android:android_arm64_dbg_recipe Review-Url: https://codereview.chromium.org/2416243002 Cr-Commit-Position: refs/heads/master@{#40350}
-
- 19 Aug, 2016 1 commit
-
-
jgruber authored
BUG= Review-Url: https://codereview.chromium.org/2259883002 Cr-Commit-Position: refs/heads/master@{#38758}
-
- 08 Aug, 2016 1 commit
-
-
bmeurer authored
Introduce a dedicated MaybeGrowFastElements simplified operator, which tries to grow a fast elements backing store for a given element that should be added to an array/object. Use that to lower a growing keyed store to a sequence of 1) check index is a valid array index, 2) check stored value, 3) maybe grow elements backing store (and deoptimize if it would normalize), and 4) store the actual element. The actual growing is done by two dedicated GrowFastDoubleElements and GrowFastSmiOrObjectElements builtins, which are very similar to the GrowArrayElementsStub that is used by Crankshaft. Drive-by-fix: Turn CopyFixedArray into CopyFastSmiOrObjectElements builtin, similar to the new growing builtins, so we don't need to inline the store+write barrier for the elements into all optimized code objects anymore. Also fix a bug in the OperationTyper for NumberSilenceNaN, which was triggered by this change. BUG=v8:5272 Review-Url: https://codereview.chromium.org/2227493002 Cr-Commit-Position: refs/heads/master@{#38418}
-