1. 27 Jul, 2016 4 commits
  2. 25 Jul, 2016 1 commit
  3. 22 Jul, 2016 2 commits
    • ivica.bogosavljevic's avatar
      Implement UnaligedLoad and UnaligedStore turbofan operators. · 580fdf3c
      ivica.bogosavljevic authored
      Implement UnalignedLoad and UnalignedStore optional
      turbofan operators and use them in WasmCompiler for unaligned
      memory access.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2122853002
      Cr-Commit-Position: refs/heads/master@{#37988}
      580fdf3c
    • bmeurer's avatar
      [turbofan] Change Float64Max/Float64Min to JavaScript semantics. · ba092fb0
      bmeurer authored
      So far we don't have a useful way to inline Math.max or Math.min in
      TurboFan optimized code. This adds new operators NumberMax and NumberMin
      and changes the Float64Max/Float64Min operators to have JavaScript
      semantics instead of the C++ semantics that it had previously.
      
      This also removes support for recognizing the tenary case in the
      CommonOperatorReducer, since that doesn't seem to have any positive
      impact (and actually doesn't show up in regular JavaScript, where
      people use Math.max/Math.min instead).
      
      Drive-by-fix: Also nuke the unused Float32Max/Float32Min operators.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2170343002
      Cr-Commit-Position: refs/heads/master@{#37971}
      ba092fb0
  4. 20 Jul, 2016 2 commits
  5. 19 Jul, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce a TransitionElementsKind simplified operator. · 908cd09f
      bmeurer authored
      Instead of wriring the elements kind transitions into the control flow
      early on, we do instead put this marker into the effect chain, so that
      the elements transitions are visible to the LoadElimination and can
      thus be optimized properly there.
      
      This CL itself doesn't add any of those optimizations, but just adds
      the foundations to make them possible later.
      
      R=jarin@chromium.org
      BUG=v8:4930,v8:5141
      
      Review-Url: https://codereview.chromium.org/2164573003
      Cr-Commit-Position: refs/heads/master@{#37869}
      908cd09f
  6. 14 Jul, 2016 4 commits
  7. 13 Jul, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce CheckedUint32Div and CheckUint32Mod operators. · 15ebec03
      bmeurer authored
      Checked integer division and modulus can be done more efficiently
      if we know that the inputs are in Unsigned32 range.
      
      Drive-by-fix: Replace the TypeCheckKind on NodeInfo by a proper
      restriction type, and thread the feedback type through binary
      Number operations similar to what we do for their speculative
      versions. Also deal with Unsigned32 inputs for integer multiplication.
      
      R=jarin@chromium.org
      BUG=v8:4583,v8:5141
      
      Review-Url: https://codereview.chromium.org/2149493002
      Cr-Commit-Position: refs/heads/master@{#37703}
      15ebec03
  8. 12 Jul, 2016 1 commit
  9. 11 Jul, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce CheckedInt32Div and CheckedInt32Mod operators. · 03bde266
      bmeurer authored
      Consume Smi/Signed32 feedback for division and modulus and introduce
      appropriate checked operators. This is especially important for modulus
      where the Float64Mod operator is significantly slower than Int32Mod on
      most platforms. For division it's mostly important to propagate
      integerness, i.e. to avoid follow-up conversions between float and
      int32.
      
      Drive-by-fix: Use Int32Mod for the ModulusStub (and the bytecode handler)
      when the inputs are both Smi.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2138633002
      Cr-Commit-Position: refs/heads/master@{#37621}
      03bde266
  10. 01 Jul, 2016 1 commit
    • bmeurer's avatar
      [builtins] Unify most of the remaining Math builtins. · 0a0fe8fb
      bmeurer authored
      Import fdlibm versions of acos, acosh, asin and asinh, which are more
      precise and produce the same result across platforms (we were using
      libm versions for asin and acos so far, where both speed and precision
      depended on the operating system so far). Introduce appropriate TurboFan
      operators for these functions and use them both for inlining and for the
      generic builtin.
      
      Also migrate the Math.imul and Math.fround builtins to TurboFan builtins
      to ensure that their behavior is always exactly the same as the inlined
      TurboFan version (i.e. C++ truncation semantics for double to float
      don't necessarily meet the JavaScript semantics).
      
      For completeness, also migrate Math.sign, which can even get some nice
      love in TurboFan.
      
      Drive-by-fix: Some alpha-sorting on the Math related functions, and
      cleanup the list of Math intrinsics that we have to export via the
      native context currently.
      
      BUG=v8:3266,v8:3496,v8:3509,v8:3952,v8:5169,v8:5170,v8:5171,v8:5172
      TBR=rossberg@chromium.org
      R=franzih@chromium.org
      
      Review-Url: https://codereview.chromium.org/2116753002
      Cr-Commit-Position: refs/heads/master@{#37476}
      0a0fe8fb
  11. 30 Jun, 2016 2 commits
  12. 29 Jun, 2016 2 commits
  13. 28 Jun, 2016 4 commits
  14. 21 Jun, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Address the useless overflow bit materialization. · 00889cc2
      bmeurer authored
      Add control dependencies to Projection and Int32Add/SubWithOverflow
      operators, to prevent the scheduler from moving the Projection nodes
      into the wrong place. This way the instruction selection can combine
      the Int32Add/SubWithOverflow operations with the DeoptimizeIf and/or
      DeoptimizeUnless nodes. This needs new operators CheckedInt32Add and
      CheckedInt32Sub so that we can delay the actual lowering until the
      effect/control linearizer.
      
      This also makes CheckIf operator obsolete, so we can drop it.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2082993002
      Cr-Commit-Position: refs/heads/master@{#37148}
      00889cc2
  15. 20 Jun, 2016 4 commits
    • bmeurer's avatar
      [turbofan] Introduce CheckTaggedSigned and CheckTaggedPointer operators. · 99eb5686
      bmeurer authored
      These are used to check for Smi or HeapObject, and we use them
      appropriately in JSNativeContextSpecialization, so we don't need
      to introduce dependencies on concrete control flow and/or concrete
      frame states.
      
      They will be optimized by a proper check elimination reducer,
      which will be added in a separate CL.
      
      R=jarin@chromium.org
      BUG=v8:4470
      
      Review-Url: https://codereview.chromium.org/2082523002
      Cr-Commit-Position: refs/heads/master@{#37096}
      99eb5686
    • machenbach's avatar
      Revert of [turbofan] Introduce CheckUnless. (patchset #1 id:1 of... · 46c21b2c
      machenbach authored
      Revert of [turbofan] Introduce CheckUnless. (patchset #1 id:1 of https://codereview.chromium.org/2080113002/ )
      
      Reason for revert:
      [Sheriff] Speculative revert: Seems to lead to devtools crashes:
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Win/builds/5259
      
      Original issue's description:
      > [turbofan] Introduce CheckUnless.
      >
      > Similarly to CheckIf, CheckUnless is a deoptimization without a specific
      > frame state. A frame state is assigned during effect-control linearization
      > (and CheckUnless is turned into DeoptimizeUnless).
      >
      > At the moment, the new operator is only used at one place in native context
      > specialization, but we should use it everywhere. The advantage of
      > CHeckUnless is that it avoids non-truncating uses of values by frame
      > states. This particular change is aimed at Octane's crypto, where this
      > enables to turn one NumberMultiply into Int32Mul, and thus improve
      > the score by more than 10% (it also needs minus zero truncation and
      > typing to be improved, but those CLs are already in flight).
      >
      > BUG=v8:4470
      > R=bmeurer@chromium.org
      >
      > Committed: https://crrev.com/85fde59d538e0dcaf461108086c2f7cf904f567a
      > Cr-Commit-Position: refs/heads/master@{#37085}
      
      TBR=bmeurer@chromium.org,jarin@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4470
      
      Review-Url: https://codereview.chromium.org/2078333002
      Cr-Commit-Position: refs/heads/master@{#37090}
      46c21b2c
    • bmeurer's avatar
      [builtins] Introduce proper Float64Tan operator. · c87168bc
      bmeurer authored
      Import base::ieee754::tan() from fdlibm and introduce Float64Tan TurboFan
      operator based on that, similar to what we do for Float64Cos and Float64Sin.
      Rewrite Math.tan() as TurboFan builtin and use those operators to also
      inline Math.tan() into optimized TurboFan functions.
      
      Drive-by-fix: Kill the %_ConstructDouble intrinsics, and provide only
      the %ConstructDouble runtime entry for writing tests.
      
      BUG=v8:5086,v8:5126
      R=yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/2083453002
      Cr-Commit-Position: refs/heads/master@{#37087}
      c87168bc
    • jarin's avatar
      [turbofan] Introduce CheckUnless. · 85fde59d
      jarin authored
      Similarly to CheckIf, CheckUnless is a deoptimization without a specific
      frame state. A frame state is assigned during effect-control linearization
      (and CheckUnless is turned into DeoptimizeUnless).
      
      At the moment, the new operator is only used at one place in native context
      specialization, but we should use it everywhere. The advantage of
      CHeckUnless is that it avoids non-truncating uses of values by frame
      states. This particular change is aimed at Octane's crypto, where this
      enables to turn one NumberMultiply into Int32Mul, and thus improve
      the score by more than 10% (it also needs minus zero truncation and
      typing to be improved, but those CLs are already in flight).
      
      BUG=v8:4470
      R=bmeurer@chromium.org
      
      Review-Url: https://codereview.chromium.org/2080113002
      Cr-Commit-Position: refs/heads/master@{#37085}
      85fde59d
  16. 19 Jun, 2016 1 commit
  17. 17 Jun, 2016 3 commits
  18. 16 Jun, 2016 4 commits
  19. 15 Jun, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce a dedicated CheckBounds operator. · 2267ccb1
      bmeurer authored
      This CheckBounds simplified operator is similar to the HBoundsCheck in
      Crankshaft, and is hooked up to the new type feedback support in the
      SimplifiedLowering. We use it to check the index bounds for keyed
      property accesses.
      
      Note to perf sheriffs: This will tank quite a few benchmarks, as the
      operator makes some redundant branch elimination ineffective for
      certain patterns of keyed accesses. This does require more serious
      redundancy elimination, which we will do in a separate CL. So ignore
      any regressions from this CL, we know there will be a few.
      
      R=jarin@chromium.org
      BUG=v8:4470,v8:5100
      
      Committed: https://crrev.com/85e5567dae66a918500ae94c5568221137a0f5d4
      Review-Url: https://codereview.chromium.org/2035893004
      Cr-Original-Commit-Position: refs/heads/master@{#36947}
      Cr-Commit-Position: refs/heads/master@{#37003}
      2267ccb1