1. 25 Apr, 2019 1 commit
    • Tobias Tebbi's avatar
      [csa] verify skipped write-barriers in MemoryOptimizer · da7322c0
      Tobias Tebbi authored
      With very few exceptions, this verifies all skipped write-barriers in
      CSA and Torque, showing that the MemoryOptimizer together with some
      type information on the stored value are enough to avoid unsafe skipped
      write-barriers.
      
      Changes to CSA:
      SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
      MemoryOptimizer by default.
      Type information about the stored values (TNode<Smi>) is exploited to
      safely skip write barriers for stored Smi values.
      In some cases, the code is re-structured to make it easier to consume
      for the MemoryOptimizer (manual branch and load elimination).
      
      Changes to the MemoryOptimizer:
      Improve the MemoryOptimizer to remove write barriers:
      - When the store happens to a CSA-generated InnerAllocate, by ignoring
        Bitcasts and additions.
      - When the stored value is the HeapConstant of an immortal immovable root.
      - When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
      - Fast C-calls are treated as non-allocating.
      - Runtime calls can be white-listed as non-allocating.
      
      Remaining missing cases:
      - C++-style iterator loops with inner pointers.
      - Inner allocates that are reloaded from a field where they were just stored
        (for example an elements backing store). Load elimination would fix that.
      - Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
        We could handle that in Torque.
      - Double-aligned allocations, which are not lowered in the MemoryOptimizer
        but in CSA.
      
      Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
      can be handled by overload resolution (in Torque and C++).
      
      R=jarin@chromium.org
      TBR=mvstanton@chromium.org
      
      Change-Id: I0af9b710673f350e0fe81c2e59f37da93c024b7c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1571414
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61016}
      da7322c0
  2. 09 Apr, 2019 1 commit
  3. 01 Apr, 2019 1 commit
  4. 26 Mar, 2019 1 commit
  5. 25 Mar, 2019 2 commits
  6. 08 Mar, 2019 1 commit
  7. 04 Mar, 2019 2 commits
  8. 21 Feb, 2019 3 commits
  9. 15 Feb, 2019 1 commit
  10. 19 Dec, 2018 1 commit
  11. 06 Dec, 2018 1 commit
  12. 05 Dec, 2018 1 commit
  13. 23 Nov, 2018 1 commit
    • Caitlin Potter's avatar
      Reland "[builtins] Implement Object.fromEntries" · 8a9cbdac
      Caitlin Potter authored
      This is a reland of a5336471
      
      Original change's description:
      > [builtins] Implement Object.fromEntries
      > 
      > Adds the Object.fromEntries() method behind
      > --harmony-object-from-entries.
      > 
      > 
> Includes an initial implementation of the new experimental builtin
      > Object.fromEntries implemented by Daniel Clifford, and
      > has been modified by Caitlin Potter to support a fast case to skip
      > the iterator protocol when it can be done unobservably in common cases.
      > 
      > There are some incidental changes: A number of CSA macros have been
      > updated to use TNodes, and some Context arguments have been
      > re-arranged to be implicit in Torque.
> 
      > 
      > There are also a number of mjsunit tests written mirroring and
      > expanding on the test262 tests.
      > 
      > BUG=v8:8021
      > 
      > Change-Id: I1c12bee8a2f98c6297b77d5d723910a5e3b630cc
      > Co-authored-by: Daniel Clifford <danno@chromium.org>
      > Co-authored-by: Caitlin Potter <caitp@igalia.com>
      > Reviewed-on: https://chromium-review.googlesource.com/c/1337585
      > Commit-Queue: Daniel Clifford <danno@chromium.org>
      > Reviewed-by: Daniel Clifford <danno@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57667}
      
      Bug: v8:8021
      Change-Id: I706e2d87bfc2f688e833c1b7d40ca82f5d80f5a2
      Reviewed-on: https://chromium-review.googlesource.com/c/1346630Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Cr-Commit-Position: refs/heads/master@{#57798}
      8a9cbdac
  14. 21 Nov, 2018 2 commits
    • Clemens Hammacher's avatar
      Revert "[builtins] Implement Object.fromEntries" · 6abd6f3d
      Clemens Hammacher authored
      This reverts commit a5336471.
      
      Reason for revert: Fails nosnap debug tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/21838
      
      Original change's description:
      > [builtins] Implement Object.fromEntries
      > 
      > Adds the Object.fromEntries() method behind
      > --harmony-object-from-entries.
      > 
      > 
> Includes an initial implementation of the new experimental builtin
      > Object.fromEntries implemented by Daniel Clifford, and
      > has been modified by Caitlin Potter to support a fast case to skip
      > the iterator protocol when it can be done unobservably in common cases.
      > 
      > There are some incidental changes: A number of CSA macros have been
      > updated to use TNodes, and some Context arguments have been
      > re-arranged to be implicit in Torque.
