| //@ runDefault("--useConcurrentJIT=0", "--useConcurrentGC=0", "--useSamplingProfiler=1", "--collectExtraSamplingProfilerData=1", "--repatchBufferingCountdown=1") | |
| let oThrow = { | |
| g: 0, | |
| get f() { | |
| throw new Error(); | |
| } | |
| }; | |
| function foo(x, j) { | |
| let o = f(x, j); | |
| try { | |
| o = o.f; | |
| } catch (e) { | |
| gc(); | |
| o === 0; | |
| } | |
| } | |
| noInline(foo); | |
| function f(x, j) { | |
| if (x) { | |
| return oThrow; | |
| } | |
| if (j % 2) { | |
| return {}; | |
| } | |
| return { | |
| get f() {} | |
| }; | |
| } | |
| noInline(f); | |
| for (let i = 0; i < 20000; i++) { | |
| foo(false, i); | |
| } | |
| foo(true); |