| description( |
| "Tests that DFG custom getter caching does not break the world if the getter throws an exception from inlined code." |
| ); |
| |
| function foo(x) { |
| return x.responseText; |
| } |
| |
| function baz(x) { |
| return foo(x); |
| } |
| |
| function bar(binary) { |
| var x = new XMLHttpRequest(); |
| x.open("GET", "http://foo.bar.com/"); |
| if (binary) |
| x.responseType = "arraybuffer"; |
| try { |
| return "Returned result: " + baz(x); |
| } catch (e) { |
| return "Threw exception: " + e; |
| } |
| } |
| |
| noInline(baz); |
| silentTestPass = true; |
| |
| for (var i = 0; i < 200; i = dfgIncrement({f:baz, i:i + 1, n:50})) { |
| shouldBe("bar(i >= 100)", i >= 100 ? "\"Threw exception: InvalidStateError: The object is in an invalid state.\"" : "\"Returned result: \""); |
| } |
| |
| |