1. 26 May, 2020 3 commits
  2. 13 May, 2020 1 commit
  3. 12 May, 2020 2 commits
  4. 08 May, 2020 2 commits
    • Michael Lippautz's avatar
      cppgc: Rename unittest files · f701df1f
      Michael Lippautz authored
      Adjust suffix to "-unittest" like everywhere else in V8.
      
      Accept clang-format suggested changes.
      
      Bug: chromium:1056170
      Change-Id: I54c1396e79aff87c052233853d7fe560337eeecf
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190410
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Auto-Submit: Michael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67672}
      f701df1f
    • Michael Lippautz's avatar
      cppgc: Implement allocation on custom spaces · 611d1bb9
      Michael Lippautz authored
      This patch provides infrastructure to pin object types to specific
      spaces. This allows embedders to create mutual exclusive arenas for
      certain (base) types. In future, this will also be used to provide
      sliding-window compaction on certain custom spaces.
      
      We mainly preserve the existing infrastructure with the difference
      that spaces are now slightly more dynamic than in Blink as they are
      kept in a vector instead of a fixed-size array.
      
      The mechanism differs from Blink in that it does not allow the user
      object to call allocation methods directly but instead provides a
      trait that can be overridden to specify a custom space.
      
      The patch preserves templatization for objects that do not go into
      custom spaces to safe a branch in the allocation hot path.
      
      Change-Id: I08aa6932348e2d6258e19c4a32d189865f459f02
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187611
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67666}
      611d1bb9
  5. 07 May, 2020 3 commits
    • Omer Katz's avatar
      Reland "cppgc: Initial marking loop" · f197fd27
      Omer Katz authored
      This reverts commit dc1af6a2.
      
      Reason for revert: Diff in patchset 2
      
      Original change's description:
      > Revert "cppgc: Initial marking loop"
      > 
      > This reverts commit fb9a19fe.
      > 
      > Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028
      > 
      > Original change's description:
      > > cppgc: Initial marking loop
      > > 
      > > This CL introduces:
      > > - Worklist
      > > - MarkingHandler to manage gc marking phase
      > > - Integration into CollectGarbage for atomic pause GC
      > > - MarkingVisitor for main thread marking
      > > 
      > > Still missing from this CL:
      > > - Proper handling for stack scanning
      > > - Handling of previously not fully constructed objects
      > > 
      > > Bug: chromium:1056170
      > > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      > > Commit-Queue: Omer Katz <omerkatz@chromium.org>
      > > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#67642}
      > 
      > TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org
      > 
      > Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: chromium:1056170
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67643}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org,nicohartmann@chromium.org
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: chromium:1056170
      Change-Id: I54e963e2aeaaf16069bdcdb019c0ac65e28ef6e2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187733Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67654}
      f197fd27
    • Nico Hartmann's avatar
      Revert "cppgc: Initial marking loop" · dc1af6a2
      Nico Hartmann authored
      This reverts commit fb9a19fe.
      
      Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/11028
      
      Original change's description:
      > cppgc: Initial marking loop
      > 
      > This CL introduces:
      > - Worklist
      > - MarkingHandler to manage gc marking phase
      > - Integration into CollectGarbage for atomic pause GC
      > - MarkingVisitor for main thread marking
      > 
      > Still missing from this CL:
      > - Proper handling for stack scanning
      > - Handling of previously not fully constructed objects
      > 
      > Bug: chromium:1056170
      > Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      > Commit-Queue: Omer Katz <omerkatz@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#67642}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org
      
      Change-Id: I666481f44119771be685bf2555aa0dd5eda83a01
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187502Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67643}
      dc1af6a2
    • Omer Katz's avatar
      cppgc: Initial marking loop · fb9a19fe
      Omer Katz authored
      This CL introduces:
      - Worklist
      - MarkingHandler to manage gc marking phase
      - Integration into CollectGarbage for atomic pause GC
      - MarkingVisitor for main thread marking
      
      Still missing from this CL:
      - Proper handling for stack scanning
      - Handling of previously not fully constructed objects
      
      Bug: chromium:1056170
      Change-Id: I70ac8534dfb898777cf3a06e3119cac8072174fd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170526
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67642}
      fb9a19fe
  6. 05 May, 2020 1 commit
  7. 29 Apr, 2020 1 commit
  8. 28 Apr, 2020 1 commit
  9. 24 Apr, 2020 1 commit
  10. 22 Apr, 2020 1 commit
  11. 17 Apr, 2020 2 commits
  12. 15 Apr, 2020 1 commit
  13. 14 Apr, 2020 3 commits
  14. 09 Apr, 2020 5 commits
  15. 07 Apr, 2020 1 commit
  16. 06 Apr, 2020 3 commits
  17. 03 Apr, 2020 1 commit
  18. 02 Apr, 2020 1 commit
  19. 31 Mar, 2020 1 commit
  20. 30 Mar, 2020 1 commit
  21. 27 Mar, 2020 1 commit
  22. 25 Mar, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Add HeapObjectHeader · 0a64a52b
      Michael Lippautz authored
      This adds HeapObjectHeader, a meta object that is put in front of
      every managed object. HeapObjectHeader provides accessors for:
      1. GCInfoIndex
      2. In construction bit
      3. size
      4. Mark bit
      
      Meta info is distributed among two uint16_t fields as (1.,2.) and
      (3.,4.). This is convenient as the non-bit accessors (size,
      GCInfoIndex) are constant during marking.
      
      Object layout see heap-object-header.h.
      
      Note: The current implementation does not bypass ASAN poisoning and
      assumes an unpoisoned header whenever performing an access.
      
      Bug: chromium:1056170
      Change-Id: I753f15467ed5c2b22b47e64d3aa5a3c1baddf8e1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2116031
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66861}
      0a64a52b
  23. 24 Mar, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Add GCInfo machinery · 4132d725
      Michael Lippautz authored
      GCInfo and its related infrastructure is used to record information
      about types. Currently, we store finalization and vtable information.
      Future changes will introduce naming and tracing, similar to Oilpan in
      Blink.
      
      Information is stored in a process-wide global table that is
      maintained at runtime. For static builds such information can be
      recorded in the binary without the runtime overhead which is future
      work.
      
      This ports `third_party/blink/renderer/platform/heap/gc_info.{h,cc}`
      on a semantic level. In addition to adjusting to V8's needs, we also
      re-commit the already filled parts of the info table as read-only when
      possible, making it harder to override type information.
      
      Bug: chromium:1056170
      Change-Id: Ib01eb24e6f8a94a4a647efde7af37689f8c20ba2
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2111214
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66847}
      4132d725
  24. 23 Mar, 2020 1 commit
  25. 16 Mar, 2020 1 commit
    • Dominik Inführ's avatar
      [heap] Introduce safepoint mechanism · 64759d44
      Dominik Inführ authored
      Add safepoint mechanism to stop concurrent threads and bring them to a
      safepoint. Threads are stopped before the safepoint and after e.g. the
      GC resumed again. Each thread needs to be stopped in a safepoint, such
      that all roots can be iterated safely.
      
      Running threads need to be cooperative and are required to perform
      regular safepoint polls.
      
      The last version of this CL was reverted because safepoint_requested_
      wasn't initialized (see https://crrev.com/c/2105634).
      
      Bug: v8:10315
      Change-Id: I6ef244c0fb31c178589b5e3d1c62687a8dd65768
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2105635Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66732}
      64759d44