OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --expose-wasm --wasm-eh-prototype | 5 // Flags: --expose-wasm --wasm-eh-prototype |
6 | 6 |
7 load("test/mjsunit/wasm/wasm-constants.js"); | 7 load("test/mjsunit/wasm/wasm-constants.js"); |
8 load("test/mjsunit/wasm/wasm-module-builder.js"); | 8 load("test/mjsunit/wasm/wasm-module-builder.js"); |
9 | 9 |
10 var module = (function () { | 10 var module = (function () { |
11 var builder = new WasmModuleBuilder(); | 11 var builder = new WasmModuleBuilder(); |
12 | 12 |
13 builder.addFunction("throw_param_if_not_zero", kSig_i_i) | 13 builder.addFunction("throw_param_if_not_zero", kSig_i_i) |
14 .addBody([ | 14 .addBody([ |
15 kExprGetLocal, 0, | 15 kExprGetLocal, 0, |
16 kExprI32Const, 0, | 16 kExprI32Const, 0, |
17 kExprI32Ne, | 17 kExprI32Ne, |
18 kExprIf, kAstStmt, | 18 kExprIf, |
19 kExprGetLocal, 0, | 19 kExprGetLocal, 0, |
20 kExprThrow, kAstStmt, | 20 kExprThrow, |
21 kExprEnd, | 21 kExprEnd, |
22 kExprI32Const, 1 | 22 kExprI32Const, 1 |
23 ]) | 23 ]) |
24 .exportFunc() | 24 .exportFunc() |
25 | 25 |
26 builder.addFunction("throw_20", kSig_v_v) | 26 builder.addFunction("throw_20", kSig_v_v) |
27 .addBody([ | 27 .addBody([ |
28 kExprI32Const, 20, | 28 kExprI32Const, 20, |
29 kExprThrow, kAstStmt | 29 kExprThrow |
30 ]) | 30 ]) |
31 .exportFunc() | 31 .exportFunc() |
32 | 32 |
33 builder.addFunction("throw_expr_with_params", kSig_v_ddi) | 33 builder.addFunction("throw_expr_with_params", kSig_v_ddi) |
34 .addBody([ | 34 .addBody([ |
35 // p2 * (p0 + min(p0, p1))|0 - 20 | 35 // p2 * (p0 + min(p0, p1))|0 - 20 |
36 kExprGetLocal, 2, | 36 kExprGetLocal, 2, |
37 kExprGetLocal, 0, | 37 kExprGetLocal, 0, |
38 kExprGetLocal, 0, | 38 kExprGetLocal, 0, |
39 kExprGetLocal, 1, | 39 kExprGetLocal, 1, |
40 kExprF64Min, | 40 kExprF64Min, |
41 kExprF64Add, | 41 kExprF64Add, |
42 kExprI32SConvertF64, | 42 kExprI32SConvertF64, |
43 kExprI32Mul, | 43 kExprI32Mul, |
44 kExprI32Const, 20, | 44 kExprI32Const, 20, |
45 kExprI32Sub, | 45 kExprI32Sub, |
46 kExprThrow, kAstStmt | 46 kExprThrow |
47 ]) | 47 ]) |
48 .exportFunc() | 48 .exportFunc() |
49 | 49 |
50 return builder.instantiate(); | 50 return builder.instantiate(); |
51 })(); | 51 })(); |
52 | 52 |
53 // Check the module exists. | 53 // Check the module exists. |
54 assertFalse(module === undefined); | 54 assertFalse(module === undefined); |
55 assertFalse(module === null); | 55 assertFalse(module === null); |
56 assertFalse(module === 0); | 56 assertFalse(module === 0); |
57 assertEquals("object", typeof module.exports); | 57 assertEquals("object", typeof module.exports); |
58 assertEquals("function", typeof module.exports.throw_param_if_not_zero); | 58 assertEquals("function", typeof module.exports.throw_param_if_not_zero); |
59 | 59 |
60 assertEquals(1, module.exports.throw_param_if_not_zero(0)); | 60 assertEquals(1, module.exports.throw_param_if_not_zero(0)); |
61 assertWasmThrows(10, function() { module.exports.throw_param_if_not_zero(10) }); | 61 assertWasmThrows(10, function() { module.exports.throw_param_if_not_zero(10) }); |
62 assertWasmThrows(-1, function() { module.exports.throw_param_if_not_zero(-1) }); | 62 assertWasmThrows(-1, function() { module.exports.throw_param_if_not_zero(-1) }); |
63 assertWasmThrows(20, module.exports.throw_20); | 63 assertWasmThrows(20, module.exports.throw_20); |
64 assertWasmThrows( | 64 assertWasmThrows( |
65 -8, function() { module.exports.throw_expr_with_params(1.5, 2.5, 4); }); | 65 -8, function() { module.exports.throw_expr_with_params(1.5, 2.5, 4); }); |
66 assertWasmThrows( | 66 assertWasmThrows( |
67 12, function() { module.exports.throw_expr_with_params(5.7, 2.5, 4); }); | 67 12, function() { module.exports.throw_expr_with_params(5.7, 2.5, 4); }); |
OLD | NEW |