v8/test/cctest/heap
Ulan Degenbaev 0400fc2049 [heap] Optimize marking of descriptor arrays.
Now a descriptor array tracks the number of descriptors that were
already marked. The marking visitor of a map only marks the subset
of the descriptors that it needs and that are not already marked.

If a descriptor array is shared between M maps and has N descriptos,
then the number of marking operations is reduced from O(M*N) to O(N).

This patch also adds a marking barrier for descriptors.

The marked descriptor counter in a descriptor array is not cleared
after mark-compact GC. Instead, it embeds two bits from the global
mark-compact epoch counter and is considered 0 if the bits do not match
the current value of the global epoch counter.

Bug: v8:8486
Change-Id: I2a7822a6833f3143e1d351e5e4819c2ef2c07fb0
Reviewed-on: https://chromium-review.googlesource.com/c/1382746
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58372}
2018-12-19 16:49:06 +00:00
..
heap-tester.h [heap] Optimize marking of descriptor arrays. 2018-12-19 16:49:06 +00:00
heap-utils.cc Reland "[heap] Clean-up MemoryChunk allocation area constants." 2018-10-24 13:27:41 +00:00
heap-utils.h [heap] Exclude the owner of the linear allocation area from evacuation. 2016-11-03 12:13:23 +00:00
test-alloc.cc Prepare bottleneck for setting instance descriptors. 2018-11-29 12:50:53 +00:00
test-array-buffer-tracker.cc [ubsan] Port JSReceiver and subclasses to the new design 2018-12-08 04:05:50 +00:00
test-compaction.cc Reland "[heap] Clean-up MemoryChunk allocation area constants." 2018-10-24 13:27:41 +00:00
test-concurrent-marking.cc [heap] Concurrently process wrapper objects 2018-09-19 14:14:06 +00:00
test-embedder-tracing.cc [api] Remove deprecated EmbedderHeapTracer APIs 2018-10-15 16:37:49 +00:00
test-external-string-tracker.cc [cleanup] Mark heap/ methods in subclasses with override. 2018-09-17 15:32:31 +00:00
test-heap.cc [heap] Optimize marking of descriptor arrays. 2018-12-19 16:49:06 +00:00
test-incremental-marking.cc [cleanup] Use the new taskrunner API in the gc 2018-10-04 11:18:32 +00:00
test-invalidated-slots.cc [ubsan] Port JSReceiver and subclasses to the new design 2018-12-08 04:05:50 +00:00
test-lab.cc [ptr-compr] Move Heap::root() to Isolate 2018-10-11 08:59:50 +00:00
test-mark-compact.cc [ubsan] Port JSReceiver and subclasses to the new design 2018-12-08 04:05:50 +00:00
test-page-promotion.cc Reland "[heap] Clean-up MemoryChunk allocation area constants." 2018-10-24 13:27:41 +00:00
test-spaces.cc [objects.h splitting] Move FreeSpace to free-space.h 2018-12-17 15:56:39 +00:00
test-unmapper.cc [cleanup] Mark heap/ methods in subclasses with override. 2018-09-17 15:32:31 +00:00
test-weak-references.cc [ubsan] Port WeakArrayList to the new design 2018-12-03 23:35:12 +00:00