| function runNearStackLimit(f) { | |
| function t() { | |
| try { | |
| return t(); | |
| } catch (e) { | |
| return f(); | |
| } | |
| } | |
| return t() | |
| } | |
| function test() { | |
| function f(arg) { | |
| let loc = arg; | |
| try { | |
| loc.p = 0; | |
| } catch (e) {} | |
| arg.p = 1; | |
| } | |
| let obj = {}; | |
| runNearStackLimit(() => { | |
| return f(obj); | |
| }); | |
| } | |
| for (let i = 0; i < 50; ++i) | |
| test(); |