| // Copyright 2017 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 --turbo-escape |
| |
| function f(x) { |
| var o = {a : 0, b: 0}; |
| if (x == 0) { |
| o.a = 1 |
| } else { |
| if (x <= 1) { |
| if (x == 2) { |
| o.a = 2; |
| } else { |
| o.a = 1 |
| } |
| o.a = 2; |
| } else { |
| if (x == 2) { |
| o.a = "x"; |
| } else { |
| o.a = "x"; |
| } |
| o.b = 22; |
| } |
| o.b = 22; |
| } |
| return o.a + 1; |
| } |
| |
| %PrepareFunctionForOptimization(f); |
| f(0,0); |
| f(1,0); |
| f(2,0); |
| f(3,0); |
| f(0,1); |
| f(1,1); |
| f(2,1); |
| f(3,1); |
| %OptimizeFunctionOnNextCall(f); |
| assertEquals(f(2), "x1"); |