1// Copyright 2015 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Flags: --expose-wasm 6 7load("test/mjsunit/wasm/wasm-constants.js"); 8 9var module = (function () { 10 var kFuncWithBody = 9; 11 var kFuncImported = 7; 12 var kBodySize1 = 1; 13 var kMainOffset = 6 + kFuncWithBody + kBodySize1 + 1; 14 15 var ffi = new Object(); 16 ffi.add = (function(a, b) { return a + b | 0; }); 17 18 return _WASMEXP_.instantiateModule(bytes( 19 // -- signatures 20 kDeclSignatures, 1, 21 0, kAstStmt, // void -> void 22 // -- function #0 (unreachable) 23 kDeclFunctions, 1, 24 kDeclFunctionName | kDeclFunctionExport, 25 0, 0, // signature offset 26 kMainOffset, 0, 0, 0, // name offset 27 kBodySize1, 0, // body size 28 kExprUnreachable, 29 kDeclEnd, 30 'm', 'a', 'i', 'n', 0 // name 31 ), ffi); 32})(); 33 34// Check the module exists. 35assertFalse(module === undefined); 36assertFalse(module === null); 37assertFalse(module === 0); 38assertEquals("object", typeof module); 39assertEquals("function", typeof module.main); 40 41var exception = ""; 42try { 43 assertEquals(0, module.main()); 44} catch(e) { 45 print("correctly caught: " + e); 46 exception = e; 47} 48assertEquals("unreachable", exception); 49