1. 20 Jun, 2022 1 commit
  2. 13 Jun, 2022 1 commit
  3. 10 Jun, 2022 1 commit
    • Anton Bikineev's avatar
      cppgc: Fix caged-heap reservation when pointer compression is enabled · ae41f7df
      Anton Bikineev authored
      Currently, PageAllocator assumes that FreePages(start, size) will always
      be called on the same region that was passed to AllocatePages(start,
      size). This assumption is made in:
      1) leak-sanitizer (LsanPageAllocator) that checks it explicitly,
      2) on Windows, FreePages() calls VirtualFree() with zero-size and
         MEM_RELEASE, which causes the entire reservation to be freed.
      
      The CL temporarily fixes the bot failures just by holding the unneeded
      half and adds a TODO to return the unneded part back to the OS.
      
      Bug: chromium:1325007
      Change-Id: I2bd878876d43d693cf2138020f410ffe1615b4e9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3695363Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Anton Bikineev <bikineev@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#81059}
      ae41f7df
  4. 09 Jun, 2022 1 commit
  5. 29 Apr, 2022 1 commit
    • Anton Bikineev's avatar
      cppgc: young-gen: Add runtime option for young generation · c7dfa3fa
      Anton Bikineev authored
      The CL introduces a new option --cppgc-young-generation. This option
      can't be enabled statically, because V8 options are parsed after heap
      initialization. The CL changes minor GC so that it can be enabled
      dynamically. The way it works is as follows:
      - the user calls YoungGenerationEnabler::Enable();
      - a heap checks in the next atomic pause whether the flag was enabled;
      - if so, the heap enables young generation for itself.
      
      To avoid barrier regressions without young-generation enabled, the CL changes the meaning of the global flag is-any-incremental-or-concurrent-marking to is-barrier-enabled.
      
      The runtime option would enable us to test young generation on try-
      and performance-bots.
      
      Bug: chromium:1029379
      Change-Id: I664cccdcd208225ffcbf9901f1284b56d088c5c3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3607993
      Commit-Queue: Anton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80274}
      c7dfa3fa
  6. 26 Apr, 2022 1 commit
  7. 13 Apr, 2022 1 commit
  8. 12 Oct, 2021 1 commit
    • Michael Lippautz's avatar
      cppgc: Add support for double-word aligned allocations · 62418750
      Michael Lippautz authored
      Adds support for double-word aligned, i.e., 8 bytes on 32-bit
      platforms and 16 bytes on 64-bit platforms, objects in Oilpan.
      
      Changes:
      - Adds generic alignment APIs and overrides.
      - Internal logic to support double-word aligned allocations on LABs.
      - Adjusts natural alignment of large objects to follow double-word.
      - Adds a new static_assert() that suggests users file a bug if higher
        alignment is required.
      - Statically checks that no allocations with non-default alignment
        target custom spaces that support compaction.
      
      Bug: v8:12295
      Change-Id: I05766ce2349055d5d78b68919be00e7ee91d5505
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218150Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77348}
      62418750
  9. 07 Oct, 2021 1 commit
  10. 16 Sep, 2021 1 commit
  11. 01 Sep, 2021 1 commit
  12. 31 Aug, 2021 2 commits
  13. 12 Jul, 2021 2 commits
  14. 28 May, 2021 1 commit
  15. 26 May, 2021 1 commit
  16. 25 May, 2021 1 commit
  17. 12 May, 2021 1 commit
  18. 08 Mar, 2021 1 commit
  19. 16 Feb, 2021 1 commit
  20. 28 Jan, 2021 1 commit
  21. 27 Jan, 2021 1 commit
  22. 19 Jan, 2021 1 commit
  23. 30 Nov, 2020 1 commit
  24. 20 Nov, 2020 1 commit
    • Omer Katz's avatar
      Reland "cppgc: Use tracing scopes" · 2c66a0ef
      Omer Katz authored
      This reverts commit 64bf4c53.
      
      Reason for revert: fix in patchset 2
      
      Original change's description:
      > Revert "cppgc: Use tracing scopes"
      >
      > This reverts commit 548fe208.
      >
      > Reason for revert: Issues on Mac64: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31710
      >
      > Original change's description:
      > > cppgc: Use tracing scopes
      > >
      > > The scopes themselves mostly have the same coverage as current scopes in
      > > blink. A few exception due to encapsulation exist and are highlighted as
      > > comments on the CL.
      > >
      > > Bug: chromium:1056170
      > > Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552
      > > 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@{#71285}
      >
      > TBR=ulan@chromium.org,mlippautz@chromium.org,omerkatz@chromium.org
      >
      > Change-Id: I20dce9309dcaeff6ea61bdc51df3a2f62c2a103f
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: chromium:1056170
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550782
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#71289}
      
      TBR=ulan@chromium.org,mlippautz@chromium.org,clemensb@chromium.org,omerkatz@chromium.org
      
      # Not skipping CQ checks because this is a reland.
      
      Bug: chromium:1056170
      Change-Id: I9c57cdb3b0d310366cdf3e6fbcd1254fdc363163
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550666
      Auto-Submit: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71305}
      2c66a0ef
  25. 19 Nov, 2020 2 commits
  26. 20 Aug, 2020 1 commit
  27. 19 Aug, 2020 1 commit
    • Omer Katz's avatar
      cppgc: Initial incremental marking implementation. · 132727fd
      Omer Katz authored
      This CL adds a basic implementation of incremental marking for standalone GC.
      Followup CLs include:
      * Use bytes instead of time as deadline
      * Port incremental marking schedule from blink
      * Mark on allocation
      * Guarantees for progres/termination for standalone GC
      * etc...
      
      Calling StartIncrementalGarbageCollection triggers StartMarking which
      schedules incremental marking as non-nestable tasks.
      For unified heap, marking will continue running until it runs out of
      work but it won't finalize independently.
      For standalone, when incremental runs out of work it will schedule a new
      task in which it will finalize marking and trigger the rest of the GC.
      Users of standalone can also force finalization before incremental
      marking as finished using FinalizeIncrementalGarbageCollectionIfRunning.
      Calling CollectGarbage would also finalize an on-going incremental GC
      if one exists. Otherwise it will trigger an atomic GC.
      
      See the following doc for explanation of the various methods:
      https://docs.google.com/document/d/1ZhJY2fOoD8sH53ZxMh2927Zl8sXqA7azJgcQTWx-YKs/edit?usp=sharing
      
      Bug: chromium:1056170
      Change-Id: I75ead414eb9da9f8b7f71c4638b9830fce7708ca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298009
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69480}
      132727fd
  28. 01 Jul, 2020 1 commit
  29. 17 Jun, 2020 1 commit
  30. 10 Jun, 2020 2 commits
    • Michael Lippautz's avatar
      cppgc: Introduce AllocationHandle · 935d9151
      Michael Lippautz authored
      Unified heap support in V8 requires having another (at least internal)
      heap that implements a unfied garbage collection strategy. This will
      not re-use the already existing cppgc::Heap because there should be no
      way in creating such a heap externally or scheduling stand-alone
      garbage collections.
      
      In order to have a common token, this CL introduces AllocationHandle
      which can be passed to MakeGarbageCollected to allocate C++ objects.
      V8 (soon) and the stand-alone heap both have methods to retrieve such
      a handle.
      
      This works around a problem with creating diamond class hierarchies
      when a base class would be exposed on the public API level.
      
      Fast paths for Blink are still possible because allocation handles can
      be cached the same way (e.g. global, or TLS) as a heap can be cached.
      
      Tbr: yangguo@chromium.org
      Bug: chromium:1056170
      Change-Id: I8e9472a2c24ef82d1178953e8429b1fd8a2344bc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238027
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68310}
      935d9151
    • Anton Bikineev's avatar
      cppgc: Fix byte accounting for large pages and reset labs · c036b6cd
      Anton Bikineev authored
      This fixes two issues:
      - labs resetting didn't account bytes as beeing freed;
      - large object were not accounted.
      
      The CL introduces a single bottleneck for labs resetting in
      ObjectAllocator, which is aware of StatsCollector. This way
      NormalSpace is treated as a value object and all invariants
      are maintained by ObjectAllocator (and Sweeper).
      
      Bug: chromium:1056170
      Change-Id: I027cc01fe5028a3dfa81905d7ea53dd12d1c1f20
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237629
      Commit-Queue: Anton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68286}
      c036b6cd
  31. 03 Jun, 2020 1 commit
    • Michael Lippautz's avatar
      cppgc: Add HeapStatsCollector · ab671ee8
      Michael Lippautz authored
      This ports HeapStatsCollector (former ThreadHeapStatsCollector) from
      Blink. The CL only ports accounting of allocated object size which is
      needed for a simple growing strategy in a follow up.
      
      HeapStatsCollector is a global dependency for most sub components as
      it provides infrastructure for measuring time (through trace scopes)
      and space.
      
      The general idea of HeapStatsCollector is to act as sink where all sub
      components push time and space information. This information is then
      gathered and made available via an event that is implemented as POD.
      Time-dependent info is available through regular getters (pull) and
      observers (push).
      
      Change-Id: I40b4d76e1a40c56e5df1a7353622318cde730e26
      Bug: chromium:1056170
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225902
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#68150}
      ab671ee8
  32. 13 May, 2020 1 commit
  33. 12 May, 2020 2 commits
  34. 08 May, 2020 1 commit
    • 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
  35. 05 May, 2020 1 commit