summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deps/v8/include/v8-version.h2
-rw-r--r--deps/v8/src/wasm/wasm-js.cc1
-rw-r--r--deps/v8/test/mjsunit/wasm/disallow-codegen.js39
3 files changed, 41 insertions, 1 deletions
diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h
index c7cffaca44..57fbc62964 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 ef316c64d0..7ff27dc769 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<v8::Value>& 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 9ac2bcd103..f1303e845f 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;
}