text: // Copyright 2015 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 --expose-gc
  
  function Inner() {
    this.inner_name = "inner";
  }
  
  function Boom() {
    this.boom = "boom";
  }
  
  function Outer() {
    this.outer_name = "outer";
  }
  
  function SetInner(inner, value) {
    inner.prop = value;
  }
  
  function SetOuter(outer, value) {
    outer.inner = value;
  }
  
  var inner1 = new Inner();
  var inner2 = new Inner();
  
  SetInner(inner1, 10);
  SetInner(inner2, 10);
  
  var outer1 = new Outer();
  var outer2 = new Outer();
  var outer3 = new Outer();
  
  SetOuter(outer1, inner1);
  SetOuter(outer1, inner1);
  SetOuter(outer1, inner1);
  
  SetOuter(outer2, inner2);
  SetOuter(outer2, inner2);
  SetOuter(outer2, inner2);
  
  SetOuter(outer3, inner2);
  SetOuter(outer3, inner2);
  SetOuter(outer3, inner2);
  
  
  SetInner(inner2, 6.5);
  
  outer1 = null;
  inner1 = null;
  
  gc();
  
  var boom = new Boom();
  SetOuter(outer2, boom);
  
  gc();
  