| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 22615e0274189cf2465f8c7411474a69972bf49f..c13aa6258bdd1975025f833631500864365c8bb8 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -7224,12 +7224,15 @@ WasmCompiledModule::SerializedModule WasmCompiledModule::Serialize() {
|
|
|
| MaybeLocal<WasmCompiledModule> WasmCompiledModule::Deserialize(
|
| Isolate* isolate,
|
| - const WasmCompiledModule::CallerOwnedBuffer& serialized_module) {
|
| + const WasmCompiledModule::CallerOwnedBuffer& serialized_module,
|
| + const WasmCompiledModule::CallerOwnedBuffer& wire_bytes) {
|
| int size = static_cast<int>(serialized_module.second);
|
| i::ScriptData sc(serialized_module.first, size);
|
| i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| i::MaybeHandle<i::FixedArray> maybe_compiled_part =
|
| - i::WasmCompiledModuleSerializer::DeserializeWasmModule(i_isolate, &sc);
|
| + i::WasmCompiledModuleSerializer::DeserializeWasmModule(
|
| + i_isolate, &sc,
|
| + {wire_bytes.first, static_cast<int>(wire_bytes.second)});
|
| i::Handle<i::FixedArray> compiled_part;
|
| if (!maybe_compiled_part.ToHandle(&compiled_part)) {
|
| return MaybeLocal<WasmCompiledModule>();
|
| @@ -7245,24 +7248,9 @@ MaybeLocal<WasmCompiledModule> WasmCompiledModule::DeserializeOrCompile(
|
| Isolate* isolate,
|
| const WasmCompiledModule::CallerOwnedBuffer& serialized_module,
|
| const WasmCompiledModule::CallerOwnedBuffer& wire_bytes) {
|
| - MaybeLocal<WasmCompiledModule> ret = Deserialize(isolate, serialized_module);
|
| + MaybeLocal<WasmCompiledModule> ret =
|
| + Deserialize(isolate, serialized_module, wire_bytes);
|
| if (!ret.IsEmpty()) {
|
| - // TODO(mtrofin): once we stop taking a dependency on Deserialize,
|
| - // clean this up to avoid the back and forth between internal
|
| - // and external representations.
|
| - i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| - i::Vector<const uint8_t> str(wire_bytes.first,
|
| - static_cast<int>(wire_bytes.second));
|
| - i::Handle<i::SeqOneByteString> wire_bytes_as_string(
|
| - i::SeqOneByteString::cast(
|
| - *i_isolate->factory()->NewStringFromOneByte(str).ToHandleChecked()),
|
| - i_isolate);
|
| -
|
| - i::Handle<i::JSObject> obj =
|
| - i::Handle<i::JSObject>::cast(Utils::OpenHandle(*ret.ToLocalChecked()));
|
| - i::Handle<i::wasm::WasmCompiledModule> compiled_part =
|
| - i::handle(i::wasm::WasmCompiledModule::cast(obj->GetInternalField(0)));
|
| - compiled_part->set_module_bytes(wire_bytes_as_string);
|
| return ret;
|
| }
|
| return Compile(isolate, wire_bytes.first, wire_bytes.second);
|
|
|