<p>This page tests whether a cached [[put]] consults setters in the prototype chain.
If the test passes, you'll see two PASS messages below.</p>
<pre id="console"></pre>
<script>
if (window.testRunner)
testRunner.dumpAsText();
function log(s)
{
document.getElementById("console").appendChild(document.createTextNode(s));
}
(function() {
function callToString(arg)
{
return arg.toString();
}
// toString() will hit the direct prototype of this object.
var victim = {};
callToString(victim);
callToString(victim);
callToString(victim);
callToString(1);
log("PASS: I didn't segfault.\n");
})();
(function() {
function callToString(arg)
{
return arg.toString();
}
// toString() will have to walk a prototype chain for this object.
function MyObject() {}
MyObject.prototype = { someStuff: {} };
var victim = new MyObject();
var xSetterCalled = false;
callToString(victim);
callToString(victim);
callToString(victim);
callToString(1);
log("PASS: I didn't segfault.\n");
})();
</script>