1. 22 Apr, 2016 3 commits
  2. 21 Apr, 2016 4 commits
  3. 20 Apr, 2016 2 commits
    • adamk's avatar
      More accurately record an end position for default parameters in arrows · e96cbdcd
      adamk authored
      Our previous over-conservative answer caused us to emit hole checks in
      full-codegen when eagerly parsing but not when lazily parsing.
      
      With this patch, we use the positions of the BinaryOperations making up
      the parameter list (which are the positions of the commas) to determine
      the appropriate "end position" for each parameter's initializer. This means
      that we get accurate-enough positions for the initializers in the eager
      parsing step to get the same answers for hole-check-elimination that we
      will later during ParseLazy.
      
      In the included test case, for example:
      
        (function() { ((s = 17, y = s) => s)(); } )();
                              ^2     ^1
      
      The old code would generate a hole check when trying to load
      |s| for assignment to |y| (because it treated the closing parentheses
      pointed to by "^1" as the "initialization position" of |s|).
      
      The new code uses the comma pointed to by "^2" as the initialization
      position of |s|. Since that occurs textually before the load of |s|,
      full-codegen knows it can avoid the hole check.
      
      BUG=v8:4908
      LOG=n
      
      Review URL: https://codereview.chromium.org/1900343002
      
      Cr-Commit-Position: refs/heads/master@{#35678}
      e96cbdcd
    • titzer's avatar
      [turbofan] Length and index2 are unsigned in CheckedLoad/CheckedStore. · b994ad45
      titzer authored
      Also factor out test cases from test-run-machops.cc into test-run-load-store.cc
      
      BUG=chromium:599717
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1858323003
      
      Cr-Commit-Position: refs/heads/master@{#35651}
      b994ad45
  4. 19 Apr, 2016 1 commit
  5. 18 Apr, 2016 1 commit
  6. 15 Apr, 2016 1 commit
  7. 14 Apr, 2016 1 commit
  8. 11 Apr, 2016 4 commits
  9. 08 Apr, 2016 1 commit
  10. 07 Apr, 2016 4 commits
  11. 05 Apr, 2016 6 commits
  12. 04 Apr, 2016 3 commits
  13. 01 Apr, 2016 2 commits
  14. 31 Mar, 2016 1 commit
  15. 29 Mar, 2016 1 commit
    • bmeurer's avatar
      [crankshaft] Address the deoptimization loops of Math.floor, Math.round and Math.ceil. · 978ad03b
      bmeurer authored
      Fix and re-enable the flexible representation for Math.floor (which is used to
      implement Math.ceil) and Math.round, which allows Math.floor and Math.round to
      return double results instead of int32, and therefore allows values outside
      the int32 range, especially -0 is now a valid result, which doesn't deopt.
      
      Also port this feature to x64 and ia32 when the CPU supports the SSE4.1
      extension.
      
      This addresses all the known deoptimization loops related to Math.round
      in the Kraken benchmark suite, and seems to also address most of the
      deoptimization loops related to Math.floor in the Oort Online benchmark.
      
      Drive-by-fix: Import the regression tests for the broken HMathFloorOfDiv
      optimization that caused the initial revert of the feature (for arm64 only
      back then).
      
      BUG=chromium:476477,v8:2890,v8:4059
      R=jarin@chromium.org
      LOG=n
      
      Review URL: https://codereview.chromium.org/1841513003
      
      Cr-Commit-Position: refs/heads/master@{#35094}
      978ad03b
  16. 25 Mar, 2016 3 commits
  17. 22 Mar, 2016 1 commit
    • adamk's avatar
      Remove support for legacy const, part 1 · ed18aa65
      adamk authored
      Now that ES2015 const has shipped, in Chrome 49, legacy const declarations
      are no more. This lets us remove a bunch of code from many parts of the
      codebase.
      
      In this patch, I remove parser support for generating legacy const variables
      from const declarations. This also removes the special "illegal declaration"
      bit from Scope, which has ripples into all compiler backends.
      
      Also gone are any tests which relied on legacy const declarations.
      
      Note that we do still generate a Variable in mode CONST_LEGACY in one case:
      function name bindings in sloppy mode. The likely fix there is to add a new
      Variable::Kind for this case and handle it appropriately for stores in each
      backend, but I leave that for a later patch to make this one completely
      subtractive.
      
      Review URL: https://codereview.chromium.org/1819123002
      
      Cr-Commit-Position: refs/heads/master@{#35002}
      ed18aa65
  18. 21 Mar, 2016 1 commit