| // Copyright 2018 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. |
| |
| // TODO(cbruni): enable always opt once v8:7438 |
| // Flags: --expose-gc --no-always-opt |
| |
| const f = eval(`(function f(i) { |
| if (i == 0) { |
| class Derived extends Object { |
| constructor() { |
| super(); |
| ${"this.a=1;".repeat(0x3fffe-8)} |
| } |
| } |
| return Derived; |
| } |
| |
| class DerivedN extends f(i-1) { |
| constructor() { |
| super(); |
| ${"this.a=1;".repeat(0x40000-8)} |
| } |
| } |
| |
| return DerivedN; |
| })`); |
| |
| let a = new (f(0x7ff))(); |
| a.a = 1; |
| gc(); |
| assertEquals(1, a.a); |