// Copyright 2019 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: --wasm-test-streaming load("test/mjsunit/wasm/wasm-module-builder.js"); (function TestCompileStreaming() { print(arguments.callee.name); let builder = new WasmModuleBuilder(); builder.addFunction("main", kSig_i_i) .addBody([kExprGetLocal, 0]) .exportAs("main"); let bytes = builder.toBuffer(); assertPromiseResult(WebAssembly.compileStreaming(Promise.resolve(bytes)).then( module => WebAssembly.instantiate(module)).then( instance => assertEquals(5, instance.exports.main(5)))); })(); (function TestInstantiateStreaming() { print(arguments.callee.name); let builder = new WasmModuleBuilder(); builder.addFunction("main", kSig_i_i) .addBody([kExprGetLocal, 0]) .exportAs("main"); let bytes = builder.toBuffer(); assertPromiseResult(WebAssembly.instantiateStreaming(Promise.resolve(bytes)).then( ({module, instance}) => assertEquals(5, instance.exports.main(5)))); })(); (function TestCompileStreamingRejectedInputPromise() { print(arguments.callee.name); assertPromiseResult(WebAssembly.compileStreaming(Promise.reject("myError")), assertUnreachable, error => assertEquals(error, "myError")); })(); (function TestInstantiateStreamingRejectedInputPromise() { print(arguments.callee.name); assertPromiseResult(WebAssembly.instantiateStreaming(Promise.reject("myError")), assertUnreachable, error => assertEquals(error, "myError")); })(); (function TestStreamingErrorMessage() { print(arguments.callee.name); let builder = new WasmModuleBuilder(); builder.addFunction("main", kSig_i_i) .addBody([kExprGetLocal, 0, kExprGetLocal, 0, kExprF32Mul]) .exportAs("main"); let bytes = builder.toBuffer(); assertPromiseResult(WebAssembly.compileStreaming(Promise.resolve(bytes)), assertUnreachable, error => assertEquals("WebAssembly.compileStreaming(): Compiling " + "function #0:\"main\" failed: f32.mul[1] expected " + "type f32, found local.get of type i32 @+37", error.message)); assertPromiseResult(WebAssembly.instantiateStreaming(Promise.resolve(bytes)), assertUnreachable, error => assertEquals("WebAssembly.instantiateStreaming(): Compiling " + "function #0:\"main\" failed: f32.mul[1] expected " + "type f32, found local.get of type i32 @+37", error.message)); })();