// 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: --experimental-wasm-compilation-hints --wasm-lazy-validation load('test/mjsunit/wasm/wasm-module-builder.js'); (function testInstantiateLazyValidation() { print(arguments.callee.name); let builder = new WasmModuleBuilder(); builder.addFunction('id', kSig_i_i) .addBody([kExprGetLocal, 0, kExprI64Const, 1, kExprI32Mul]) .setCompilationHint(kCompilationHintStrategyLazy, kCompilationHintTierBaseline, kCompilationHintTierBaseline) .exportFunc(); let expected_error_msg = "Compiling function #0:\"id\" failed: i32.mul[1] " + "expected type i32, found i64.const of type i64 " + "@+56"; let assertCompileErrorOnInvocation = function(instance) { assertThrows(() => instance.exports.id(3), WebAssembly.CompileError, expected_error_msg) }; // Synchronous case. let instance = builder.instantiate(); assertCompileErrorOnInvocation(instance); // Asynchronous case. let bytes = builder.toBuffer(); assertPromiseResult(WebAssembly.instantiate(bytes) .then(p => assertCompileErrorOnInvocation(p.instance))); })();