From 25430fd2478d3ea60e9407d7dd384db514f9bd03 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 6 May 2017 19:22:47 +0200 Subject: [PATCH] v8: backport pieces from 99743ad460e MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport new virtual methods from 99743ad460e (“[wasm] Transferrable modules”). Ref: https://codereview.chromium.org/2748473004 Ref: https://github.com/v8/v8/commit/99743ad460e PR-URL: https://github.com/nodejs/node/pull/12875 Reviewed-By: James M Snell --- deps/v8/include/v8.h | 10 ++++++++++ deps/v8/src/api.cc | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 7ef6f67d6faa2c..3dd9de3ba89108 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -108,6 +108,7 @@ class Private; class Uint32; class Utils; class Value; +class WasmCompiledModule; template class Local; template class MaybeLocal; @@ -1707,6 +1708,8 @@ class V8_EXPORT ValueSerializer { virtual Maybe GetSharedArrayBufferId( Isolate* isolate, Local shared_array_buffer); + virtual Maybe GetWasmModuleTransferId( + Isolate* isolate, Local module); /* * Allocates memory for the buffer of at least the size provided. The actual * size (which may be greater or equal) is written to |actual_size|. If no @@ -1817,6 +1820,13 @@ class V8_EXPORT ValueDeserializer { * MaybeLocal() returned. */ virtual MaybeLocal ReadHostObject(Isolate* isolate); + + /* + * Get a WasmCompiledModule given a transfer_id previously provided + * by ValueSerializer::GetWasmModuleTransferId + */ + virtual MaybeLocal GetWasmModuleFromId( + Isolate* isolate, uint32_t transfer_id); }; ValueDeserializer(Isolate* isolate, const uint8_t* data, size_t size); diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 8c49debfd7bc69..1e82a33c726348 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -3119,6 +3119,11 @@ Maybe ValueSerializer::Delegate::GetSharedArrayBufferId( return Nothing(); } +Maybe ValueSerializer::Delegate::GetWasmModuleTransferId( + Isolate* v8_isolate, Local module) { + return Nothing(); +} + void* ValueSerializer::Delegate::ReallocateBufferMemory(void* old_buffer, size_t size, size_t* actual_size) { @@ -3207,6 +3212,15 @@ MaybeLocal ValueDeserializer::Delegate::ReadHostObject( return MaybeLocal(); } +MaybeLocal ValueDeserializer::Delegate::GetWasmModuleFromId( + Isolate* v8_isolate, uint32_t id) { + i::Isolate* isolate = reinterpret_cast(v8_isolate); + isolate->ScheduleThrow(*isolate->factory()->NewError( + isolate->error_function(), + i::MessageTemplate::kDataCloneDeserializationError)); + return MaybeLocal(); +} + struct ValueDeserializer::PrivateData { PrivateData(i::Isolate* i, i::Vector data, Delegate* delegate) : isolate(i), deserializer(i, data, delegate) {}