1. 09 Nov, 2017 1 commit
  2. 07 Nov, 2017 5 commits
  3. 06 Nov, 2017 1 commit
  4. 03 Nov, 2017 2 commits
  5. 02 Nov, 2017 1 commit
  6. 31 Oct, 2017 2 commits
    • Mythri's avatar
      [TurboFan] Remove a check on nesting levels inlining heuristics · 5b38c7fc
      Mythri authored
      We have a check on maximum number of levels that can be inlined. This
      in some cases causes performance cliffs, when we cannot inline a small
      function because it has exceeded the number of levels. This cl removes
      that check. The intuition is that, having gone down several levels in
      a particular line stopping inlining that chain and exploring a new
      call site may not be beneficial. This cl also introduces a absolute
      limit on the number of nodes that can be inlined (including the small
      functions).
      
      Bug: v8:6871, chromium:779509
      Change-Id: Id29639ff2fd85b84d8746da3fb78a82d4e9852e8
      Reviewed-on: https://chromium-review.googlesource.com/743727Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49050}
      5b38c7fc
    • Benedikt Meurer's avatar
      [ic] Add OOB support to KeyedLoadIC. · 6dc35ab4
      Benedikt Meurer authored
      This adds support to the KeyedLoadIC to ignore out of bounds accesses
      for Strings and return undefined instead. We add a dedicated bit to the
      Smi handler to encode the OOB state and have TurboFan generate appropriate
      code for that case as well. This is mostly useful when programs
      accidentially access past the length of a string, which was observed and
      fixed for example in Babel recently, see
      
        https://github.com/babel/babel/pull/6589
      
      for details. The idea is to also extend this mechanism to Arrays and
      maybe other receivers, as reading beyond the length is also often used
      in jQuery and other popular libraries.
      
      Note that this is considered a mitigation for a performance cliff and
      not a general optimization of OOB accesses. These should still be
      avoided and handled properly instead.
      
      This seems to further improve the babel test on the web-tooling-benchmark
      by around 1%, because the OOB access no longer turns the otherwise
      MONOMORPHIC access into MEGAMORPHIC state.
      
      Bug: v8:6936, v8:7014
      Change-Id: I9df03304e056d7001a65da8e9621119f8e9bb55b
      Reviewed-on: https://chromium-review.googlesource.com/744022
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49049}
      6dc35ab4
  7. 30 Oct, 2017 1 commit
    • Michael Stanton's avatar
      Revert "[TurboFan] Remove maximum inlining levels check from inlining heuristics" · f585415a
      Michael Stanton authored
      This reverts commit ecd3a2ea.
      
      Reason for revert: Bug 779509, a crash with chrome.
      
      Original change's description:
      > [TurboFan] Remove maximum inlining levels check from inlining heuristics
      > 
      > We have a check on maximum number of levels that can be inlined. This
      > in some cases causes performance cliffs, when we cannot inline a small
      > function because it has exceeded the number of levels. This cl removes
      > that check. The intuition is that, having gone down several levels in
      > a particular line stopping inlining that chain and exploring a new
      > call site may not be beneficial.
      > 
      > Bug: v8:6871
      > Change-Id: I120056db38e78ce48dff010b6cf994259238582a
      > Reviewed-on: https://chromium-review.googlesource.com/741705
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49009}
      
      TBR=mythria@chromium.org,bmeurer@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Bug: v8:6871
      Change-Id: I4766f911cb326c224af110be5c0dd7a44362a880
      Reviewed-on: https://chromium-review.googlesource.com/743785Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Commit-Queue: Michael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49037}
      f585415a
  8. 27 Oct, 2017 1 commit
  9. 24 Oct, 2017 2 commits
  10. 20 Oct, 2017 1 commit
  11. 18 Oct, 2017 1 commit
  12. 17 Oct, 2017 1 commit
  13. 16 Oct, 2017 1 commit
  14. 13 Oct, 2017 1 commit
  15. 11 Oct, 2017 3 commits
    • Jan Krems's avatar
      Reland "[modules] Implement import.meta proposal" · 1c552999
      Jan Krems authored
      This is a reland of ed6f00fb
      Original change's description:
      > [modules] Implement import.meta proposal
      > 
      > Rewrites references to import.meta to a new GetImportMetaObject runtime
      > call. Embedders can define a callback for creating the meta object using
      > v8::Isolate::SetHostGetImportMetaObjectCallback. If no callback has been
      > provided, an empty object with null prototype is created.
      > 
      > This adds an example implementation to d8 that sets meta.url.
      > 
      > Bug: v8:6693
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I6871eec79da45bba81bbbc84b1ffff48534c368d
      > Reviewed-on: https://chromium-review.googlesource.com/707902
      > Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#48433}
      
      TBR=adamk@chromium.org
      
      Bug: v8:6693
      Change-Id: Ie2d746ad996a56ed6ff50b832f320fe44e02f231
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/712834Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48468}
      1c552999
    • Michael Lippautz's avatar
      [cctests] Check for stray Isolates in DEBUG builds · 777ca5eb
      Michael Lippautz authored
      Bug: 
      Change-Id: Id3373279f2d985f7899cf893c1f63692b97166b7
      Reviewed-on: https://chromium-review.googlesource.com/704655
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48456}
      777ca5eb
    • Sathya Gunasekaran's avatar
      Revert "[modules] Implement import.meta proposal" · a5565227
      Sathya Gunasekaran authored
      This reverts commit ed6f00fb.
      
      Reason for revert: tree is broken
      
      NOTRY=true
      NOTREECHECKS=true
      
      Original change's description:
      > [modules] Implement import.meta proposal
      > 
      > Rewrites references to import.meta to a new GetImportMetaObject runtime
      > call. Embedders can define a callback for creating the meta object using
      > v8::Isolate::SetHostGetImportMetaObjectCallback. If no callback has been
      > provided, an empty object with null prototype is created.
      > 
      > This adds an example implementation to d8 that sets meta.url.
      > 
      > Bug: v8:6693
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I6871eec79da45bba81bbbc84b1ffff48534c368d
      > Reviewed-on: https://chromium-review.googlesource.com/707902
      > Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#48433}
      
      TBR=adamk@chromium.org,gsathya@chromium.org,jan.krems@groupon.com
      
      Change-Id: I908a508d5db84cc8ae60d4fd4a0446bb570c1492
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6693
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/710760Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48434}
      a5565227
  16. 10 Oct, 2017 1 commit
    • Jan Krems's avatar
      [modules] Implement import.meta proposal · ed6f00fb
      Jan Krems authored
      Rewrites references to import.meta to a new GetImportMetaObject runtime
      call. Embedders can define a callback for creating the meta object using
      v8::Isolate::SetHostGetImportMetaObjectCallback. If no callback has been
      provided, an empty object with null prototype is created.
      
      This adds an example implementation to d8 that sets meta.url.
      
      Bug: v8:6693
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I6871eec79da45bba81bbbc84b1ffff48534c368d
      Reviewed-on: https://chromium-review.googlesource.com/707902
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48433}
      ed6f00fb
  17. 06 Oct, 2017 1 commit
    • Benedikt Meurer's avatar
      [turbofan] Add support to inline new Array(n) calls. · 34de39bf
      Benedikt Meurer authored
      Make calls like
      
        new Array(n)
        new A(n)
      
      (where A is a subclass of Array) inlinable into TurboFan. We do this by
      speculatively checking that n is an unsigned integer that is not greater
      than JSArray::kInitialMaxFastElementArray, and then lowering the backing
      store allocation to a builtin call. The speculative optimization is
      either protected by the AllocationSite for the Array constructor
      invocation (if we have one), or by a newly introduced global protector
      cell that is used for Array constructor invocations that don't have an
      AllocationSite, i.e. the ones from Array#map, Array#filter, or from
      subclasses of Array.
      
      Next step will be to implement the backing store allocations inline in
      TurboFan, but that requires Loop support in the GraphAssembler, so it's
      done as a separate CL. This should further boost the performance.
      
      This boosts the ARES6 ML benchmark by up to 8% on the steady state,
      and also improves monomorphic Array#map calls by around 20-25% on the
      initial setup.
      
      Bug: v8:6399
      Tbr: ulan@chromium.org
      Change-Id: I7c8bdecf7c814ce52db6ee3051c3206a4f7d4bb6
      Reviewed-on: https://chromium-review.googlesource.com/704639
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48348}
      34de39bf
  18. 04 Oct, 2017 1 commit
  19. 28 Sep, 2017 3 commits
  20. 26 Sep, 2017 1 commit
  21. 25 Sep, 2017 1 commit
    • Karl Schimpf's avatar
      Add capability of throwing values in WASM · 49106e48
      Karl Schimpf authored
      This is a second attempt at landing CL 644866 which was reverted by
      CL 667019.
      
      Extends the current implementation of WASM exceptions to be able to
      throw exceptions with values (not just tags).
      
      A JS typed (uint_16) array is used to hold the thrown values. This
      allows all WASM types to be stored (i32, i64, f32, and f64) as well as
      be inspected in JS.
      
      The previous CL was reverted because the WASM compiler made calls to
      run time functions with tagged objects, which must not be done. To fix
      this, all run time calls use the thread-level isolate to hold the
      exception being processed.
      
      Bug: v8:6577
      Change-Id: I4b1ef7e2847b71a2fab8e9934a0531057db9de63
      Reviewed-on: https://chromium-review.googlesource.com/677056
      Commit-Queue: Karl Schimpf <kschimpf@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarEric Holk <eholk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48148}
      49106e48
  22. 22 Sep, 2017 1 commit
  23. 15 Sep, 2017 1 commit
  24. 11 Sep, 2017 2 commits
  25. 07 Sep, 2017 2 commits
  26. 06 Sep, 2017 2 commits