| //@ skip if $memoryLimited | |
| //@ runDefault | |
| function bar() { | |
| const a = [0]; | |
| a.__proto__ = {}; | |
| Object.defineProperty(a, 0, { get: foo }); | |
| Object.defineProperty(a, 80000000, {}); | |
| function foo() { | |
| new Uint8Array(a); | |
| } | |
| new Promise(foo); | |
| try { | |
| for (let i = 0; i < 10000000; i++) | |
| new ArrayBuffer(1000); | |
| } catch(e) {} | |
| } | |
| function foo(a0, a1, a2) { | |
| eval(); | |
| } | |
| bar(); | |
| var exception; | |
| try { | |
| foo(); | |
| } catch (e) { | |
| exception = e; | |
| } | |
| if (exception && exception != "RangeError: Out of memory") | |
| throw "FAIL"; |