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

Side by Side Diff: test/mjsunit/wasm/test-import-export-wrapper.js

Issue 2486943005: [wasm] Imported WebAssembly function are never wrapped. (Closed)
Patch Set: typo Created 4 years, 1 month 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 | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 --allow-natives-syntax 5 // Flags: --expose-wasm --allow-natives-syntax
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 expect_elison = 0; 10 var expect_elison = 0;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 .instantiate({import_module_2: {import_name_2: imported}}) 121 .instantiate({import_module_2: {import_name_2: imported}})
122 .exports.second_export; 122 .exports.second_export;
123 var the_export = first_module 123 var the_export = first_module
124 .instantiate({import_module_1: {import_name_1: f}}) 124 .instantiate({import_module_1: {import_name_1: f}})
125 .exports.first_export; 125 .exports.first_export;
126 assertEquals(the_export(), 3); 126 assertEquals(the_export(), 3);
127 })(); 127 })();
128 128
129 // function calls stack: first_export -> first_func -> first_import -> 129 // function calls stack: first_export -> first_func -> first_import ->
130 // second_export -> second_import 130 // second_export -> second_import
131 // In this case, second_export has less params than first_import, 131 // In this case, second_export has fewer params than first_import,
132 // So that wrappers will not be removed 132 // so instantiation should fail.
133 (function TestWasmWrapperNoElisionLessParams() { 133 assertThrows(function TestWasmWrapperNoElisionLessParams() {
134 var imported = function (a) { 134 var imported = function (a) {
135 return a; 135 return a;
136 }; 136 };
137 137
138 var second_module = new WasmModuleBuilder(); 138 var second_module = new WasmModuleBuilder();
139 var sig_index_1 = second_module.addType(kSig_i_i); 139 var sig_index_1 = second_module.addType(kSig_i_i);
140 second_module 140 second_module
141 .addImportWithModule("import_module_2", "import_name_2", sig_index_1); 141 .addImportWithModule("import_module_2", "import_name_2", sig_index_1);
142 second_module 142 second_module
143 .addFunction("second_export", sig_index_1) 143 .addFunction("second_export", sig_index_1)
(...skipping 30 matching lines...) Expand all
174 .instantiate({import_module_2: {import_name_2: imported}}) 174 .instantiate({import_module_2: {import_name_2: imported}})
175 .exports.second_export; 175 .exports.second_export;
176 var the_export = first_module 176 var the_export = first_module
177 .instantiate({import_module_1: {import_name_1: f}}) 177 .instantiate({import_module_1: {import_name_1: f}})
178 .exports.first_export; 178 .exports.first_export;
179 assertEquals(the_export(4, 5), 4); 179 assertEquals(the_export(4, 5), 4);
180 assertEquals(the_export(-1, 4), -1); 180 assertEquals(the_export(-1, 4), -1);
181 assertEquals(the_export(0, 2), 0); 181 assertEquals(the_export(0, 2), 0);
182 assertEquals(the_export(9.9, 4.3), 9); 182 assertEquals(the_export(9.9, 4.3), 9);
183 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true); 183 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true);
184 })(); 184 });
185 185
186 // function calls stack: first_export -> first_func -> first_import -> 186 // function calls stack: first_export -> first_func -> first_import ->
187 // second_export -> second_import 187 // second_export -> second_import
188 // In this case, second_export has more params than first_import, 188 // In this case, second_export has more params than first_import,
189 // So that wrappers will not be removed 189 // so instantiation should fail.
190 (function TestWasmWrapperNoElisionMoreParams() { 190 assertThrows(function TestWasmWrapperNoElisionMoreParams() {
191 var imported = function (a, b, c) { 191 var imported = function (a, b, c) {
192 return a+b+c; 192 return a+b+c;
193 }; 193 };
194 194
195 var second_module = new WasmModuleBuilder(); 195 var second_module = new WasmModuleBuilder();
196 var sig_index_3 = second_module.addType(kSig_i_iii); 196 var sig_index_3 = second_module.addType(kSig_i_iii);
197 second_module 197 second_module
198 .addImportWithModule("import_module_2", "import_name_2", sig_index_3); 198 .addImportWithModule("import_module_2", "import_name_2", sig_index_3);
199 second_module 199 second_module
200 .addFunction("second_export", sig_index_3) 200 .addFunction("second_export", sig_index_3)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 .instantiate({import_module_2: {import_name_2: imported}}) 233 .instantiate({import_module_2: {import_name_2: imported}})
234 .exports.second_export; 234 .exports.second_export;
235 var the_export = first_module 235 var the_export = first_module
236 .instantiate({import_module_1: {import_name_1: f}}) 236 .instantiate({import_module_1: {import_name_1: f}})
237 .exports.first_export; 237 .exports.first_export;
238 assertEquals(the_export(5, 6), 11); 238 assertEquals(the_export(5, 6), 11);
239 assertEquals(the_export(-1, -4), -5); 239 assertEquals(the_export(-1, -4), -5);
240 assertEquals(the_export(0, 0), 0); 240 assertEquals(the_export(0, 0), 0);
241 assertEquals(the_export(1.1, 2.7), 3); 241 assertEquals(the_export(1.1, 2.7), 3);
242 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true); 242 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true);
243 })(); 243 });
244 244
245 // function calls stack: first_export -> first_func -> first_import -> 245 // function calls stack: first_export -> first_func -> first_import ->
246 // second_export -> second_import 246 // second_export -> second_import
247 // In this case, second_export has different params type with first_import, 247 // In this case, second_export has different params type with first_import,
248 // So that wrappers will not be removed 248 // so instantiation should fail.
249 (function TestWasmWrapperNoElisionTypeMismatch() { 249 assertThrows(function TestWasmWrapperNoElisionTypeMismatch() {
250 var imported = function (a, b) { 250 var imported = function (a, b) {
251 return a+b; 251 return a+b;
252 }; 252 };
253 253
254 var second_module = new WasmModuleBuilder(); 254 var second_module = new WasmModuleBuilder();
255 var sig_index_2 = second_module.addType(kSig_d_dd); 255 var sig_index_2 = second_module.addType(kSig_d_dd);
256 second_module 256 second_module
257 .addImportWithModule("import_module_2", "import_name_2", sig_index_2); 257 .addImportWithModule("import_module_2", "import_name_2", sig_index_2);
258 second_module 258 second_module
259 .addFunction("second_export", sig_index_2) 259 .addFunction("second_export", sig_index_2)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 .instantiate({import_module_2: {import_name_2: imported}}) 291 .instantiate({import_module_2: {import_name_2: imported}})
292 .exports.second_export; 292 .exports.second_export;
293 var the_export = first_module 293 var the_export = first_module
294 .instantiate({import_module_1: {import_name_1: f}}) 294 .instantiate({import_module_1: {import_name_1: f}})
295 .exports.first_export; 295 .exports.first_export;
296 assertEquals(the_export(2.8, 9.1), 11); 296 assertEquals(the_export(2.8, 9.1), 11);
297 assertEquals(the_export(-1.7, -2.5), -3); 297 assertEquals(the_export(-1.7, -2.5), -3);
298 assertEquals(the_export(0.0, 0.0), 0); 298 assertEquals(the_export(0.0, 0.0), 0);
299 assertEquals(the_export(2, -2), 0); 299 assertEquals(the_export(2, -2), 0);
300 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true); 300 assertEquals(%CheckWasmWrapperElision(the_export, expect_no_elison), true);
301 })(); 301 });
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698