| var someGlobal; |
| |
| // This is a simple speed test. It should go fast. |
| |
| function foo() { |
| var myObject = {}; |
| for (var i = 0; i < 10000000; ++i) { |
| someGlobal = myObject.undefinedProperty; |
| } |
| return someGlobal; |
| } |
| result = foo(); |
| if (result != undefined) |
| throw new Error("Bad result: " + result); |
| |
| // This test checks that a cached property lookup miss doesn't continue to fire when the property suddenly appears on the object. |
| |
| function bar() { |
| var myObject = {}; |
| for (var i = 0; i < 100000000; ++i) { |
| someGlobal = myObject.someProperty; |
| if (i == 50000000) |
| myObject.someProperty = 1; |
| } |
| return someGlobal; |
| } |
| var result = bar(); |
| if (result != 1) |
| throw new Error("Bad result: " + result); |
| someGlobal = undefined; |
| |
| // This test checks that a cached property lookup miss doesn't continue to fire when the property suddenly appears on the object's prototype. |
| |
| function baz() { |
| var myPrototype = {} |
| var myObject = {}; |
| myObject.__proto__ = myPrototype; |
| for (var i = 0; i < 100000000; ++i) { |
| someGlobal = myObject.someProperty; |
| if (i == 50000000) |
| myPrototype.someProperty = 2; |
| } |
| return someGlobal; |
| } |
| var result = baz(); |
| if (result != 2) |
| throw new Error("Bad result: " + result); |
| |