| 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 --allow-natives-syntax | 5 // Flags: --expose-wasm --allow-natives-syntax |
| 6 | 6 |
| 7 if ((typeof drainJobQueue) != "function") { | 7 if ((typeof drainJobQueue) != "function") { |
| 8 drainJobQueue = () => { %RunMicrotasks() }; | 8 drainJobQueue = () => { %RunMicrotasks() }; |
| 9 } | 9 } |
| 10 | 10 |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 assertEq(bufferGetter.call(mem1).byteLength, kPageSize); | 366 assertEq(bufferGetter.call(mem1).byteLength, kPageSize); |
| 367 | 367 |
| 368 // 'WebAssembly.Memory.prototype.grow' data property | 368 // 'WebAssembly.Memory.prototype.grow' data property |
| 369 let memGrowDesc = Object.getOwnPropertyDescriptor(memoryProto, 'grow'); | 369 let memGrowDesc = Object.getOwnPropertyDescriptor(memoryProto, 'grow'); |
| 370 assertEq(typeof memGrowDesc.value, "function"); | 370 assertEq(typeof memGrowDesc.value, "function"); |
| 371 assertEq(memGrowDesc.enumerable, false); | 371 assertEq(memGrowDesc.enumerable, false); |
| 372 assertEq(memGrowDesc.configurable, true); | 372 assertEq(memGrowDesc.configurable, true); |
| 373 | 373 |
| 374 // 'WebAssembly.Memory.prototype.grow' method | 374 // 'WebAssembly.Memory.prototype.grow' method |
| 375 | 375 |
| 376 if (false) { // TODO: bugs with Memory.grow | |
| 377 let memGrow = memGrowDesc.value; | 376 let memGrow = memGrowDesc.value; |
| 378 assertEq(memGrow.length, 1); | 377 assertEq(memGrow.length, 1); |
| 379 assertErrorMessage(() => memGrow.call(), TypeError, /called on incompatible unde
fined/); | 378 assertErrorMessage(() => memGrow.call(), TypeError, |
| 380 assertErrorMessage(() => memGrow.call({}), TypeError, /called on incompatible Ob
ject/); | 379 /called on incompatible undefined/); |
| 381 assertErrorMessage(() => memGrow.call(mem1, -1), RangeError, /bad Memory grow de
lta/); | 380 assertErrorMessage(() => memGrow.call({}), TypeError, |
| 382 assertErrorMessage(() => memGrow.call(mem1, Math.pow(2,32)), RangeError, /bad Me
mory grow delta/); | 381 /called on incompatible Object/); |
| 382 assertErrorMessage(() => memGrow.call(mem1, -1), RangeError, |
| 383 /bad Memory grow delta/); |
| 384 assertErrorMessage(() => memGrow.call(mem1, Math.pow(2,32)), RangeError, |
| 385 /bad Memory grow delta/); |
| 383 var mem = new Memory({initial:1, maximum:2}); | 386 var mem = new Memory({initial:1, maximum:2}); |
| 384 var buf = mem.buffer; | 387 var buf = mem.buffer; |
| 385 assertEq(buf.byteLength, kPageSize); | 388 assertEq(buf.byteLength, kPageSize); |
| 386 assertEq(mem.grow(0), 1); | 389 assertEq(mem.grow(0), 1); |
| 387 assertEq(buf !== mem.buffer, true); | 390 // TODO(gdeepti): Pending spec clarification |
| 388 assertEq(buf.byteLength, 0); | 391 // assertEq(buf !== mem.buffer, true); |
| 392 // assertEq(buf.byteLength, 0); |
| 389 buf = mem.buffer; | 393 buf = mem.buffer; |
| 390 assertEq(buf.byteLength, kPageSize); | 394 assertEq(buf.byteLength, kPageSize); |
| 391 assertEq(mem.grow(1), 1); | 395 assertEq(mem.grow(1), 1); |
| 392 assertEq(buf !== mem.buffer, true); | 396 // TODO(gdeepti): assertEq(buf !== mem.buffer, true); |
| 393 assertEq(buf.byteLength, 0); | 397 // TODO(gdeepti): assertEq(buf.byteLength, 0); |
| 394 buf = mem.buffer; | 398 buf = mem.buffer; |
| 395 assertEq(buf.byteLength, 2 * kPageSize); | 399 assertEq(buf.byteLength, 2 * kPageSize); |
| 396 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/); | 400 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/); |
| 397 assertEq(buf, mem.buffer); | 401 assertEq(buf, mem.buffer); |
| 398 } | |
| 399 | 402 |
| 400 // 'WebAssembly.Table' data property | 403 // 'WebAssembly.Table' data property |
| 401 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table'); | 404 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table'); |
| 402 assertEq(typeof tableDesc.value, "function"); | 405 assertEq(typeof tableDesc.value, "function"); |
| 403 assertEq(tableDesc.writable, true); | 406 assertEq(tableDesc.writable, true); |
| 404 assertEq(tableDesc.enumerable, false); | 407 assertEq(tableDesc.enumerable, false); |
| 405 assertEq(tableDesc.configurable, true); | 408 assertEq(tableDesc.configurable, true); |
| 406 | 409 |
| 407 // 'WebAssembly.Table' constructor function | 410 // 'WebAssembly.Table' constructor function |
| 408 let Table = WebAssembly.Table; | 411 let Table = WebAssembly.Table; |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 var result = null; | 625 var result = null; |
| 623 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); | 626 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); |
| 624 drainJobQueue(); | 627 drainJobQueue(); |
| 625 assertEq(result instanceof Instance, true); | 628 assertEq(result instanceof Instance, true); |
| 626 } | 629 } |
| 627 assertInstantiateSuccess(emptyModuleBinary); | 630 assertInstantiateSuccess(emptyModuleBinary); |
| 628 assertInstantiateSuccess(emptyModuleBinary.buffer); | 631 assertInstantiateSuccess(emptyModuleBinary.buffer); |
| 629 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); | 632 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); |
| 630 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); | 633 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); |
| 631 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch
_memory}}); | 634 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch
_memory}}); |
| OLD | NEW |