| // Copyright 2016 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 --stress-inline |
| |
| "use strict"; |
| |
| function h() { |
| var stack = new Error('boom').stack; |
| print(stack); |
| %DeoptimizeFunction(f1); |
| %DeoptimizeFunction(f2); |
| %DeoptimizeFunction(f3); |
| %DeoptimizeFunction(g); |
| %DeoptimizeFunction(h); |
| return 1; |
| } |
| %NeverOptimizeFunction(h); |
| |
| function g(v) { |
| return h(); |
| } |
| |
| |
| function f1() { |
| var o = {}; |
| o.__defineGetter__('p', g); |
| o.p; |
| }; |
| %PrepareFunctionForOptimization(f1); |
| f1(); |
| f1(); |
| %OptimizeFunctionOnNextCall(f1); |
| f1(); |
| |
| |
| function f2() { |
| var o = {}; |
| o.__defineSetter__('q', g); |
| o.q = 1; |
| }; |
| %PrepareFunctionForOptimization(f2); |
| f2(); |
| f2(); |
| %OptimizeFunctionOnNextCall(f2); |
| f2(); |
| |
| |
| function A() { |
| return h(); |
| } |
| |
| function f3() { |
| new A(); |
| }; |
| %PrepareFunctionForOptimization(f3); |
| f3(); |
| f3(); |
| %OptimizeFunctionOnNextCall(f3); |
| f3(); |