mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1017 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1017 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| //@ skip if $memoryLimited
 | |
| 
 | |
| function test() {
 | |
| 
 | |
|     // We don't support WebAssembly everywhere, so check for its existance before doing anything else.
 | |
|     if (!this.WebAssembly)
 | |
|         return;
 | |
| 
 | |
|     let bigArray = new Array(0x7000000);
 | |
|     bigArray[0] = 1.1;
 | |
|     bigArray[1] = 1.2;
 | |
| 
 | |
|     function foo(array) {
 | |
|         var index = array.length;
 | |
|         if (index >= bigArray.length || (index - 0x1ffdc01) < 0)
 | |
|             return;
 | |
|         return bigArray[index - 0x1ffdc01];
 | |
|     }
 | |
| 
 | |
|     noInline(foo);
 | |
| 
 | |
|     var okArray = new Uint8Array(0x1ffdc02);
 | |
| 
 | |
|     for (var i = 0; i < 10000; ++i)
 | |
|         foo(okArray);
 | |
| 
 | |
|     var ok = false;
 | |
|     try {
 | |
|         var result = foo(new Uint8Array(new WebAssembly.Memory({ initial: 0x8000, maximum: 0x8000 }).buffer));
 | |
|         if (result !== void 0)
 | |
|             throw "Error: bad result at end: " + result;
 | |
|         ok = true;
 | |
|     } catch (e) {
 | |
|         if (e.toString() != "Error: Out of memory")
 | |
|             throw e;
 | |
|     }
 | |
| 
 | |
|     if (ok)
 | |
|         throw "Error: did not throw error";
 | |
| 
 | |
| }
 | |
| 
 | |
| test();
 |