170d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved.
270d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be
370d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org// found in the LICENSE file.
470d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
570d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org// Flags: --allow-natives-syntax --track-field-types --use-gvn
670d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
770d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgfunction A(id) {
870d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org  this.id = id;
970d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org}
1070d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
1170d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgvar a1 = new A(1);
1270d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgvar a2 = new A(2);
1370d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
1470d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
1570d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgvar g;
1670d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgfunction f(o, value) {
1770d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org  g = o.o;
1870d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org  o.o = value;
1970d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org  return o.o;
2070d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org}
2170d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
2270d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgvar obj = {o: a1};
2370d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org
2470d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgf(obj, a1);
2570d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgf(obj, a1);
2670d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.org%OptimizeFunctionOnNextCall(f);
2770d11c79c7833b9ab1ee185625fcf707b9480a40machenbach@chromium.orgassertEquals(a2.id, f(obj, a2).id);
28