- 16 May, 2022 1 commit
-
-
Nikolaos Papaspyrou authored
This CL adds to the existing experimental implementation of the object start bitmap, that is evaluated as a mechanism for resolving inner pointers (behind the flag v8_enable_conservative_stack_scanning). It fixes method ObjectStartBitmap::FindBasePtr to ensure that the correct base pointer is returned, even if the bitmap is not fully populated (e.g., with object evacuation or inline object allocation). This method now recalculates the part of the bitmap that is required for returning the correct result, by iterating through objects of the page. A special constructor has been introduced to the PagedSpaceObjectIterator for this purpose. It also moves the existing inline methods of ObjectStartBitmap to a new -inl.h header file, to avoid circular dependencies. Bug: v8:12851 Change-Id: Iabd0df020bee3bb63ef9d4888591b25d24d79dd9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3641179Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80538}
-
- 05 May, 2022 1 commit
-
-
Nikolaos Papaspyrou authored
This CL cleans up the existing experimental implementation of conservative stack scanning. It retains the object start bitmap, to evaluate it as a mechanism for resolving inner pointers, and the conservative stack scanning visitor (which is currently not used). The flag v8_enable_conservative_stack_scanning is kept and will be used for experimental purposes. It currently does not imply any other flag. Bug: v8:10614 Bug: v8:12851 Change-Id: Id0ae0f437ed2601eed9ec634d2d1dd2f030d814e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3602516Reviewed-by: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Cr-Commit-Position: refs/heads/main@{#80365}
-
- 01 Sep, 2020 1 commit
-
-
Jake Hughes authored
When enabled with the v8_enable_conservative_stack_scanning flag, a snapshot of the call stack upon entry to GC is used to determine part of the root-set. When the collector walks the stack, it looks at each value and determines whether it could be a potential on-heap object pointer. This is very experimental. For conservative stack scanning to work, direct handles must be implemented. Bug: v8:10614 Change-Id: Id4209cfbe76ef02239c903fabcb7f677b32fc977 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375201 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69644}
-
- 31 Aug, 2020 1 commit
-
-
Jake Hughes authored
With conservative stack scanning enabled, a snapshot of the call stack upon entry to GC will be used to determine part of the root-set. When the collector walks the stack, it looks at each value and determines whether it could be a potential on-heap object pointer. However, unlike with Handles, these on-stack pointers aren't guaranteed to point to the start of the object: the compiler may decide hide these pointers, and create interior pointers in C++ frames which the GC doesn't know about. The solution to this is to include an object start bitmap in the header of each page. Each bit in the bitmap represents a word in the page payload which is set when an object is allocated. This means that when the collector finds an arbitrary potential pointer into the page, it can walk backwards through the bitmap until it finds the relevant object's base pointer. To prevent the bitmap becoming stale after compaction, it is rebuilt during object sweeping. This is experimental, and currently only works with inline allocation disabled, and single generational collection. Bug: v8:10614 Change-Id: I28ebd9562f58f335f8b3c2d1189cdf39feaa1f52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375195 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#69615}
-