47702c53bc
As per spec, (https://github.com/WebAssembly/design/pull/1068), we don't have compile/instantiate overloads anymore, instead, we have explicitly named members. This change introduces the new APIs, implements instantiateStreaming based on compileStreaming, and uses the existing embedder mechanism. It does not yet remove the functionality from compile/instantiate - we do that after we adopt the new APIs on the blink side. Also, it temporarily handles exceptions on the v8 side, which is also something we'll move to the blink side. Bug: Change-Id: I77673b1c0d395dfcf13b2f25464fd5dfd99c8d82 Reviewed-on: https://chromium-review.googlesource.com/508852 Commit-Queue: Brad Nelson <bradnelson@chromium.org> Reviewed-by: Brad Nelson <bradnelson@chromium.org> Cr-Commit-Position: refs/heads/master@{#45411}
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
// Copyright 2017 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --allow-natives-syntax
|
|
|
|
load("test/mjsunit/wasm/wasm-constants.js");
|
|
load("test/mjsunit/wasm/wasm-module-builder.js");
|
|
|
|
%ResetWasmOverloads();
|
|
let buffer = (() => {
|
|
let builder = new WasmModuleBuilder();
|
|
builder.addFunction("f", kSig_i_v)
|
|
.addBody([kExprI32Const, 42])
|
|
.exportAs("f");
|
|
return builder.toBuffer();
|
|
})();
|
|
|
|
var module = new WebAssembly.Module(buffer);
|
|
var wrapper = [module];
|
|
|
|
assertPromiseResult(
|
|
WebAssembly.instantiateStreaming(wrapper),
|
|
assertUnreachable,
|
|
e => assertTrue(e instanceof TypeError));
|
|
|
|
assertPromiseResult(
|
|
WebAssembly.compileStreaming(wrapper),
|
|
assertUnreachable,
|
|
e => assertTrue(e instanceof TypeError));
|
|
|
|
assertPromiseResult(
|
|
(() => {
|
|
%SetWasmCompileFromPromiseOverload();
|
|
return WebAssembly.compileStreaming(wrapper);
|
|
})(),
|
|
module => {
|
|
assertTrue(module instanceof WebAssembly.Module);
|
|
%ResetWasmOverloads();
|
|
},
|
|
assertUnreachable);
|
|
|
|
assertPromiseResult(
|
|
(() => {
|
|
%SetWasmCompileFromPromiseOverload();
|
|
return WebAssembly.instantiateStreaming(wrapper);
|
|
})(),
|
|
pair => {
|
|
assertTrue(pair.instance instanceof WebAssembly.Instance);
|
|
assertTrue(pair.module instanceof WebAssembly.Module);
|
|
%ResetWasmOverloads();
|
|
},
|
|
assertUnreachable);
|