| // Copyright 2019 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 |
| |
| function mainFreeze() { |
| const v2 = {foo:1.1}; |
| Object.freeze(v2); |
| const v12 = {foo:2.2}; |
| Object.preventExtensions(v12); |
| Object.freeze(v12); |
| const v18 = {foo:Object}; |
| v12.__proto__ = 0; |
| v2[5] = 1; |
| } |
| mainFreeze(); |
| |
| function mainSeal() { |
| const v2 = {foo:1.1}; |
| Object.seal(v2); |
| const v12 = {foo:2.2}; |
| Object.preventExtensions(v12); |
| Object.seal(v12); |
| const v18 = {foo:Object}; |
| v12.__proto__ = 0; |
| v2[5] = 1; |
| } |
| mainSeal(); |
| |
| function testSeal() { |
| a = new RangeError(null, null, null); |
| a.toFixed = () => {}; |
| e = Object.seal(a); |
| a = new RangeError(null, null, null); |
| a.toFixed = () => {}; |
| k = Object.preventExtensions(a); |
| l = Object.seal(a); |
| a.toFixed = () => {}; |
| assertThrows(() => { |
| Array.prototype.unshift.call(l, false, Infinity); |
| }, TypeError); |
| } |
| testSeal(); |
| |
| function testFreeze() { |
| a = new RangeError(null, null, null); |
| a.toFixed = () => {}; |
| e = Object.freeze(a); |
| a = new RangeError(null, null, null); |
| a.toFixed = () => {}; |
| k = Object.preventExtensions(a); |
| l = Object.freeze(a); |
| a.toFixed = () => {}; |
| assertThrows(() => { |
| Array.prototype.unshift.call(l, false, Infinity); |
| }, TypeError); |
| } |
| testFreeze(); |