| OLD | NEW | 
|    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 |    5 // Flags: --expose-wasm | 
|    6  |    6  | 
|    7 'use strict'; |    7 'use strict'; | 
|    8  |    8  | 
|    9 load("test/mjsunit/wasm/wasm-constants.js"); |    9 load("test/mjsunit/wasm/wasm-constants.js"); | 
|   10 load("test/mjsunit/wasm/wasm-module-builder.js"); |   10 load("test/mjsunit/wasm/wasm-module-builder.js"); | 
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  145   } |  145   } | 
|  146   for (let key of [-1, table.length, table.length * 10]) { |  146   for (let key of [-1, table.length, table.length * 10]) { | 
|  147     assertThrows(() => table.get(key), RangeError); |  147     assertThrows(() => table.get(key), RangeError); | 
|  148   } |  148   } | 
|  149   assertThrows(() => table.get(Symbol()), TypeError); |  149   assertThrows(() => table.get(Symbol()), TypeError); | 
|  150   assertThrows(() => WebAssembly.Table.prototype.get.call([], 0), TypeError); |  150   assertThrows(() => WebAssembly.Table.prototype.get.call([], 0), TypeError); | 
|  151 })(); |  151 })(); | 
|  152  |  152  | 
|  153 (function TestSet() { |  153 (function TestSet() { | 
|  154   let builder = new WasmModuleBuilder; |  154   let builder = new WasmModuleBuilder; | 
|  155   builder.addExport("wasm", builder.addFunction("", kSig_v_v).addBody([])); |  155   builder.addExport("wasm", builder.addFunction("", kSig_v_v)); | 
|  156   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); |  156   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); | 
|  157   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; |  157   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; | 
|  158  |  158  | 
|  159   let table = new WebAssembly.Table({element: "anyfunc", initial: 10}); |  159   let table = new WebAssembly.Table({element: "anyfunc", initial: 10}); | 
|  160  |  160  | 
|  161   for (let f of [wasm, host]) { |  161   for (let f of [wasm, host]) { | 
|  162     for (let i = 0; i < table.length; ++i) table.set(i, null); |  162     for (let i = 0; i < table.length; ++i) table.set(i, null); | 
|  163     for (let i = 0; i < table.length; ++i) { |  163     for (let i = 0; i < table.length; ++i) { | 
|  164       assertSame(null, table.get(i)); |  164       assertSame(null, table.get(i)); | 
|  165       assertSame(undefined, table.set(i, f)); |  165       assertSame(undefined, table.set(i, f)); | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|  193  |  193  | 
|  194     assertThrows(() => table.set(Symbol(), f), TypeError); |  194     assertThrows(() => table.set(Symbol(), f), TypeError); | 
|  195     assertThrows(() => WebAssembly.Table.prototype.set.call([], 0, f), |  195     assertThrows(() => WebAssembly.Table.prototype.set.call([], 0, f), | 
|  196                  TypeError); |  196                  TypeError); | 
|  197   } |  197   } | 
|  198 })(); |  198 })(); | 
|  199  |  199  | 
|  200  |  200  | 
|  201 (function TestIndexing() { |  201 (function TestIndexing() { | 
|  202   let builder = new WasmModuleBuilder; |  202   let builder = new WasmModuleBuilder; | 
|  203   builder.addExport("wasm", builder.addFunction("", kSig_v_v).addBody([])); |  203   builder.addExport("wasm", builder.addFunction("", kSig_v_v)); | 
|  204   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); |  204   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); | 
|  205   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; |  205   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; | 
|  206  |  206  | 
|  207   let table = new WebAssembly.Table({element: "anyfunc", initial: 10}); |  207   let table = new WebAssembly.Table({element: "anyfunc", initial: 10}); | 
|  208  |  208  | 
|  209   for (let f of [wasm, host, () => {}, 5, {}, ""]) { |  209   for (let f of [wasm, host, () => {}, 5, {}, ""]) { | 
|  210     for (let i = 0; i < table.length; ++i) table[i] = f; |  210     for (let i = 0; i < table.length; ++i) table[i] = f; | 
|  211     for (let i = 0; i < table.length; ++i) { |  211     for (let i = 0; i < table.length; ++i) { | 
|  212       assertSame(null, table.get(i)); |  212       assertSame(null, table.get(i)); | 
|  213       assertSame(f, table[i]); |  213       assertSame(f, table[i]); | 
|  214     } |  214     } | 
|  215  |  215  | 
|  216     for (let key of [0.4, "", NaN, {}, [], () => {}]) { |  216     for (let key of [0.4, "", NaN, {}, [], () => {}]) { | 
|  217       assertSame(f, table[key] = f); |  217       assertSame(f, table[key] = f); | 
|  218       assertSame(f, table[key]); |  218       assertSame(f, table[key]); | 
|  219       assertSame(null, table.get(key)); |  219       assertSame(null, table.get(key)); | 
|  220     } |  220     } | 
|  221   } |  221   } | 
|  222 })(); |  222 })(); | 
|  223  |  223  | 
|  224 (function TestGrow() { |  224 (function TestGrow() { | 
|  225   let builder = new WasmModuleBuilder; |  225   let builder = new WasmModuleBuilder; | 
|  226   builder.addExport("wasm", builder.addFunction("", kSig_v_v).addBody([])); |  226   builder.addExport("wasm", builder.addFunction("", kSig_v_v)); | 
|  227   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); |  227   builder.addExport("host", builder.addImport("test", "f", kSig_v_v)); | 
|  228   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; |  228   let {wasm, host} = builder.instantiate({test: {f() {}}}).exports; | 
|  229  |  229  | 
|  230   function init(table) { |  230   function init(table) { | 
|  231     for (let i = 0; i < 5; ++i) table.set(i, wasm); |  231     for (let i = 0; i < 5; ++i) table.set(i, wasm); | 
|  232     for (let i = 15; i < 20; ++i) table.set(i, host); |  232     for (let i = 15; i < 20; ++i) table.set(i, host); | 
|  233   } |  233   } | 
|  234   function check(table) { |  234   function check(table) { | 
|  235     for (let i = 0; i < 5; ++i) assertSame(wasm, table.get(i)); |  235     for (let i = 0; i < 5; ++i) assertSame(wasm, table.get(i)); | 
|  236     for (let i = 6; i < 15; ++i) assertSame(null, table.get(i)); |  236     for (let i = 6; i < 15; ++i) assertSame(null, table.get(i)); | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
|  254   check(table); |  254   check(table); | 
|  255   table.grow(5); |  255   table.grow(5); | 
|  256   check(table); |  256   check(table); | 
|  257   table.grow(0); |  257   table.grow(0); | 
|  258   check(table); |  258   check(table); | 
|  259   assertThrows(() => table.grow(1), RangeError); |  259   assertThrows(() => table.grow(1), RangeError); | 
|  260   assertThrows(() => table.grow(-10), RangeError); |  260   assertThrows(() => table.grow(-10), RangeError); | 
|  261  |  261  | 
|  262   assertThrows(() => WebAssembly.Table.prototype.grow.call([], 0), TypeError); |  262   assertThrows(() => WebAssembly.Table.prototype.grow.call([], 0), TypeError); | 
|  263 })(); |  263 })(); | 
| OLD | NEW |