| Index: test/mjsunit/dictionary-properties.js
|
| diff --git a/test/mjsunit/dictionary-properties.js b/test/mjsunit/dictionary-properties.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c70c598ac8cb617f7b0911a5964c1185c4f1b881
|
| --- /dev/null
|
| +++ b/test/mjsunit/dictionary-properties.js
|
| @@ -0,0 +1,46 @@
|
| +// Copyright 2014 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Flags: --allow-natives-syntax
|
| +
|
| +// Test loading existent and nonexistent properties from dictionary
|
| +// mode objects.
|
| +
|
| +function SlowObject() {
|
| + this.foo = 1;
|
| + this.bar = 2;
|
| + this.qux = 3;
|
| + delete this.qux;
|
| + assertFalse(%HasFastProperties(this));
|
| +}
|
| +function SlowObjectWithBaz() {
|
| + var o = new SlowObject();
|
| + o.baz = 4;
|
| + return o;
|
| +}
|
| +
|
| +function Load(o) {
|
| + return o.baz;
|
| +}
|
| +
|
| +for (var i = 0; i < 10; i++) {
|
| + var o1 = new SlowObject();
|
| + var o2 = SlowObjectWithBaz();
|
| + assertEquals(undefined, Load(o1));
|
| + assertEquals(4, Load(o2));
|
| +}
|
| +
|
| +// Test objects getting optimized as fast prototypes.
|
| +
|
| +function SlowPrototype() {
|
| + this.foo = 1;
|
| +}
|
| +SlowPrototype.prototype.bar = 2;
|
| +SlowPrototype.prototype.baz = 3;
|
| +delete SlowPrototype.prototype.baz;
|
| +
|
| +assertFalse(%HasFastProperties(SlowPrototype.prototype));
|
| +var fast_proto = new SlowPrototype();
|
| +assertTrue(%HasFastProperties(SlowPrototype.prototype));
|
| +assertTrue(%HasFastProperties(fast_proto.__proto__));
|
|
|