// 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: --expose-gc --track-field-types

function f1(a) { return {x:a, v:''}; }
function f2(a) { return {x:{v:a}, v:''}; }
function f3(a) { return {x:[], v:{v:''}}; }
f3([0]);
a = f1(1);
a.__defineGetter__('v', function() { gc(); return f2(this); });
a.v;
f3(1);