Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(730)

Side by Side Diff: test/mjsunit/wasm/exceptions.js

Issue 2591753002: [wasm] Implement correct 2-level namespace for imports. (Closed)
Patch Set: Fix debug tests Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/mjsunit/wasm/errors.js ('k') | test/mjsunit/wasm/export-table.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // Now that we know throwing works, we test catching the exceptions we raise. 72 // Now that we know throwing works, we test catching the exceptions we raise.
73 var test_catch = (function () { 73 var test_catch = (function () {
74 var builder = new WasmModuleBuilder(); 74 var builder = new WasmModuleBuilder();
75 75
76 // Helper function for throwing from js. It is imported by the Wasm module 76 // Helper function for throwing from js. It is imported by the Wasm module
77 // as throw_i. 77 // as throw_i.
78 function throw_value(value) { 78 function throw_value(value) {
79 throw value; 79 throw value;
80 } 80 }
81 var sig_index = builder.addType(kSig_v_i); 81 var sig_index = builder.addType(kSig_v_i);
82 var kJSThrowI = builder.addImport("throw_i", sig_index); 82 var kJSThrowI = builder.addImport("", "throw_i", sig_index);
83 83
84 // Helper function that throws a string. Wasm should not catch it. 84 // Helper function that throws a string. Wasm should not catch it.
85 function throw_string() { 85 function throw_string() {
86 throw "use wasm;"; 86 throw "use wasm;";
87 } 87 }
88 sig_index = builder.addType(kSig_v_v); 88 sig_index = builder.addType(kSig_v_v);
89 var kJSThrowString = builder.addImport("throw_string", sig_index); 89 var kJSThrowString = builder.addImport("", "throw_string", sig_index);
90 90
91 // Helper function that throws undefined. Wasm should not catch it. 91 // Helper function that throws undefined. Wasm should not catch it.
92 function throw_undefined() { 92 function throw_undefined() {
93 throw undefined; 93 throw undefined;
94 } 94 }
95 var kJSThrowUndefined = builder.addImport("throw_undefined", sig_index); 95 var kJSThrowUndefined = builder.addImport("", "throw_undefined", sig_index);
96 96
97 // Helper function that throws an fp. Wasm should not catch it. 97 // Helper function that throws an fp. Wasm should not catch it.
98 function throw_fp() { 98 function throw_fp() {
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 WebAssembly. 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
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 kExprCallFunction, kJSThrowLarge 328 kExprCallFunction, kJSThrowLarge
329 ]) 329 ])
330 .exportFunc(); 330 .exportFunc();
331 331
332 builder.addFunction("undefined_from_js", kSig_v_v) 332 builder.addFunction("undefined_from_js", kSig_v_v)
333 .addBody([ 333 .addBody([
334 kExprCallFunction, kJSThrowUndefined 334 kExprCallFunction, kJSThrowUndefined
335 ]) 335 ])
336 .exportFunc(); 336 .exportFunc();
337 337
338 return builder.instantiate({ 338 return builder.instantiate({"": {
339 throw_i: throw_value, 339 throw_i: throw_value,
340 throw_string: throw_string, 340 throw_string: throw_string,
341 throw_fp: throw_fp, 341 throw_fp: throw_fp,
342 throw_large, throw_large, 342 throw_large, throw_large,
343 throw_undefined: throw_undefined 343 throw_undefined: throw_undefined
344 }); 344 }});
345 })(); 345 })();
346 346
347 // Check the test_catch exists. 347 // Check the test_catch exists.
348 assertFalse(test_catch === undefined); 348 assertFalse(test_catch === undefined);
349 assertFalse(test_catch === null); 349 assertFalse(test_catch === null);
350 assertFalse(test_catch === 0); 350 assertFalse(test_catch === 0);
351 assertEquals("object", typeof test_catch.exports); 351 assertEquals("object", typeof test_catch.exports);
352 assertEquals("function", typeof test_catch.exports.same_scope); 352 assertEquals("function", typeof test_catch.exports.same_scope);
353 assertEquals("function", typeof test_catch.exports.same_scope_ignore); 353 assertEquals("function", typeof test_catch.exports.same_scope_ignore);
354 assertEquals("function", typeof test_catch.exports.same_scope_multiple); 354 assertEquals("function", typeof test_catch.exports.same_scope_multiple);
(...skipping 19 matching lines...) Expand all
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);
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/errors.js ('k') | test/mjsunit/wasm/export-table.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698