v8/test/unittests/wasm
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
..
control-transfer-unittest.cc Enable cpplint 'runtime/references' warning 2019-07-08 09:59:36 +00:00
decoder-unittest.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
function-body-decoder-unittest.cc [wasm] Rename (Get|Set)Table to Table(Get|Set) 2019-07-08 12:55:14 +00:00
leb-helper-unittest.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
loop-assignment-analysis-unittest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
module-decoder-unittest.cc Enable cpplint 'runtime/references' warning 2019-07-08 09:59:36 +00:00
OWNERS Reduce wasm OWNERS to current team members 2018-10-15 14:47:49 +00:00
streaming-decoder-unittest.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
trap-handler-posix-unittest.cc [wasm] Implement trap handler on Windows 2018-10-30 10:25:37 +00:00
trap-handler-win-unittest.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
trap-handler-x64-unittest.cc [arraybuffer] Rearchitect backing store ownership 2019-07-08 16:06:48 +00:00
wasm-code-manager-unittest.cc [arraybuffer] Rearchitect backing store ownership 2019-07-08 16:06:48 +00:00
wasm-compiler-unittest.cc Move code generation related files to src/codegen 2019-05-21 10:33:39 +00:00
wasm-macro-gen-unittest.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
wasm-module-builder-unittest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
wasm-opcodes-unittest.cc [wasm] [test] [cleanup] Add missing undefs 2017-09-11 12:09:50 +00:00
wasm-text-unittest.cc [wasm] Remove non-const arguments from module builder 2019-07-08 11:42:59 +00:00