1. 07 Mar, 2019 1 commit
  2. 06 Mar, 2019 1 commit
  3. 04 Mar, 2019 2 commits
  4. 01 Mar, 2019 1 commit
    • Matt Gardner's avatar
      Reland "Optimize `in` operator" · 803ad324
      Matt Gardner authored
      The original was reverted for breaking webkit layout tests:
      https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/30270
      
      It also caused the following clusterfuzz failures:
      
      chromium:935832
      This was a correctness bug due to not properly handling the case of arrays with prototypes other
      than Array.prototype. Accesses that were TheHole were not being handled property, both in bounds
      holes in holey arrays and out of bounds on either holey or packed arrays. Handling was incorrect
      both in access-assembler and in Turbofan.
      
      chromium:935932
      This bug was that there was no handling for Has checks on the global object. Turbofan was emitting
      code for a store (the 'else' condition on 'access_mode == AccessMode::kLoad'). It hit a DCHECK in
      debug builds but in release could show up in different places. This is the bug that caused the
      webkit layout test failure that led to the revert.
      
      Both bugs are fixed by in CL, and tests are added for those cases.
      
      Bug: v8:8733, chromium:935932, chromium:935832
      Change-Id: Iba0dfcfce6e15d2c0815a7670ece67bc13ba1925
      Reviewed-on: https://chromium-review.googlesource.com/c/1493132Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Matt Gardner <magardn@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#59958}
      803ad324
  5. 27 Feb, 2019 2 commits
  6. 26 Feb, 2019 2 commits
  7. 25 Feb, 2019 3 commits
  8. 22 Feb, 2019 1 commit
  9. 20 Feb, 2019 1 commit
  10. 19 Feb, 2019 1 commit
  11. 15 Feb, 2019 1 commit
  12. 14 Feb, 2019 2 commits
    • Benedikt Meurer's avatar
      [turbofan] Introduce a CallFunctionTemplate builtin. · a2d9924c
      Benedikt Meurer authored
      When calling into API callbacks from TurboFan optimized, we can
      currently only take a fast-path when TurboFan is able to find some
      information about the receiver in the graph, or when the API callback
      specifies that it neither requires an access check (aka "accepts any
      receiver") nor an interface check (aka "compatible receiver check").
      
      This change introduces a new CallFunctionTemplate builtin that sits
      in front of the CallApiCallback builtin and does both the access as well
      as the interface check as necessary (and raises appropriate exceptions).
      This way TurboFan can still call into the API callback via the fast-path
      even without ahead knowledge about the receiver, which is significantly
      faster than the generic call machinery for API callbacks.
      
      On the test case from the Angular team[1], the interesting metrics
      improve from
      
        DOM_mono: 0.273 ms
        DOM_mega: 0.571 ms
        DOM_call: 0.649 ms
      
      to
      
        DOM_mono: 0.264 ms
        DOM_mega: 0.572 ms
        DOM_call: 0.368 ms
      
      so the DOM_call is only about **1.4 times slower** than the DOM_mono and
      about **1.5 times faster** than the DOM_mega case (compared to **2.4
      times slower**). Execution time in the DOM_call was reduced by around
      **~45%**.
      
      Currently this new code path is limited to TurboFan optimized code, but
      the idea is to eventually migrate the API calls from baseline to also
      use the new CSA functionality, but there are lot's of subleties to take
      into account, so starting with small changes to get coverage for the
      basic building blocks.
      
      [1]: https://mhevery.github.io/perf-tests/DOM-megamorphic.html
      
      Bug: v8:8820
      Change-Id: Ie1029cf182ce05a6e519fd9a9d4fa825db8adb4c
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/1470129
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59598}
      a2d9924c
    • Mythri's avatar
      [ic] Update KeyedStoreIC to handle no feedback vector case · 596c292a
      Mythri authored
      The megamorphic case in the KeyedStoreIC doesn't use/update any feedback.
      We could use this path to fast path some of the keyed stores instead of
      misssing to the runtime when the feedback vector is not available. This
      cl, moves the check for feedback vector from the bytecode handler to the
      KeyedStoreIC and calls the KeyedStoreIC_Megamorphic builtin when there is
      no valid feedback vector. This will help improve the performance of no
      feedback/jitless case.
      
      Bug: v8:8293
      Change-Id: I71c128b355d47ac20e50fc836f4bc2cf0aab1154
      Reviewed-on: https://chromium-review.googlesource.com/c/1460946
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59590}
      596c292a
  13. 13 Feb, 2019 3 commits
  14. 12 Feb, 2019 1 commit
  15. 11 Feb, 2019 1 commit
  16. 08 Feb, 2019 1 commit
  17. 07 Feb, 2019 1 commit
  18. 05 Feb, 2019 1 commit
  19. 02 Feb, 2019 1 commit
  20. 31 Jan, 2019 1 commit
  21. 30 Jan, 2019 1 commit
  22. 29 Jan, 2019 1 commit
  23. 28 Jan, 2019 1 commit
  24. 25 Jan, 2019 2 commits
  25. 24 Jan, 2019 1 commit
    • Mythri's avatar
      Reland "Change SetProperty/SetSuperProperty to infer language mode when possible" · e2846ea6
      Mythri authored
      This is a reland of 0896599f with a fix for
      failing layout test.
      
      Original change's description:
      > Change SetProperty/SetSuperProperty to infer language mode when possible
      >
      > In most cases, the language mode can be inferred from the closure and
      > the context. Computing the language mode instead of passing it around
      > simplifies the ICs and will make it possible to go towards lazily
      > allocating feedback vectors. Currently ICs obtain the language mode from
      > the feedback vectors and with lazy feedback allocation we may not always
      > have feedback vectors. Since computing language mode is a bit expensive
      > we want to defer it as far as possible.
      >
      > In Array builtins and other builtins like Reflect.Set we need to force a
      > language mode when setting the properties. To support these cases the
      > SetProperty methods allow the language mode to be overridden when needed.
      >
      > This is a first cl in a series of cls, that will defer the language mode
      > computation further and remove language mode where it is not needed.
      >
      > BUG: v8:8580
      > Change-Id: I9c2396e3bcfe77c3c9d6760c46d86954d54744b9
      > Reviewed-on: https://chromium-review.googlesource.com/c/1409426
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Commit-Queue: Mythri Alle <mythria@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58893}
      
      TBR: ahaas@chromium.org
      Change-Id: Id5d81eae91b55638dbc72168f0e5203e684869fb
      Reviewed-on: https://chromium-review.googlesource.com/c/1421077
      Commit-Queue: Mythri Alle <mythria@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59075}
      e2846ea6
  26. 23 Jan, 2019 2 commits
    • Ben L. Titzer's avatar
      [wasm] Implement table.init bytecode · 61ea7c48
      Ben L. Titzer authored
      The table.init bytecode copies a range of elements from an element
      segment into a table, trapping if the segment is not passive, is
      dropped, or would cause out-of-bounds accesses.
      
      R=mstarzinger@chromium.org
      CC=binji@chromium.org
      BUG=v8:7747
      
      Change-Id: Ib27af9cca45a464fd1f876ddd092e99941481896
      Reviewed-on: https://chromium-review.googlesource.com/c/1430063
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59037}
      61ea7c48
    • Michael Starzinger's avatar
      [wasm] Implement interpreter support for "throw". · 87773260
      Michael Starzinger authored
      This implements support for the "throw" operation in the interpreter.
      Note that support for catching/handling exceptions is still missing
      from the interpreter in will be done separately.
      
      This also introduces a {WasmExceptionPackage} class to the object model
      that acts as an interface for allocating and accessing exceptions that
      originate from WebAssembly. It does not represent a new instance type
      however as exceptions are instances of {WebAssembly.RuntimeError} for
      now.
      
      R=clemensh@chromium.org
      TEST=mjsunit/wasm/exceptions
      BUG=v8:8091
      
      Change-Id: I1f0cb548efb798e3c1488d42e4a31421c3c1aada
      Reviewed-on: https://chromium-review.googlesource.com/c/1430099Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59033}
      87773260
  27. 22 Jan, 2019 3 commits
  28. 18 Jan, 2019 1 commit