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