1. 28 May, 2020 1 commit
    • Nico Hartmann's avatar
      Reland "[turbofan] Improve equality on NumberOrOddball" · 120d4333
      Nico Hartmann authored
      This is a reland of 6204768b
      
      The original issue exposed the problem that NumberEqual performs
      implicit conversion of oddballs to numbers, which is incorrect for
      abstract equality comparison (i.e. 0 == null must not be true).
      
      This reland fixes this by applying the following steps:
      * Introduced a new kNumberOrBoolean value for CompareOperationFeedback,
        CompareOperationHint, TypeCheckKind and CheckedTaggedInputMode.
      * In CodeStubAssembler::Equal: Further distinguish between boolean and
        non-boolean oddballs and set feedback accoringly.
      * In JSTypedLowering: Construct [Speculative]NumberEqual operator with
        CompareOperationHint::kNumberOrBoolean, when this feedback is present.
        JSOperatorBuilder and operator cache are extended accordingly.
      * In SimplifiedLowering: Propagate a UseInfo with new
        TypeCheckKind::kNumberOrBoolean.
      * This leads to the generation of CheckedTaggedToFloat64 in
        RepresentationChanger with new CheckedTaggedInputMode::kNumberOrBoolean.
      * In EffectControlLinearizer: Handle this new mode. Accept and convert
        number and boolean and deopt for rest.
      
      Original change's description:
      > [turbofan] Improve equality on NumberOrOddball
      >
      > This CL cleans up CompareOperationFeedback by replacing it with a
      > composable set of flags. The interpreter is changed to collect
      > more specific feedback for abstract equality, especially if oddballs
      > are involved.
      >
      > TurboFan is changed to construct SpeculativeNumberEqual operator
      > instead of the generic JSEqual in many more cases. This change has
      > shown a local speedup of a factor of 3-10, because the specific
      > operator is way faster than calling into the generic builtin, but
      > it also enables additional optimizations, further improving
      > runtime performance.
      >
      > Bug: v8:5660
      > Change-Id: I856752caa707e9a4f742c6e7a9c75552fb431d28
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162854
      > Reviewed-by: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67645}
      
      TBR: tebbi@chromium.org
      Bug: v8:5660
      Change-Id: I12e733149a1d2773cafb781a1d4b10aa1eb242a7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2193713
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68037}
      120d4333
  2. 26 May, 2020 1 commit
  3. 08 May, 2020 1 commit
    • Nico Hartmann's avatar
      Revert "[turbofan] Improve equality on NumberOrOddball" · f4b98cc6
      Nico Hartmann authored
      This reverts commit 6204768b.
      
      Reason for revert: A number of Clusterfuzz reports (e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=1079474)
      
      Original change's description:
      > [turbofan] Improve equality on NumberOrOddball
      > 
      > This CL cleans up CompareOperationFeedback by replacing it with a
      > composable set of flags. The interpreter is changed to collect
      > more specific feedback for abstract equality, especially if oddballs
      > are involved.
      > 
      > TurboFan is changed to construct SpeculativeNumberEqual operator
      > instead of the generic JSEqual in many more cases. This change has
      > shown a local speedup of a factor of 3-10, because the specific
      > operator is way faster than calling into the generic builtin, but
      > it also enables additional optimizations, further improving
      > runtime performance.
      > 
      > Bug: v8:5660
      > Change-Id: I856752caa707e9a4f742c6e7a9c75552fb431d28
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162854
      > Reviewed-by: Mythri Alle <mythria@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67645}
      
      TBR=rmcilroy@chromium.org,neis@chromium.org,mythria@chromium.org,nicohartmann@chromium.org
      
      Change-Id: I3410310ed2b1ff2eaee70c1b91c3151d35866108
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:5660
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190414Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67673}
      f4b98cc6
  4. 07 May, 2020 1 commit
    • Nico Hartmann's avatar
      [turbofan] Improve equality on NumberOrOddball · 6204768b
      Nico Hartmann authored
      This CL cleans up CompareOperationFeedback by replacing it with a
      composable set of flags. The interpreter is changed to collect
      more specific feedback for abstract equality, especially if oddballs
      are involved.
      
      TurboFan is changed to construct SpeculativeNumberEqual operator
      instead of the generic JSEqual in many more cases. This change has
      shown a local speedup of a factor of 3-10, because the specific
      operator is way faster than calling into the generic builtin, but
      it also enables additional optimizations, further improving
      runtime performance.
      
      Bug: v8:5660
      Change-Id: I856752caa707e9a4f742c6e7a9c75552fb431d28
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162854Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67645}
      6204768b
  5. 23 Apr, 2020 1 commit
  6. 21 Apr, 2020 1 commit
  7. 10 Mar, 2020 1 commit
  8. 25 Feb, 2020 1 commit
  9. 18 Feb, 2020 1 commit
  10. 17 Feb, 2020 2 commits
  11. 14 Feb, 2020 1 commit
  12. 07 Feb, 2020 2 commits
  13. 10 Jan, 2020 1 commit
  14. 20 Dec, 2019 1 commit
  15. 17 Dec, 2019 2 commits
  16. 11 Dec, 2019 1 commit
  17. 28 Nov, 2019 2 commits
  18. 20 Nov, 2019 1 commit
  19. 08 Nov, 2019 1 commit
    • Clemens Backes's avatar
      [utils] Move {WhichPowerOf2} to base::bits · fa056cd0
      Clemens Backes authored
      {WhichPowerOf2} is basically the same as {CountTrailingZeros}, with a
      restriction to powers of two. Since it does not use or depend on any v8
      internals, it can be moved to src/base/bits.h.
      This CL also changes the implementation to use the CTZ builtin if
      available, and falls back to popcnt otherwise.
      
      Drive-by: Make it constexpr, and rename to {WhichPowerOfTwo}.
      
      R=sigurds@chromium.org
      
      Bug: v8:9810, v8:8912
      Change-Id: I8368d098f9ab1247f3b9f036f1385a38de10cc6a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903966Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64851}
      fa056cd0
  20. 04 Nov, 2019 1 commit
  21. 31 Oct, 2019 1 commit
    • Tobias Tebbi's avatar
      [csa] check arity when calling · dcfc453e
      Tobias Tebbi authored
      Add information to CallInterfaceDescriptor if additional implicit arguments
      can be passed on the stack, that is, if it is a varargs calling convention.
      
      With this information, we can have a proper DCHECK in CSA to avoid passing
      the wrong number of arguments to builtins that don't support it.
      Previously, this lead to difficult to investigate crashes with misaligned
      stacks.
      
      Drive-by cleanup: Reduce duplication between DEFINE_PARAMETERS_... macros.
      
      Change-Id: I449af6713a3cdd72e098d3481dfee62e01343f14
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1888932Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#64666}
      dcfc453e
  22. 17 Oct, 2019 1 commit
  23. 13 Sep, 2019 1 commit
  24. 10 Sep, 2019 1 commit
  25. 09 Sep, 2019 1 commit
  26. 05 Sep, 2019 2 commits
  27. 27 Aug, 2019 1 commit
  28. 26 Aug, 2019 1 commit
  29. 23 Aug, 2019 1 commit
  30. 22 Aug, 2019 1 commit
  31. 21 Aug, 2019 1 commit
  32. 16 Aug, 2019 1 commit
  33. 12 Aug, 2019 1 commit
  34. 26 Jul, 2019 1 commit
  35. 12 Jul, 2019 1 commit