> 
      > 
      > There are also a number of mjsunit tests written mirroring and
      > expanding on the test262 tests.
      > 
      > BUG=v8:8021
      > 
      > Change-Id: I1c12bee8a2f98c6297b77d5d723910a5e3b630cc
      > Co-authored-by: Daniel Clifford <danno@chromium.org>
      > Co-authored-by: Caitlin Potter <caitp@igalia.com>
      > Reviewed-on: https://chromium-review.googlesource.com/c/1337585
      > Commit-Queue: Daniel Clifford <danno@chromium.org>
      > Reviewed-by: Daniel Clifford <danno@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#57667}
      
      TBR=danno@chromium.org,caitp@igalia.com,tebbi@chromium.org
      
      Change-Id: Id0cd8b16131f151a42dffbaca7e59ab17c68ab23
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8021
      Reviewed-on: https://chromium-review.googlesource.com/c/1346116Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57677}
      6abd6f3d
    • Caitlin Potter's avatar
      [builtins] Implement Object.fromEntries · a5336471
      Caitlin Potter authored
      Adds the Object.fromEntries() method behind
      --harmony-object-from-entries.
      
      
Includes an initial implementation of the new experimental builtin
      Object.fromEntries implemented by Daniel Clifford, and
      has been modified by Caitlin Potter to support a fast case to skip
      the iterator protocol when it can be done unobservably in common cases.
      
      There are some incidental changes: A number of CSA macros have been
      updated to use TNodes, and some Context arguments have been
      re-arranged to be implicit in Torque.

      
      There are also a number of mjsunit tests written mirroring and
      expanding on the test262 tests.
      
      BUG=v8:8021
      
      Change-Id: I1c12bee8a2f98c6297b77d5d723910a5e3b630cc
      Co-authored-by: 's avatarDaniel Clifford <danno@chromium.org>
      Co-authored-by: 's avatarCaitlin Potter <caitp@igalia.com>
      Reviewed-on: https://chromium-review.googlesource.com/c/1337585
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarDaniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57667}
      a5336471
  15. 20 Nov, 2018 1 commit
    • Tobias Tebbi's avatar
      [torque] enable multiple inheritance from Torque-generated assemblers · 00ffe4a6
      Tobias Tebbi authored
      This enables more seamless interop between Torque and CSA:
      
      Since CodeStubAssembler can now inherit from the Torque base namespace,
      macros defined in the base namespace can be used in CodeStubAssembler
      macros, even without qualification.
      At the same time, macros in the base namespace can refer to
      CodeStubAssembler macros. The only new limitation is that types defined
      in code-stub-assembler.h cannot be referenced in the signature of macros
      defined in the base namespace, since this would produce a cyclic header
      dependency. A work-around for this woud be to put such types (like int31
      in this CL) into a separate header included by both. I (mis-)used
      code-assembler.h for that.
      Another side-effec is that types and enums defined in CodeStubAssembler
      have to be accessed in a qualified way from Torque.
      
      Other assemblers can now inherit from their Torque equivalent, so
      porting macros into the corresponding Torque namespace doesn't require
      any change to the existing use-sites.
      
      To avoid C++ ambiguities, the Torque-generated assemblers must not define
      anything also defined in Code(Stub)Assembler. This includes the type
      aliases for TNode, PLabel, ...
      My workaround is to qualify everything in the generated C++.
      
      As a drive-by fix, I had to change the formatter to avoid a situation
      where it doesn't compute a fixed point: putting a keyword at the
      beginning of a line removes the '\s' in front of it, so I replaced that
      with '\b'.
      
      Bug: v8:7793
      Change-Id: If3b9e9ad967a181b380a10d5673615606abd1041
      Reviewed-on: https://chromium-review.googlesource.com/c/1341955Reviewed-by: 's avatarDaniel Clifford <danno@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57645}
      00ffe4a6
  16. 19 Nov, 2018 1 commit
  17. 15 Nov, 2018 1 commit
  18. 14 Nov, 2018 1 commit
  19. 09 Nov, 2018 1 commit
  20. 06 Nov, 2018 1 commit
  21. 05 Nov, 2018 1 commit
  22. 31 Oct, 2018 1 commit
  23. 26 Oct, 2018 1 commit
  24. 24 Oct, 2018 1 commit
  25. 17 Oct, 2018 1 commit
    • Hai Dang's avatar
      Add fast path for spreading keys/values of JSMap and JSSet. · fb29a554
      Hai Dang authored
      This CL extends IterableToListWithSymbolLookup with fast paths
      for spreading keys/values iterators of JSMap, and values iterator
      of JSSet (which is also the iterator of Set.prototype.keys() and
      Set.prototype[Symbol.iterator]()). The fast paths are only taken
      if the target still has original iteration behavior.
      
      For iterators it is also required that the iterator is not
      partially consumed. After spreading, to be spec-compliant, the
      iterator is exhausted. Tests are added.
      
      Bug: v8:7980
      Change-Id: Ida74e5ecbbc5ba5488d13a40f2c4bda14c781cbf
      Reviewed-on: https://chromium-review.googlesource.com/c/1276632Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Hai Dang <dhai@google.com>
      Cr-Commit-Position: refs/heads/master@{#56716}
      fb29a554
  26. 24 Sep, 2018 2 commits
  27. 20 Sep, 2018 3 commits
  28. 18 Sep, 2018 1 commit
  29. 22 Aug, 2018 1 commit
  30. 13 Aug, 2018 1 commit
  31. 07 Aug, 2018 1 commit
  32. 18 Jun, 2018 1 commit