<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() {
var xSetterCalled = false;
function MyConstructor()
{
this.x = 1;
}
new MyConstructor;
new MyConstructor;
Object.prototype.__defineSetter__("x", function(x) { xSetterCalled = true; });
new MyConstructor;
log(xSetterCalled ? "PASS: 'x' setter was called.\n" : "FAIL: 'x' setter was not called.\n");
})();
(function() {
var xSetterCalled = false;
function makeO()
{
var o = { };
o.x = 1;
return o;
}
makeO();
makeO();
Object.prototype.__defineSetter__("x", function(x) { xSetterCalled = true; });
makeO();
log(xSetterCalled ? "PASS: 'x' setter was called.\n" : "FAIL: 'x' setter was not called.\n");
})();
</script>