1. 15 Feb, 2018 1 commit
  2. 08 Feb, 2018 1 commit
  3. 07 Feb, 2018 1 commit
  4. 30 Jan, 2018 1 commit
  5. 22 Jan, 2018 1 commit
  6. 19 Jan, 2018 1 commit
  7. 17 Jan, 2018 2 commits
  8. 12 Jan, 2018 1 commit
  9. 11 Jan, 2018 1 commit
  10. 02 Jan, 2018 3 commits
    • Bill Budge's avatar
      Revert "Revert "[debugger] do not try to find saved context before DebugEvaluate::Local"" · 781fa726
      Bill Budge authored
      This reverts commit 2a8e1e4a.
      
      Reason for revert: Time outs were caused by infra issues.
      
      Original change's description:
      > Revert "[debugger] do not try to find saved context before DebugEvaluate::Local"
      > 
      > This reverts commit ea7499df.
      > 
      > Reason for revert: Speculative, but this CL seems correlated with a bunch of timeouts on Linux:
      > 
      > https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/19540
      > 
      > Original change's description:
      > > [debugger] do not try to find saved context before DebugEvaluate::Local
      > > 
      > > Current implementation produces crashes since sometimes saved context
      > > is empty. It looks like we do not need to restore saved context since
      > > we do not set debug context as current, at least all tests are passed.
      > > 
      > > R=​yangguo@chromium.org
      > > 
      > > Bug: chromium:797573,chromium:792838
      > > Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
      > > Reviewed-on: https://chromium-review.googlesource.com/844979
      > > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#50327}
      > 
      > TBR=yangguo@chromium.org,kozyatinskiy@chromium.org
      > 
      > Change-Id: I543201698c96c9762c481c1f6012cc13cb712842
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: chromium:797573, chromium:792838
      > Reviewed-on: https://chromium-review.googlesource.com/846205
      > Reviewed-by: Bill Budge <bbudge@chromium.org>
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50331}
      
      TBR=bbudge@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: I44e916c796b935c372ce418a3fad44aa25d6f863
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:797573, chromium:792838
      Reviewed-on: https://chromium-review.googlesource.com/848132Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50332}
      781fa726
    • Bill Budge's avatar
      Revert "[debugger] do not try to find saved context before DebugEvaluate::Local" · 2a8e1e4a
      Bill Budge authored
      This reverts commit ea7499df.
      
      Reason for revert: Speculative, but this CL seems correlated with a bunch of timeouts on Linux:
      
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/19540
      
      Original change's description:
      > [debugger] do not try to find saved context before DebugEvaluate::Local
      > 
      > Current implementation produces crashes since sometimes saved context
      > is empty. It looks like we do not need to restore saved context since
      > we do not set debug context as current, at least all tests are passed.
      > 
      > R=​yangguo@chromium.org
      > 
      > Bug: chromium:797573,chromium:792838
      > Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
      > Reviewed-on: https://chromium-review.googlesource.com/844979
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50327}
      
      TBR=yangguo@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: I543201698c96c9762c481c1f6012cc13cb712842
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:797573, chromium:792838
      Reviewed-on: https://chromium-review.googlesource.com/846205Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50331}
      2a8e1e4a
    • Alexey Kozyatinskiy's avatar
      [debugger] do not try to find saved context before DebugEvaluate::Local · ea7499df
      Alexey Kozyatinskiy authored
      Current implementation produces crashes since sometimes saved context
      is empty. It looks like we do not need to restore saved context since
      we do not set debug context as current, at least all tests are passed.
      
      R=yangguo@chromium.org
      
      Bug: chromium:797573,chromium:792838
      Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
      Reviewed-on: https://chromium-review.googlesource.com/844979Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50327}
      ea7499df
  11. 05 Dec, 2017 1 commit
  12. 29 Nov, 2017 2 commits
    • Michael Starzinger's avatar
      [debug] Fix debug-evaluate for de-materialized function. · 27fd921a
      Michael Starzinger authored
      This fixes debug-evaluate in the presence of a de-materialized function
      object. The creation of an arguments object is now requested based on a
      given frame (potentially inlined) instead of a target function. It makes
      sure that multiple calls to {StandardFrame::Summarize} don't cause any
      confusion when they give back non-identical function objects.
      
      R=jgruber@chromium.org
      TEST=debugger/debug/debug-evaluate-arguments
      BUG=chromium:788647
      
      Change-Id: I575bb6cb20b4657dc09019e631b5d6e36c1b5189
      Reviewed-on: https://chromium-review.googlesource.com/796474Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49721}
      27fd921a
    • Georg Neis's avatar
      No longer desugar the exponentiation (**) operator. · b97567a9
      Georg Neis authored
      Prior to this change, the exponentiation operator was rewritten by the
      parser to a call of the Math.pow builtin. However, Math.pow does not
      accept BigInt arguments, while the exponentiation operator must accept
      them.
      
      This CL
      - removes the parser's special treatment of ** and **=, treating them
        like any other binary op instead.
      - adds a TFC builtin Exponentiate that does the right thing for
        all inputs.
      - adds interpreter bytecodes Exp and ExpSmi whose handlers call the
        Exponentiate builtin. For simplicity, they currently always collect
        kAny feedback.
      - adds a Turbofan operator JSExponentiate with a typed-lowering to
        the existing NumberPow and a generic-lowering to the Exponentiate
        builtin. There is currently no speculative lowering.
      
      Note that exponentiation for BigInts is actually not implemented yet,
      so we can't yet test it.
      
      Bug: v8:6791
      Change-Id: Id90914c9c3fce310ce01e715c09eaa9f294f4f8a
      Reviewed-on: https://chromium-review.googlesource.com/785694Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49696}
      b97567a9
  13. 15 Nov, 2017 1 commit
  14. 13 Nov, 2017 1 commit
  15. 28 Oct, 2017 1 commit
  16. 25 Oct, 2017 1 commit
  17. 24 Oct, 2017 1 commit
    • Daniel Clifford's avatar
      Reimplement Array.prototype.slice in CSA and C++ · 6452b26a
      Daniel Clifford authored
      Previously, V8's slice was implemented in a combination of C++ and a 
      Javascript fallback. The disadvantage of this approach was that the
      fast-path required a call through the CEntryStub, which introduced
      considerable overhead for small arrays with fast elements kinds.
      
      Now the implementation primarily uses the CSA to generate both the
      full spec-complaint implementation as well as fast paths for argument
      objects and arrays with fast elements kinds. The CSA implementation
      uses a C++ implementation fallback in select situations where the the
      complexity of a CSA implementation would be too great and the
      CEntryStub overhead is not decisive (e.g. slices of dictionary
      elements arrays).
      
      Performance results on semi-random arrays with small number of
      elements (old vs. new):
      
      smi copy: 48.7 ms vs. 12 ms
      smi slice: 43.5 ms 14.8 ms
      object copy: 35.5 ms 7.7 ms
      object slice: 38.7 ms 8.8 ms
      dictionary slice: 2398.3 ms vs. 5.4 ms
      fast sloppy arguments slice: 9.6 ms vs. 7.2 ms
      slow sloppy arguments slice: 28.9 ms vs. 8.5 ms
      
      As a bonus, the new implementation is fully spec-compliant and fixes
      at least one existing bug.
      
      The design document for Array.prototype builtin rework can be found
      at https://goo.gl/wFHe2n
      
      Bug: v8:1956,v8:6601,v8:6710,v8:6978
      Change-Id: Ia0155bedcf39b4577605ff754f416c2af938efb7
      Reviewed-on: https://chromium-review.googlesource.com/574710
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48853}
      6452b26a
  18. 18 Oct, 2017 1 commit
  19. 16 Oct, 2017 2 commits
  20. 13 Oct, 2017 1 commit
  21. 09 Oct, 2017 1 commit
  22. 25 Sep, 2017 1 commit
  23. 16 Sep, 2017 1 commit
  24. 15 Sep, 2017 1 commit
  25. 14 Sep, 2017 1 commit
  26. 13 Sep, 2017 1 commit
  27. 12 Sep, 2017 1 commit
  28. 11 Sep, 2017 2 commits
  29. 08 Sep, 2017 1 commit
    • Benedikt Meurer's avatar
      [cleanup] Drop obsolete %StringCharCodeAt intrinsic. · 62649c8e
      Benedikt Meurer authored
      The previous %StringCharCodeAt runtime entry (and the inlined intrinsic)
      are obsolete and not used anymore (except in dedicated tests for this
      runtime function), so remove it. And rename the %StringCharCodeAtRT
      function, which is actually used to %StringCharCodeAt instead to have
      a consistent naming scheme for runtime fallbacks.
      
      Bug: v8:5049
      Change-Id: I619429ef54f6efea61fc51ab9ed1d5cfe4417f99
      Reviewed-on: https://chromium-review.googlesource.com/657719
      Commit-Queue: Yang Guo <yangguo@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47928}
      62649c8e
  30. 07 Sep, 2017 3 commits
  31. 06 Sep, 2017 1 commit
  32. 01 Sep, 2017 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Optimize fast enum cache driven for..in. · f1ec44e2
      Benedikt Meurer authored
      This CL adds support to optimize for..in in fast enum-cache mode to the
      same degree that it was optimized in Crankshaft, without adding the same
      deoptimization loop that Crankshaft had with missing enum cache indices.
      That means code like
      
        for (var k in o) {
          var v = o[k];
          // ...
        }
      
      and code like
      
        for (var k in o) {
          if (Object.prototype.hasOwnProperty.call(o, k)) {
            var v = o[k];
            // ...
          }
        }
      
      which follows the https://eslint.org/docs/rules/guard-for-in linter
      rule, can now utilize the enum cache indices if o has only fast
      properties on the receiver, which speeds up the access o[k]
      significantly and reduces the pollution of the global megamorphic
      stub cache.
      
      For example the micro-benchmark in the tracking bug v8:6702 now runs
      faster than ever before:
      
       forIn: 1516 ms.
       forInHasOwnProperty: 1674 ms.
       forInHasOwnPropertySafe: 1595 ms.
       forInSum: 2051 ms.
       forInSumSafe: 2215 ms.
      
      Compared to numbers from V8 5.8 which is the last version running with
      Crankshaft
      
       forIn: 1641 ms.
       forInHasOwnProperty: 1719 ms.
       forInHasOwnPropertySafe: 1802 ms.
       forInSum: 2226 ms.
       forInSumSafe: 2409 ms.
      
      and V8 6.0 which is the current stable version with TurboFan:
      
       forIn: 1713 ms.
       forInHasOwnProperty: 5417 ms.
       forInHasOwnPropertySafe: 5324 ms.
       forInSum: 7556 ms.
       forInSumSafe: 11067 ms.
      
      It also improves the throughput on the string-fasta benchmark by
      around 7-10%, and there seems to be a ~5% improvement on the
      Speedometer/React benchmark locally.
      
      For this to work, the ForInPrepare bytecode was split into
      ForInEnumerate and ForInPrepare, which is very similar to how it was
      handled in Fullcodegen initially. In TurboFan we introduce a new
      operator LoadFieldByIndex that does the dynamic property load.
      
      This also removes the CheckMapValue operator again in favor of
      just using LoadField, ReferenceEqual and CheckIf, which work
      automatically with the EscapeAnalysis and the
      BranchConditionElimination.
      
      Bug: v8:6702
      Change-Id: I91235413eea478ba77ace7bd14bb2f62e155dd9a
      Reviewed-on: https://chromium-review.googlesource.com/645949
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47768}
      f1ec44e2