- 01 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Move inlined methods to .h files accordingly, follwing style guide rule: https://google.github.io/styleguide/cppguide.html#Self_contained_Headers Bug: chromium:1056170 Change-Id: Ia6c4f82bd4352d507eece36e540ad0d318e56920 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2273858Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68627}
-
- 11 Jun, 2020 1 commit
-
-
Michael Lippautz authored
Since the registration requires calling into the library, there's no reason to get the heap through a magic getter on API level. Bug: chromium:1056170 Change-Id: I8d2b1d0fcee8c855908bd26c71a22826c493ed29 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238568 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68315}
-
- 10 Jun, 2020 2 commits
-
-
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:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68310}
-
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:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68286}
-
- 14 May, 2020 3 commits
-
-
Omer Katz authored
This reverts commit 580917d2. Reason for revert: fix in patchset 2 Original change's description: > Revert "cppgc: Stack scanning using ObjectStartBitmap" > > This reverts commit d3a72e3c. > > Reason for revert: MSAN failures (https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/32360) > > Original change's description: > > cppgc: Stack scanning using ObjectStartBitmap > > > > This CL implements stack scanning for cppgc. > > Given a value on the stack, the MarkingVisitor uses > > PageBackend::Lookup to checks whether that address is on > > the heap. If it is, BasePage::TryObjectHeaderFromInnerAddress > > (introduced in this CL) is used to get the relevant object > > header. Note that random addresses on the heap might point to > > free memory, object-start-bitmap, etc. > > > > If a valid object header is found: > > * If the object is not in construction, the GCInfoIndex is used > > the get the relevant Trace method and the object is traced. > > * Otherwise, the object is conservatively scanned - i.e. the > > payload of the object is iterated word by word and each word is > > treated as a possible pointer. > > > > Only addresses pointing to the payload on non-free objects are > > traced. > > > > BasePage::TryObjectHeaderFromInnerAddress assumes on LAB on the > > relevant space, thus all LABs are reset before scanning the stack. > > > > Bug: chromium:1056170 > > Change-Id: I172850f6f1bbb6f0efca8e44ad8fdfe222977b9f > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190426 > > Commit-Queue: Omer Katz <omerkatz@chromium.org> > > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#67795} > > TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org > > Change-Id: I3caef6f9f55911fd1a86e895c3495d1b98b1eac2 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1056170 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201136 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67796} TBR=ulan@chromium.org,mlippautz@chromium.org,leszeks@chromium.org,bikineev@chromium.org,omerkatz@chromium.org # Not skipping CQ checks because this is a reland. Bug: chromium:1056170 Change-Id: If7ea4fe5cb794c07544d5545f5d6548e3375d3ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201137Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67803}
-
Leszek Swirski authored
This reverts commit d3a72e3c. Reason for revert: MSAN failures (https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/32360) Original change's description: > cppgc: Stack scanning using ObjectStartBitmap > > This CL implements stack scanning for cppgc. > Given a value on the stack, the MarkingVisitor uses > PageBackend::Lookup to checks whether that address is on > the heap. If it is, BasePage::TryObjectHeaderFromInnerAddress > (introduced in this CL) is used to get the relevant object > header. Note that random addresses on the heap might point to > free memory, object-start-bitmap, etc. > > If a valid object header is found: > * If the object is not in construction, the GCInfoIndex is used > the get the relevant Trace method and the object is traced. > * Otherwise, the object is conservatively scanned - i.e. the > payload of the object is iterated word by word and each word is > treated as a possible pointer. > > Only addresses pointing to the payload on non-free objects are > traced. > > BasePage::TryObjectHeaderFromInnerAddress assumes on LAB on the > relevant space, thus all LABs are reset before scanning the stack. > > Bug: chromium:1056170 > Change-Id: I172850f6f1bbb6f0efca8e44ad8fdfe222977b9f > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190426 > Commit-Queue: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67795} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: I3caef6f9f55911fd1a86e895c3495d1b98b1eac2 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201136Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#67796}
-
Omer Katz authored
This CL implements stack scanning for cppgc. Given a value on the stack, the MarkingVisitor uses PageBackend::Lookup to checks whether that address is on the heap. If it is, BasePage::TryObjectHeaderFromInnerAddress (introduced in this CL) is used to get the relevant object header. Note that random addresses on the heap might point to free memory, object-start-bitmap, etc. If a valid object header is found: * If the object is not in construction, the GCInfoIndex is used the get the relevant Trace method and the object is traced. * Otherwise, the object is conservatively scanned - i.e. the payload of the object is iterated word by word and each word is treated as a possible pointer. Only addresses pointing to the payload on non-free objects are traced. BasePage::TryObjectHeaderFromInnerAddress assumes on LAB on the relevant space, thus all LABs are reset before scanning the stack. Bug: chromium:1056170 Change-Id: I172850f6f1bbb6f0efca8e44ad8fdfe222977b9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2190426 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#67795}
-
- 13 May, 2020 1 commit
-
-
Michael Lippautz authored
This is a reland of 3df36990 Original change's description: > cppgc: Port ObjectStartBitmap > > This ports ObjectStartBitmap from Blink. > > Bug: chromium:1056170 > Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 > Commit-Queue: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: 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@{#67735} Bug: chromium:1056170 Change-Id: I6e2fd99e96bebe3060f4feb8503ab04c0d452d51 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2198986Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67772}
-
- 12 May, 2020 2 commits
-
-
Leszek Swirski authored
This reverts commit 3df36990. Reason for revert: Breaks MSVC bot (https://cr-buildbucket.appspot.com/build/8880517266974148704) Original change's description: > cppgc: Port ObjectStartBitmap > > This ports ObjectStartBitmap from Blink. > > Bug: chromium:1056170 > Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 > Commit-Queue: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: 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@{#67735} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: Iaea15b11c0ee7b599fe1f275aded7414bce428ac No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196321Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#67742}
-
Anton Bikineev authored
This ports ObjectStartBitmap from Blink. Bug: chromium:1056170 Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
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@{#67735}
-
- 11 May, 2020 1 commit
-
-
Michael Lippautz authored
Bug: chromium:1056170 Change-Id: I99d073e268f5779f0985d6197432c50036060b60 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2192663 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67713}
-
- 08 May, 2020 2 commits
-
-
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:
Omer Katz <omerkatz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67672}
-
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:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67666}
-
- 07 May, 2020 1 commit
-
-
Anton Bikineev authored
Returned LABs can be of size less than sizeof(FreeListEntry). Bug: chromium:1056170 Change-Id: Ib4094701472ce7cb5ee20b9fe632651570832dc9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2183051 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67635}
-
- 05 May, 2020 1 commit
-
-
Anton Bikineev authored
This ports sweeper logic from Blink into a separate entity - Sweeper. Concurrent sweeping is in a followup. Bug: chromium:1056170 Change-Id: I41196225f0d882cb0ab5190d23e297ee2498df6b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2167858 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67581}
-
- 28 Apr, 2020 1 commit
-
-
Anton Bikineev authored
This adds the following: 1) Heap object structure classes: RawHeap, BaseArena and BasePage. - freelist - linear allocation block 2) ObjectAllocator, a class responsible for object (and page) allocation. The design doc with UML design: https://bit.ly/2VVTcqc User defined arenas are followup. Bug: chromium:1056170 Change-Id: I69a82974bd08e3cf3da90041b1628297cc890891 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2167392 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
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@{#67425}
-
- 09 Apr, 2020 2 commits
-
-
Omer Katz authored
GetHeapFromPayload returned the page header address instead of the value of the first field of the header. Bug: chromium:1056170 Change-Id: I4de5be975accced32460d6fab91543e6a5b07ba0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2143825 Auto-Submit: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67079}
-
Michael Lippautz authored
This CL provides a basic allocator that allocates normal-sized objects on pages without ever reusing them. This allows for already using the backref from page to heap which is used in some critical places (pre-finalizers, write barrier, Persistent). Bug: chromium:1056170 Change-Id: Ifada9b7e984827906c267d1a3a521576587feaeb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2141736 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67076}
-