diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index c7cffaca444941..57fbc629644c09 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 6 #define V8_MINOR_VERSION 9 #define V8_BUILD_NUMBER 427 -#define V8_PATCH_LEVEL 22 +#define V8_PATCH_LEVEL 23 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/wasm/wasm-js.cc b/deps/v8/src/wasm/wasm-js.cc index ef316c64d06d16..7ff27dc769b41b 100644 --- a/deps/v8/src/wasm/wasm-js.cc +++ b/deps/v8/src/wasm/wasm-js.cc @@ -729,6 +729,7 @@ void WebAssemblyInstantiate(const v8::FunctionCallbackInfo& args) { if (!i::wasm::IsWasmCodegenAllowed(i_isolate, i_isolate->native_context())) { thrower.CompileError("Wasm code generation disallowed by embedder"); compilation_resolver->OnCompilationFailed(thrower.Reify()); + return; } // Asynchronous compilation handles copying wire bytes if necessary. diff --git a/deps/v8/test/mjsunit/wasm/disallow-codegen.js b/deps/v8/test/mjsunit/wasm/disallow-codegen.js index 9ac2bcd103ec16..f1303e845fe215 100644 --- a/deps/v8/test/mjsunit/wasm/disallow-codegen.js +++ b/deps/v8/test/mjsunit/wasm/disallow-codegen.js @@ -65,6 +65,16 @@ async function AsyncTestOk() { promise, module => assertInstanceof(module, WebAssembly.Module)); } +async function AsyncTestWithInstantiateOk() { + print('async module instantiate (ok)...'); + %DisallowCodegenFromStrings(false); + %DisallowWasmCodegen(false); + let promise = WebAssembly.instantiate(buffer); + assertPromiseResult( + promise, + module => assertInstanceof(module.instance, WebAssembly.Instance)); +} + async function AsyncTestFail() { print('async module compile (fail)...'); %DisallowCodegenFromStrings(true); @@ -78,6 +88,19 @@ async function AsyncTestFail() { } } +async function AsyncTestWithInstantiateFail() { + print('async module instantiate (fail)...'); + %DisallowCodegenFromStrings(true); + %DisallowWasmCodegen(false); + try { + let m = await WebAssembly.instantiate(buffer); + assertUnreachable(); + } catch (e) { + print(" " + e); + assertInstanceof(e, WebAssembly.CompileError); + } +} + async function AsyncTestWasmFail(disallow_codegen) { print('async wasm module compile (fail)...'); %DisallowCodegenFromStrings(disallow_codegen); @@ -91,6 +114,19 @@ async function AsyncTestWasmFail(disallow_codegen) { } } +async function AsyncTestWasmWithInstantiateFail(disallow_codegen) { + print('async wasm module instantiate (fail)...'); + %DisallowCodegenFromStrings(disallow_codegen); + %DisallowWasmCodegen(true); + try { + let m = await WebAssembly.instantiate(buffer); + assertUnreachable(); + } catch (e) { + print(" " + e); + assertInstanceof(e, WebAssembly.CompileError); + } +} + async function StreamingTestOk() { print('streaming module compile (ok)...'); // TODO(titzer): compileStreaming must be supplied by embedder. @@ -149,7 +185,9 @@ async function RunAll() { await SyncTestOk(); await SyncTestFail(); await AsyncTestOk(); + await AsyncTestWithInstantiateOk(); await AsyncTestFail(); + await AsyncTestWithInstantiateFail(); await StreamingTestOk(); await StreamingTestFail(); @@ -157,6 +195,7 @@ async function RunAll() { for (count = 0; count < 2; ++count) { SyncTestWasmFail(disallow_codegen); AsyncTestWasmFail(disallow_codegen); + AsyncTestWasmWithInstantiateFail(disallow_codegen); StreamingTestWasmFail(disallow_codegen) disallow_codegen = true; }