mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 03:34:08 +01:00 
			
		
		
		
	* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { eq as assertEq, throws as assertThrows } from "../assert.js";
 | |
| const pageSize = 64*1024;
 | |
| 
 | |
| let buffers = [];
 | |
| for (let i = 0; i < 100; i++) {
 | |
|     const max = 5;
 | |
|     let pageCount = 1;
 | |
|     let x = new WebAssembly.Memory({initial: 1, maximum: max});
 | |
|     for (let i = 0; i < (max - 1); i++) {
 | |
|         let int8Array = new Uint8Array(x.buffer);
 | |
| 
 | |
|         for (let i = 0; i < pageSize; i++) {
 | |
|             assertEq(int8Array[pageSize*(pageCount - 1) + i], 0);
 | |
|             int8Array[pageSize*(pageCount - 1) + i] = pageCount;
 | |
|         }
 | |
| 
 | |
|         for (let i = 0; i < pageCount; i++) {
 | |
|             for (let j = 0; j < pageSize; j++) {
 | |
|                 assertEq(int8Array[i * pageSize + j], i + 1);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         let buffer = x.buffer;
 | |
|         assertEq(buffer.byteLength, pageCount * pageSize);
 | |
|         buffers.push(buffer);
 | |
|         let previousPageSize = x.grow(1);
 | |
|         assertEq(buffer.byteLength, 0);
 | |
|         assertEq(previousPageSize, pageCount);
 | |
|         ++pageCount;
 | |
|     }
 | |
| }
 | |
| 
 | |
| for (let buffer of buffers) {
 | |
|     assertEq(buffer.byteLength, 0);
 | |
| }
 | |
| 
 | |
| {
 | |
|     const memory = new WebAssembly.Memory({initial: 1, maximum: 5});
 | |
|     let buffer = memory.buffer;
 | |
|     assertEq(buffer.byteLength, 1*64*1024);
 | |
|     memory.grow(1);
 | |
|     assertEq(buffer.byteLength, 0);
 | |
| 
 | |
|     buffer = memory.buffer;
 | |
|     assertEq(buffer.byteLength, 2*64*1024);
 | |
| 
 | |
|     // This shouldn't neuter the buffer since it fails.
 | |
|     assertThrows(() => memory.grow(1000), RangeError, "WebAssembly.Memory.grow would exceed the memory's declared maximum size");
 | |
|     assertEq(buffer.byteLength, 2*64*1024);
 | |
|     assertEq(memory.buffer, buffer);
 | |
| }
 |