| Index: src/api.cc
 | 
| diff --git a/src/api.cc b/src/api.cc
 | 
| index 6bb15d2e268a01eefff367e45a2eee5cdb823f6a..3a72b360fb7fefcb17f218b2e8ca16ae14369d13 100644
 | 
| --- a/src/api.cc
 | 
| +++ b/src/api.cc
 | 
| @@ -7246,10 +7246,15 @@ MaybeLocal<WasmCompiledModule> WasmCompiledModule::Compile(
 | 
|    i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
 | 
|    i::wasm::ErrorThrower thrower(i_isolate, "WasmCompiledModule::Deserialize()");
 | 
|    i::SeqOneByteString* data = i::SeqOneByteString::cast(*module_bytes);
 | 
| +  // Copy bytes such that GC can not move it during construction of the module.
 | 
| +  // TODO(wasm): Avoid this additional copy.
 | 
| +  i::ScopedVector<unsigned char> bytes_copy(data->length());
 | 
| +  memcpy(bytes_copy.start(), data->GetChars(), data->length());
 | 
|    i::MaybeHandle<i::JSObject> maybe_compiled =
 | 
|        i::wasm::CreateModuleObjectFromBytes(
 | 
| -          i_isolate, data->GetChars(), data->GetChars() + data->length(),
 | 
| -          &thrower, i::wasm::ModuleOrigin::kWasmOrigin);
 | 
| +          i_isolate, bytes_copy.start(),
 | 
| +          bytes_copy.start() + bytes_copy.length(), &thrower,
 | 
| +          i::wasm::ModuleOrigin::kWasmOrigin);
 | 
|    if (maybe_compiled.is_null()) return MaybeLocal<WasmCompiledModule>();
 | 
|    return Local<WasmCompiledModule>::Cast(
 | 
|        Utils::ToLocal(maybe_compiled.ToHandleChecked()));
 | 
| 
 |