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 // The following methods do not attempt to catch the exception they raise. | 10 // The following methods do not attempt to catch the exception they raise. |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 throw 10.5; | 99 throw 10.5; |
100 } | 100 } |
101 var kJSThrowFP = builder.addImport("throw_fp", sig_index); | 101 var kJSThrowFP = builder.addImport("throw_fp", sig_index); |
102 | 102 |
103 // Helper function that throws a large number. Wasm should not catch it. | 103 // Helper function that throws a large number. Wasm should not catch it. |
104 function throw_large() { | 104 function throw_large() { |
105 throw 1e+28; | 105 throw 1e+28; |
106 } | 106 } |
107 var kJSThrowLarge = builder.addImport("throw_large", sig_index); | 107 var kJSThrowLarge = builder.addImport("throw_large", sig_index); |
108 | 108 |
109 // Helper function for throwing from Wasm. | 109 // Helper function for throwing from WebAssembly. |
110 var kWasmThrowFunction = | 110 var kWasmThrowFunction = |
111 builder.addFunction("throw", kSig_v_i) | 111 builder.addFunction("throw", kSig_v_i) |
112 .addBody([ | 112 .addBody([ |
113 kExprGetLocal, 0, | 113 kExprGetLocal, 0, |
114 kExprThrow | 114 kExprThrow |
115 ]) | 115 ]) |
116 .index; | 116 .index; |
117 | 117 |
118 // Scenario 1: Throw and catch appear on the same function. This should | 118 // Scenario 1: Throw and catch appear on the same function. This should |
119 // happen in case of inlining, for example. | 119 // happen in case of inlining, for example. |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 assertEquals(-1, test_catch.exports.from_direct_callee(0xFFFFFFFF)); | 374 assertEquals(-1, test_catch.exports.from_direct_callee(0xFFFFFFFF)); |
375 assertEquals(0x7FFFFFFF, test_catch.exports.from_direct_callee(0x7FFFFFFF)); | 375 assertEquals(0x7FFFFFFF, test_catch.exports.from_direct_callee(0x7FFFFFFF)); |
376 assertEquals(-10, test_catch.exports.from_indirect_callee(10)); | 376 assertEquals(-10, test_catch.exports.from_indirect_callee(10)); |
377 assertEquals(-77, test_catch.exports.from_indirect_callee(77)); | 377 assertEquals(-77, test_catch.exports.from_indirect_callee(77)); |
378 assertEquals(10, test_catch.exports.from_js(10)); | 378 assertEquals(10, test_catch.exports.from_js(10)); |
379 assertEquals(-10, test_catch.exports.from_js(-10)); | 379 assertEquals(-10, test_catch.exports.from_js(-10)); |
380 | 380 |
381 assertThrowsEquals(test_catch.exports.string_from_js, "use wasm;"); | 381 assertThrowsEquals(test_catch.exports.string_from_js, "use wasm;"); |
382 assertThrowsEquals(test_catch.exports.large_from_js, 1e+28); | 382 assertThrowsEquals(test_catch.exports.large_from_js, 1e+28); |
383 assertThrowsEquals(test_catch.exports.undefined_from_js, undefined); | 383 assertThrowsEquals(test_catch.exports.undefined_from_js, undefined); |
OLD | NEW |