| // 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 |
| |
| var f1 = function() { |
| while (1) { |
| } |
| }; |
| |
| function g1() { |
| var s = "hey"; |
| f1 = function() { |
| return true; |
| }; |
| if (f1()) { |
| return s; |
| } |
| }; |
| %PrepareFunctionForOptimization(g1); |
| %OptimizeFunctionOnNextCall(g1); |
| assertEquals("hey", g1()); |
| |
| var f2 = function() { |
| do { |
| } while (1); |
| }; |
| |
| function g2() { |
| var s = "hey"; |
| f2 = function() { |
| return true; |
| }; |
| if (f2()) { |
| return s; |
| } |
| }; |
| %PrepareFunctionForOptimization(g2); |
| %OptimizeFunctionOnNextCall(g2); |
| assertEquals("hey", g2()); |
| |
| var f3 = function() { |
| for (;;) |
| ; |
| }; |
| |
| function g3() { |
| var s = "hey"; |
| f3 = function() { |
| return true; |
| }; |
| if (f3()) { |
| return s; |
| } |
| }; |
| %PrepareFunctionForOptimization(g3); |
| %OptimizeFunctionOnNextCall(g3); |
| assertEquals("hey", g3()); |
| |
| var f4 = function() { |
| for (;;) |
| ; |
| }; |
| |
| function g4() { |
| var s = "hey"; |
| f4 = function() { |
| return true; |
| }; |
| while (f4()) { |
| return s; |
| } |
| }; |
| %PrepareFunctionForOptimization(g4); |
| %OptimizeFunctionOnNextCall(g4); |
| assertEquals("hey", g4()); |