1. 30 Nov, 2018 1 commit
  2. 19 Sep, 2018 1 commit
  3. 17 Sep, 2018 1 commit
  4. 17 Aug, 2018 1 commit
  5. 06 Jun, 2018 1 commit
  6. 30 Apr, 2018 1 commit
    • Jaroslav Sevcik's avatar
      Replace array index masking with the poisoning approach. · f53dfd93
      Jaroslav Sevcik authored
      The idea is to mark all the branches and loads participating in array
      bounds checks, and let them contribute-to/use the poisoning register.
      In the code, the marks for array indexing operations now contain
      "Critical" in their name. By default (--untrusted-code-mitigations),
      we only instrument the "critical" operations with poisoning.
      
      With that in place, we also remove the array masking approach based
      on arithmetic.
      
      Since we do not propagate the poison through function calls,
      we introduce a node for poisoning an index that is passed through
      function call - the typical example is the bounds-checked index
      that is passed to the CharCodeAt builtin.
      
      Most of the code in this CL is threads through the three levels of
      protection (safe, critical, unsafe) for loads, branches and flags.
      
      Bug: chromium:798964
      
      Change-Id: Ief68e2329528277b3ba9156115b2a6dcc540d52b
      Reviewed-on: https://chromium-review.googlesource.com/995413
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52883}
      f53dfd93
  7. 28 Apr, 2018 1 commit
  8. 06 Apr, 2018 1 commit
  9. 27 Mar, 2018 1 commit
    • Tobias Tebbi's avatar
      [turbofan] unify interpreter and JIT speculation poisoning · 1ef6c437
      Tobias Tebbi authored
      This CL changes the poisoning in the interpreter to use the
      infrastructure used in the JIT.
      
      This does not change the original flag semantics:
      
      --branch-load-poisoning enables JIT mitigations as before.
      
      --untrusted-code-mitigation enables the interpreter mitigations
        (now realized using the compiler back-end), but does not enable
        the back-end based mitigations for the Javascript JIT. So in effect
        --untrusted-code-mitigation makes the CSA pipeline for bytecode handlers
        use the same mechanics (including changed register allocation) that
        --branch-load-poisoning enables for the JIT.
      
      Bug: chromium:798964
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: If7f6852ae44e32e6e0ad508e9237f24dec7e5b27
      Reviewed-on: https://chromium-review.googlesource.com/928881Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52243}
      1ef6c437
  10. 21 Mar, 2018 1 commit
  11. 05 Mar, 2018 3 commits
  12. 02 Mar, 2018 3 commits
  13. 09 Feb, 2018 1 commit
  14. 02 Feb, 2018 1 commit
  15. 01 Feb, 2018 1 commit
  16. 24 Jan, 2018 1 commit
  17. 04 Jan, 2018 2 commits
  18. 03 Jan, 2018 1 commit
  19. 11 Dec, 2017 1 commit
  20. 16 Nov, 2017 1 commit
    • Tobias Tebbi's avatar
      Reland^6 "[turbofan] eagerly prune None types and deadness from the graph" · 19ac10e5
      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: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49429}
      19ac10e5
  21. 09 Nov, 2017 1 commit
    • Tobias Tebbi's avatar
      Revert "Reland^5 "[turbofan] eagerly prune None types and deadness from the graph"" · c899637d
      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: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49262}
      c899637d
  22. 07 Nov, 2017 1 commit
  23. 20 Oct, 2017 1 commit
  24. 19 Oct, 2017 3 commits
    • Jaroslav Sevcik's avatar
      Revert "[turbofan] Load elimination prunes control flow based on instance type." · 8f09a751
      Jaroslav Sevcik authored
      This reverts commit 71bcc1d9.
      
      Reason for revert: Regresses Octane/Box2D, among other things.
      
      Original change's description:
      > [turbofan] Load elimination prunes control flow based on instance type.
      > 
      > Changes:
      > - introduce the notion of unreachable abstract states.
      > 
      > - reconnect unreachables states to runtime abort in effect phis (so that
      >   the merged states are not polluted by unreachable branches while
      >   preserving SSA).
      > 
      > - mark states with failed map checks, unreachable map guars as unreachable.
      > 
      > - add instance type to AbstractMaps, only invalidate instance type on
      >   mismatched effect merges.
      > 
      > 
      > This results in 2-3% improvement on ARES/ML steady state.
      > 
      > Bug: v8:6396
      > Change-Id: I35b0d4482fa400ba7ee9a754f8ef1b2663ebc7dc
      > Reviewed-on: https://chromium-review.googlesource.com/727761
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#48742}
      
      TBR=jarin@chromium.org,bmeurer@chromium.org
      
      Change-Id: I6302b37dbf5ea781c64815ef1900681531ad7d71
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6396
      Reviewed-on: https://chromium-review.googlesource.com/728440Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48763}
      8f09a751
    • Tobias Tebbi's avatar
      Revert "Reland^4 "[turbofan] eagerly prune None types and deadness from the graph"" · 2bf01995
      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: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48749}
      2bf01995
    • Jaroslav Sevcik's avatar
      [turbofan] Load elimination prunes control flow based on instance type. · 71bcc1d9
      Jaroslav Sevcik authored
      Changes:
      - introduce the notion of unreachable abstract states.
      
      - reconnect unreachables states to runtime abort in effect phis (so that
        the merged states are not polluted by unreachable branches while
        preserving SSA).
      
      - mark states with failed map checks, unreachable map guars as unreachable.
      
      - add instance type to AbstractMaps, only invalidate instance type on
        mismatched effect merges.
      
      
      This results in 2-3% improvement on ARES/ML steady state.
      
      Bug: v8:6396
      Change-Id: I35b0d4482fa400ba7ee9a754f8ef1b2663ebc7dc
      Reviewed-on: https://chromium-review.googlesource.com/727761Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48742}
      71bcc1d9
  25. 18 Oct, 2017 1 commit
    • Tobias Tebbi's avatar
      Reland^4 "[turbofan] eagerly prune None types and deadness from the graph" · 1cee0e01
      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: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48660}
      1cee0e01
  26. 12 Oct, 2017 1 commit
    • Benedikt Meurer's avatar
      Revert "Reland^3 "[turbofan] eagerly prune None types and deadness from the graph"" · e29fd74c
      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: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48482}
      e29fd74c
  27. 11 Oct, 2017 2 commits
    • Tobias Tebbi's avatar
      Reland^3 "[turbofan] eagerly prune None types and deadness from the graph" · 4cf47645
      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: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48469}
      4cf47645
    • Tobias Tebbi's avatar
      [turbofan] avoid constructor inheritance due to compilation issues · 0f1dfae0
      Tobias Tebbi authored
      Constructor inheritance of a templated constructor is causing compilation issues for node.js:
      
      https: //github.com/nodejs/node/pull/15362#issue-257007421
      Change-Id: I7d099ff5a1a2fd5b19c11112ddef8fe824e509f7
      Reviewed-on: https://chromium-review.googlesource.com/707008
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48445}
      0f1dfae0
  28. 09 Oct, 2017 2 commits
    • Tobias Tebbi's avatar
      Revert "Reland^2 "[turbofan] eagerly prune None types and deadness from the graph"" · 738e773b
      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: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48407}
      738e773b
    • Tobias Tebbi's avatar
      Reland^2 "[turbofan] eagerly prune None types and deadness from the graph" · 6ddb5e7d
      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: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48366}
      6ddb5e7d
  29. 30 Sep, 2017 1 commit
    • Tobias Tebbi's avatar
      Revert "Reland "[turbofan] eagerly prune None types and deadness from the graph"" · 4651f644
      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: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48246}
      4651f644
  30. 29 Sep, 2017 1 commit
    • Tobias Tebbi's avatar
      Reland "[turbofan] eagerly prune None types and deadness from the graph" · 3c4bc27f
      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: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48232}
      3c4bc27f
  31. 28 Sep, 2017 1 commit
    • Clemens Hammacher's avatar
      Revert "[turbofan] eagerly prune None types and deadness from the graph" · 324e0a7a
      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: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48210}
      324e0a7a