aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/unreachable.js
blob: 10eea2323065df9d204762a50552ae02416b6cc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2015 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

load("test/mjsunit/wasm/wasm-constants.js");

var module = (function () {
  var kFuncWithBody = 9;
  var kFuncImported = 7;
  var kBodySize1 = 1;
  var kMainOffset = 6 + kFuncWithBody + kBodySize1 + 1;

  var ffi = new Object();
  ffi.add = (function(a, b) { return a + b | 0; });

  return _WASMEXP_.instantiateModule(bytes(
    // -- signatures
    kDeclSignatures, 1,
    0, kAstStmt, // void -> void
    // -- function #0 (unreachable)
    kDeclFunctions, 1,
    kDeclFunctionName | kDeclFunctionExport,
    0, 0,                      // signature offset
    kMainOffset, 0, 0, 0,      // name offset
    kBodySize1, 0,             // body size
    kExprUnreachable,
    kDeclEnd,
    'm', 'a', 'i', 'n', 0      // name
  ), ffi);
})();

// Check the module exists.
assertFalse(module === undefined);
assertFalse(module === null);
assertFalse(module === 0);
assertEquals("object", typeof module);
assertEquals("function", typeof module.main);

var exception = "";
try {
    assertEquals(0, module.main());
} catch(e) {
    print("correctly caught: " + e);
    exception = e;
}
assertEquals("unreachable", exception);