1014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Copyright 2015 the V8 project authors. All rights reserved.
2014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// found in the LICENSE file.
4014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
5014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Flags: --allow-natives-syntax
6014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
7014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction Foo(x) {
8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  this.x = x;
9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
10014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
11014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar f = new Foo(1.25);
12014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar g = new Foo(2.25);
13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
14014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction add(a, b) {
15014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  var name = "x";
16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  return a[name] + b[name];
17014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
18014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochassertEquals(3.5, add(f, g));
20014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochassertEquals(3.5, add(g, f));
21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch%OptimizeFunctionOnNextCall(add);
22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochassertEquals(3.5, add(f, g));
23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochassertEquals(3.5, add(g, f));
24