description( | |
"Tests what happens when you do a negative out-of-bounds access on a string and use that to install a getter that clobbers a structure." | |
); | |
function foo(s, o) { | |
var x = o.f; | |
s[-1]; | |
var y = o.g; | |
return x + y; | |
} | |
noInline(foo); | |
silentTestPass = true; | |
var theObject = {}; | |
String.prototype.__defineGetter__("-1", function() { delete theObject.g; }); | |
while (testRunner.numberOfDFGCompiles(foo) < 1) | |
shouldBe("foo(\"hello\", {f:1, g:2})", "3"); | |
theObject = {f:1, g:2}; | |
shouldBe("foo(\"hello\", theObject)", "0/0"); |