<p>
This page tests cached access to properties of dictionary objects and objects
with changing prototypes. If the test passes, you'll see a series of PASS messages
below.
</p>
<pre id="console"></pre>
<script>
(function() {
if (window.testRunner)
testRunner.dumpAsText();
function log(s)
{
if (this.document)
document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
else
print(s + "\n");
}
function shouldBe(a, aDescription, b)
{
if (a === b) {
log("PASS: " + aDescription + " should be " + b + " and is.\n");
} else {
log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".\n");
}
}
(function() {
function getX(o)
{
return o.x;
}
var o = {
x: 0,
y: 0
};
getX(o);
getX(o);
for (var i = 0; i < 128; ++i)
o["p" + i] = 1;
shouldBe(getX(o), "getX(o)", 0);
})();
(function() {
function getProtoX(o)
{
return o.protoX;
}
var o = {
__proto__ : {
protoX: 0,
protoY: 0
},
};
getProtoX(o);
getProtoX(o);
o.__proto__ = {
protoY: 1,
protoX: 2
};
shouldBe(getProtoX(o), "getProtoX(o)", 2);
})();
(function() {
function getProtoX(o)
{
return o.protoX;
}
var o = {
__proto__ : {
protoX: 0,
protoY: 0
},
};
getProtoX(o);
getProtoX(o);
delete o.__proto__.protoX;
shouldBe(getProtoX(o), "getProtoX(o)", undefined);
})();
})();
</script>