1c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 2c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org// found in the LICENSE file. 4c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org// Flags: --allow-natives-syntax 5c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 6c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfunction genM() { 7c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org "use strict"; 8c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org return function () { 9c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org return this.field; 10c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org }; 11c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org} 12c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 13c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfunction genR() { 14c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org var x = { 15c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org field: 10 16c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org } 17c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org return x; 18c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org} 19c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 20c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgmethod = {}; 21c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgreceiver = {}; 22c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 23c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgmethod = genM("A"); 24c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgreceiver = genR("A"); 25c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 26c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgvar foo = (function () { 27c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org return function suspect (name) { 28c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org "use strict"; 29c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org return method.apply(receiver, arguments); 30c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org } 31c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org})(); 32c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org 33c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfoo("a", "b", "c"); 34c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfoo("a", "b", "c"); 35c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfoo("a", "b", "c"); 36c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.org%OptimizeFunctionOnNextCall(foo); 37c2e08d7d6b03e672e13fc3bf274a292009decce6machenbach@chromium.orgfoo("a", "b", "c"); 38