1. 02 Dec, 2019 1 commit
    • Mike Stanton's avatar
      [TurboFan] Loop variable analysis requires more sensitivity · b8b60750
      Mike Stanton authored
      Loop variable analysis doesn't recognize that the initial type of the
      loop variable phi combined with the increment type may produce a NaN
      result through the addition of two infinities of differing sign.
      
      This leads to unreachable code and a SIGINT crash.
      
      The fix is to consider this case before typing the loop variable phi,
      falling back to more conservative typing if discovered.
      
      R=neis@chromium.org
      
      Bug: chromium:1028863
      Change-Id: Ic4b5189c4c50c5bbe29e46050de630fd0673de9f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1946352
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65291}
      b8b60750
  2. 17 Jul, 2019 1 commit
  3. 17 Sep, 2018 1 commit
  4. 14 Jun, 2018 2 commits
    • Clemens Hammacher's avatar
      Reland "Introduce StdoutStream which prints to Android log or stdout" · 8e2e1257
      Clemens Hammacher authored
      This is a reland of 0909dbe3.
      Added missing V8_EXPORT_PRIVATE to AndroidLogStream.
      
      TBR=mstarzinger@chromium.org
      
      Original change's description:
      > Introduce StdoutStream which prints to Android log or stdout
      >
      > The often used construct {OFStream(stdout)} does not work on Android.
      > This CL introduces an {StdoutStream} which behaves exactly like
      > {OFStream(stdout)} on non-android platforms, and redirects to the
      > Android log on appropriate systems and configurations.
      >
      > R=mstarzinger@chromium.org
      >
      > Bug: v8:7820
      > Change-Id: Ia682fdf6d064e37c605c19b032f5a10b96ac825b
      > Reviewed-on: https://chromium-review.googlesource.com/1088911
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53692}
      
      Bug: v8:7820
      Change-Id: I8164bad78a401dbe4246c9ffcacd050fe511ed58
      Reviewed-on: https://chromium-review.googlesource.com/1100636Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53733}
      8e2e1257
    • Michael Achenbach's avatar
      Revert "Introduce StdoutStream which prints to Android log or stdout" · d2e1620c
      Michael Achenbach authored
      This reverts commit 0909dbe3.
      
      Reason for revert: Blocks roll:
      https://chromium-review.googlesource.com/c/chromium/src/+/1099143
      
      Original change's description:
      > Introduce StdoutStream which prints to Android log or stdout
      > 
      > The often used construct {OFStream(stdout)} does not work on Android.
      > This CL introduces an {StdoutStream} which behaves exactly like
      > {OFStream(stdout)} on non-android platforms, and redirects to the
      > Android log on appropriate systems and configurations.
      > 
      > R=​mstarzinger@chromium.org
      > 
      > Bug: v8:7820
      > Change-Id: Ia682fdf6d064e37c605c19b032f5a10b96ac825b
      > Reviewed-on: https://chromium-review.googlesource.com/1088911
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#53692}
      
      TBR=mstarzinger@chromium.org,jarin@chromium.org,jgruber@chromium.org,clemensh@chromium.org,bmeurer@chromium.org
      
      Change-Id: Iadadd9a0df10dca0fad647138a83db50148e864d
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7820
      Reviewed-on: https://chromium-review.googlesource.com/1100635Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#53725}
      d2e1620c
  5. 13 Jun, 2018 1 commit
  6. 25 Sep, 2017 1 commit
  7. 11 Jul, 2017 1 commit
    • Alexandre Talon's avatar
      [Turbofan] Enable reducers to report their name to make reducer tracing clearer · 7a75da34
      Alexandre Talon authored
      Each reducer now has a virtual reducer_name function, returning its name
      (the name of the class containing this reducer). This gets displayed when
      using the --trace_turbo_reduction flag. Also when using this flags more
      messages are displayed.
      
      Actually when a node is replaced in-place (which is called an update
      of the node), other reducers can still update it right after the
      in-place replacement. When a node is really replaced (not in-place),
      then we stop trying to apply reducers to it before we propagate the
      reduction through the relevant nodes.
      
      Before a message got printed only for the last reduction it went
      through. So in case a node was reduced in-place several times
      in a row, only the last update was printed, or none at all if after
      being reduced in-place it got reduced by being replaced by another
      node: only the non-in-place replacement was showed. 
      
      Now each time an in-place reduction is applied to a node, a message
      gets printed.
      
      Bug: 
      Change-Id: Id0f816fecd44c01d0253966c6decc4861be0c2fa
      Reviewed-on: https://chromium-review.googlesource.com/563365Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Alexandre Talon <alexandret@google.com>
      Cr-Commit-Position: refs/heads/master@{#46552}
      7a75da34
  8. 07 Jul, 2017 1 commit
  9. 19 May, 2017 1 commit
  10. 20 Apr, 2017 1 commit
    • Eric Holk's avatar
      Restrict range for int64_t to immediate conversions · ec772a4f
      Eric Holk authored
      The included test case illustrates the problem. It subtracts (16 << 27)
      from another number. The Machine Operator Reducer would replace the
      shift computation with 0x0000000080000000, and then change the subtract
      to an add of -(0x0000000080000000), which is 0xffffffff80000000.
      The instruction selector would determine that this value could be an
      immediate, because it fits in 32 bits, so it would select the lea
      instruction. Finally, the code generator would detect that the
      immediate was less than 0, flip the sign and replace the add with a
      subtract of 0x80000000. Because the x64 subtract instruction's
      immediate field is 32 bits, the processor would interpret this as
      0xffffffff80000000 instead of an unsigned value.
      
      This change fixes the issue by making the CanBeImmediate check
      explicitly compare against INT_MIN and INT_MAX. We disallow INT_MIN
      as an immediate precisely because we cannot tell 0x0000000080000000
      from 0xffffffff80000000 when truncated to 32 bits.
      
      Bug: chromium:711203
      Change-Id: Ie371b8ea290684a6bb723bae9c693a866f961850
      Reviewed-on: https://chromium-review.googlesource.com/482448
      Commit-Queue: Eric Holk <eholk@chromium.org>
      Reviewed-by: 's avatarMircea Trofin <mtrofin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#44758}
      ec772a4f
  11. 10 Jan, 2017 1 commit
    • leszeks's avatar
      [turbofan] Allow indexed access to node inputs/input_edges · 6873f14b
      leszeks authored
      Node::InputCount() and ::InputAt() have to check for inline/out-of-line
      inputs every time they are called. The compiler doesn't seem to be very
      good at caching the result of this check, meaning that it (and all its
      jumps) would happen for every node access.
      
      Previously we would get around this sometimes, by using Node::inputs(),
      which returned a Node::Inputs iterable over node inputs. However,
      sometimes node access is more convenient using an index, or we also
      want to access the count. This patch adds an index accessor and 'count'
      method to Node::Inputs, and replaces several uses of InputCount and
      InputAt with this accessor.
      
      Review-Url: https://codereview.chromium.org/2617123002
      Cr-Commit-Position: refs/heads/master@{#42179}
      6873f14b
  12. 03 Jan, 2017 2 commits
  13. 12 Jul, 2016 1 commit
  14. 18 Apr, 2016 1 commit
    • jarin's avatar
      [turbofan] Effect linearization after representation inference. · b9e287c6
      jarin authored
      This introduces a compiler pass that schedules the graph and re-wires effect chain according to the schedule. It also connects allocating representation changes to the effect chain, and removes the BeginRegion and EndRegion nodes - they should not be needed anymore because all effectful nodes should be already wired-in.
      
      This is an intermediate CL - the next step is to move lowering of the Change*ToTaggedEffect nodes to StateEffectIntroduction so that we do not have to introduce the effectful versions of nodes.
      
      Review URL: https://codereview.chromium.org/1849603002
      
      Cr-Commit-Position: refs/heads/master@{#35565}
      b9e287c6
  15. 19 Feb, 2016 2 commits
  16. 09 Nov, 2015 1 commit
  17. 28 Sep, 2015 2 commits
  18. 23 Jun, 2015 3 commits
  19. 17 Jun, 2015 1 commit
  20. 12 Jun, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Use appropriate type for NodeId. · c487aba7
      bmeurer authored
      Up until now we used int32_t for NodeId, but that was not ideal because
      negative values are invalid for NodeId and we use it as an array index
      for example in the NodeMarker class, where C++ compilers on x64 have to
      generate code that does proper sign extension for the indices, which is
      completely unnecessary.
      
      R=svenpanne@chromium.org
      
      Review URL: https://codereview.chromium.org/1178403004
      
      Cr-Commit-Position: refs/heads/master@{#28997}
      c487aba7
  21. 11 Jun, 2015 1 commit
  22. 05 Jun, 2015 1 commit
    • mstarzinger's avatar
      [turbofan] Allow ReplaceWithValue to kill control. · 8f4d9a0a
      mstarzinger authored
      This allows any AdvancedReducer to remove exception projections from
      graphs. This is the common case when JS-operators are being replaced
      with pure values. The old NodeProperties::ReplaceWithValue is being
      deprecated in favor of AdvancedReducer::ReplaceWithValue.
      
      R=titzer@chromium.org
      TEST=unittests/AdvancedReducerTest
      
      Review URL: https://codereview.chromium.org/1168693002
      
      Cr-Commit-Position: refs/heads/master@{#28810}
      8f4d9a0a
  23. 12 May, 2015 1 commit
  24. 06 May, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Add support for advanced reducers. · 7b33409b
      bmeurer authored
      An AdvancedReducer is basically a regular Reducer with an editor
      that can perform graph editing operations beyond changing or
      replacing the node that is currently being reduced. The GraphReducer
      is the default implementation of the AdvancedReducer::Editor interface.
      
      The ControlReducerImpl is now just an AdvancedReducer, which
      temporarily requires a Finish method in the reducer to implement
      the dead node trimming until we move that to the GraphReducer
      (which in turn requires that all loops are connected to End).
      
      Review URL: https://codereview.chromium.org/1122423003
      
      Cr-Commit-Position: refs/heads/master@{#28251}
      7b33409b
  25. 26 Jan, 2015 1 commit
  26. 16 Jan, 2015 1 commit
  27. 17 Dec, 2014 1 commit
  28. 28 Nov, 2014 1 commit
  29. 27 Nov, 2014 1 commit
  30. 17 Nov, 2014 1 commit
  31. 14 Nov, 2014 2 commits
  32. 13 Nov, 2014 2 commits