v8/test/cctest/heap
Ben L. Titzer 31cd5d83d3 [arraybuffer] Rearchitect backing store ownership
This CL completely rearchitects the ownership of array buffer backing stores,
consolidating ownership into a {BackingStore} C++ object that is tracked
throughout V8 using unique_ptr and shared_ptr where appropriate.

Overall, lifetime management is simpler and more explicit. The numerous
ways that array buffers were initialized have been streamlined to one
Attach() method on JSArrayBuffer. The array buffer tracker in the
GC implementation now manages std::shared_ptr<BackingStore> pointers,
and the construction and destruction of the BackingStore object itself
handles the underlying page or embedder-allocated memory.

The embedder API remains unchanged for now. We use the
v8::ArrayBuffer::Contents struct to hide an additional shared_ptr to
keep the backing store alive properly, even in the case of aliases
from live heap objects. Thus the embedder has a lower chance of making
a mistake. Long-term, we should move the embedder to a model where they
manage backing stores using shared_ptr to an opaque backing store object.

R=mlippautz@chromium.org
BUG=v8:9380,v8:9221

Change-Id: I48fae5ac85dcf6172a83f252439e77e7c1a16ccd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1584323
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62572}
2019-07-08 16:06:48 +00:00
..
heap-tester.h Makes sure FreeListCategories never contain empty elements 2019-06-07 17:49:25 +00:00
heap-utils.cc [roheap] Set owner_ to nullptr for read-only chunks 2019-06-04 12:06:12 +00:00
heap-utils.h Reland "Move API-related files" 2019-05-17 12:52:27 +00:00
test-alloc.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-array-buffer-tracker.cc [arraybuffer] Rearchitect backing store ownership 2019-07-08 16:06:48 +00:00
test-compaction.cc Enable cpplint 'runtime/references' warning 2019-07-08 09:59:36 +00:00
test-concurrent-marking.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-embedder-tracing.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-external-string-tracker.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-heap.cc [heap] Replace ConcurrentSweepingState with a MemoryChunk local epoch counter. 2019-06-27 13:34:28 +00:00
test-incremental-marking.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-invalidated-slots.cc [ptr-compr] Pass Isolate to JSObject::MigrateToMap() and friends 2019-06-11 09:58:36 +00:00
test-iterators.cc [roheap] Move read_only_heap() from heap to isolate 2019-07-05 14:25:00 +00:00
test-lab.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-mark-compact.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-page-promotion.cc [arraybuffer] Rearchitect backing store ownership 2019-07-08 16:06:48 +00:00
test-spaces.cc PPC: Fixing the EmptyFreeListCategoriesRemoved test on pLinux and AIX 2019-06-12 16:39:56 +00:00
test-unmapper.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-weak-references.cc [torque] Get rid of @noVerifier annotation on PromiseReactionJobTask 2019-06-13 16:24:10 +00:00