| //@ skip if $architecture == "x86" |
| |
| var n = 10000000; |
| |
| var newContext = { |
| id : 'new-context' |
| }; |
| |
| function bar() { } |
| |
| function foo(b) { |
| var result = 0; |
| var set = (x) => { |
| // Check if arrow function store context |
| if (this != newContext || this.id != newContext.id) |
| throw 'Wrong context of arrow function'; |
| result = x; |
| } |
| if (b) { |
| OSRExit(); |
| if (b) { |
| bar(set); |
| } |
| return result; |
| } |
| return result; |
| } |
| |
| noInline(bar); |
| noInline(foo); |
| |
| for (var i = 0; i < n; i++) { |
| var result = foo.call(newContext, !(i % 100)); |
| if (result != 0) |
| throw "Error: bad result: " + result; |
| } |