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): assertEq(buf !== mem.buffer, true); |
bradnelson
2017/01/18 02:35:37
Maybe say pending spec clarification (ideally ref
gdeepti
2017/01/18 04:43:14
Done.
| |
388 assertEq(buf.byteLength, 0); | 391 // TODO(gdeepti): assertEq(buf.byteLength, 0); |
389 buf = mem.buffer; | 392 buf = mem.buffer; |
390 assertEq(buf.byteLength, kPageSize); | 393 assertEq(buf.byteLength, kPageSize); |
391 assertEq(mem.grow(1), 1); | 394 assertEq(mem.grow(1), 1); |
392 assertEq(buf !== mem.buffer, true); | 395 // TODO(gdeepti): assertEq(buf !== mem.buffer, true); |
393 assertEq(buf.byteLength, 0); | 396 // TODO(gdeepti): assertEq(buf.byteLength, 0); |
gdeepti
2017/01/18 02:17:47
Disabled for now because for the 0 case, we do not
| |
394 buf = mem.buffer; | 397 buf = mem.buffer; |
395 assertEq(buf.byteLength, 2 * kPageSize); | 398 assertEq(buf.byteLength, 2 * kPageSize); |
396 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/); | 399 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/); |
397 assertEq(buf, mem.buffer); | 400 assertEq(buf, mem.buffer); |
398 } | |
399 | 401 |
400 // 'WebAssembly.Table' data property | 402 // 'WebAssembly.Table' data property |
401 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table'); | 403 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table'); |
402 assertEq(typeof tableDesc.value, "function"); | 404 assertEq(typeof tableDesc.value, "function"); |
403 assertEq(tableDesc.writable, true); | 405 assertEq(tableDesc.writable, true); |
404 assertEq(tableDesc.enumerable, false); | 406 assertEq(tableDesc.enumerable, false); |
405 assertEq(tableDesc.configurable, true); | 407 assertEq(tableDesc.configurable, true); |
406 | 408 |
407 // 'WebAssembly.Table' constructor function | 409 // 'WebAssembly.Table' constructor function |
408 let Table = WebAssembly.Table; | 410 let Table = WebAssembly.Table; |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
622 var result = null; | 624 var result = null; |
623 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); | 625 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); |
624 drainJobQueue(); | 626 drainJobQueue(); |
625 assertEq(result instanceof Instance, true); | 627 assertEq(result instanceof Instance, true); |
626 } | 628 } |
627 assertInstantiateSuccess(emptyModuleBinary); | 629 assertInstantiateSuccess(emptyModuleBinary); |
628 assertInstantiateSuccess(emptyModuleBinary.buffer); | 630 assertInstantiateSuccess(emptyModuleBinary.buffer); |
629 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); | 631 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); |
630 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); | 632 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); |
631 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}}); | 633 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}}); |
OLD | NEW |