blob: 13a22615fca792f857fe9aa076674a10032ce1d1 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// 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 kReturnValue = 117;
10
11var kBodySize = 2;
12var kNameOffset = 19 + kBodySize + 1;
13
14var data = bytes(
15 // -- memory
16 kDeclMemory,
17 10, 10, 1,
18 // -- signatures
19 kDeclSignatures, 1,
20 0, kAstI32, // signature: void -> int
21 // -- main function
22 kDeclFunctions, 1,
23 kDeclFunctionName | kDeclFunctionExport,
24 0, 0, // signature index
25 kNameOffset, 0, 0, 0, // name offset
26 kBodySize, 0, // body size
27 // -- body
28 kExprI8Const, // --
29 kReturnValue, // --
30 kDeclEnd,
31 'm', 'a', 'i', 'n', 0 // name
32);
33
34var module = _WASMEXP_.instantiateModule(data);
35
36// Check the module exists.
37assertFalse(module === undefined);
38assertFalse(module === null);
39assertFalse(module === 0);
40assertEquals("object", typeof module);
41
42// Check the memory is an ArrayBuffer.
43var mem = module.memory;
44assertFalse(mem === undefined);
45assertFalse(mem === null);
46assertFalse(mem === 0);
47assertEquals("object", typeof mem);
48assertTrue(mem instanceof ArrayBuffer);
49for (var i = 0; i < 4; i++) {
50 module.memory = 0; // should be ignored
51 assertEquals(mem, module.memory);
52}
53
54assertEquals(1024, module.memory.byteLength);
55
56// Check the properties of the main function.
57assertFalse(module.main === undefined);
58assertFalse(module.main === null);
59assertFalse(module.main === 0);
60assertEquals("function", typeof module.main);
61
62assertEquals(kReturnValue, module.main());