// Copyright 2018 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: --expose-wasm --experimental-wasm-eh load("test/mjsunit/wasm/wasm-constants.js"); load("test/mjsunit/wasm/wasm-module-builder.js"); // Instantiate a throwing module. var builder = new WasmModuleBuilder(); builder.addException(kSig_v_v); builder.addFunction("propel", kSig_v_v) .addBody([kExprThrow, 0]) .exportFunc(); var instance = builder.instantiate(); // Catch the exception. var exception; try { instance.exports.propel(); } catch (e) { exception = e; } // Check that the exception is an instance of the correct error function and // that no extraneous properties exist. Setting such properties could be // observable by JavaScript and could break compatibility. assertInstanceof(exception, WebAssembly.RuntimeError); assertArrayEquals(["stack", "message"], Object.getOwnPropertyNames(exception));