*** Running test #1 (0): Test Object.prototype.__proto__ attributes get: function() { [native code] } set: function() { [native code] } enumerable: false configurable: true PASSED *** Running test #2 (1): Read built-in __proto__ PASSED *** Running test #3 (2): Change built-in's __proto__ chain Number.prototype -> Array.prototype -> Object.prototype Boolean.prototype -> "abc" -> String.prototype -> Object.prototype PASSED *** Running test #4 (3): Change __proto__ to null/undefined PASSED *** Running test #5 (4): Change __proto__ to neither Object nor null, should throw PASSED *** Running test #6 (5): Change object.__proto__ to an object b: 200 c: 200 a (inherited): 100 -- delete b.b -- c: 200 a (inherited): 100 b (inherited): 100 PASSED *** Running test #7 (6): Change object.__proto__ to an array b: 200 0 (inherited): 8 1 (inherited): 3 2 (inherited): 9 3 (inherited): 5 -- a.sort -- b: 200 0 (inherited): 3 1 (inherited): 5 2 (inherited): 8 3 (inherited): 9 -- b.sort -- 0: 3 1: 5 2: 8 3: 9 b: 200 PASSED *** Running test #8 (7): Change array.__proto__ to an object 0: 8 1: 3 2: 9 3: 5 a (inherited): 100 -- sort.apply -- 0: 3 1: 5 2: 8 3: 9 a (inherited): 100 PASSED *** Running test #9 (8): Attempt to change DOM object __proto__ PASSED *** Running test #10 (9): __proto__ and instanceof/isPrototypeOf PASSED *** Running test #11 (10): Verify we reject simple __proto__ cycle PASSED *** Running test #12 (11): Verify proto cache is discarded Before change 1, 2 After change 3, 4 PASSED *** Running test #13 (12): Verify proto getter cache is discarded Before change 1, 7 After change 3, 4 PASSED *** Running test #14 (13): Verify the new proto object is marked as proto, so that changing the proto object invalidates related proto cache Before change undefined, undefined After change 3, 4 After change proto property 9, 4 PASSED *** Running test #15 (14): Verify changing __proto__ works safely with ObjTypeSpec PASSED *** Running test #16 (15): Verify PathTypeHandler successor Types continue to work, case 1 PASSED *** Running test #17 (16): Verify PathTypeHandler successor Types continue to work, case 2 PASSED *** Running test #18 (17): Verify that we can shadow __proto__ property PASSED *** Running test #19 (18): Test fast path o[i] with changed prototype PASSED *** Running test #20 (19): Test fast path o[i] when o.__proto__ == null PASSED *** Running test #21 (20): Test fast path o[i] when o.__proto__.__proto__ == null PASSED *** Running test #22 (21): Test Array methods with changed prototype PASSED *** Running test #23 (22): Test cross-site change prototype PASSED *** Running test #24 (23): Test change prototype of global object PASSED *** Running test #25 (24): Blue 62526: __proto__: ArrayElementEnumerator does not expect non-TypeIds_Object on prototype PASSED *** Running test #26 (25): Blue 114364: __proto__: Object.preventExtensions should make [[prototype]] immutable PASSED *** Running test #27 (26): Blue 245453: __proto__: Invalid has-only-writable-data-property cache PASSED *** Running test #28 (27): Blue 245453: __proto__: Invalid has-only-writable-data-property cache -- verify cross-context PASSED Summary of tests: total executed: 28; passed: 28; failed: 0