| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2016 the V8 project authors. All rights reserved. | 
|  | 2 // Use of this source code is governed by a BSD-style license that can be | 
|  | 3 // found in the LICENSE file. | 
|  | 4 // | 
|  | 5 // Flags: --mark-shared-functions-for-tier-up --allow-natives-syntax | 
|  | 6 // Flags: --ignition-staging --no-turbo | 
|  | 7 // Flags: --crankshaft --no-always-opt | 
|  | 8 | 
|  | 9 // If we are always or never optimizing it is useless. | 
|  | 10 assertFalse(isAlwaysOptimize()); | 
|  | 11 assertFalse(isNeverOptimize()); | 
|  | 12 | 
|  | 13 (function() { | 
|  | 14   var sum = 0; | 
|  | 15   var i = 0; | 
|  | 16   for (var i = 0; i < 5; ++i) { | 
|  | 17     var f = function(x) { | 
|  | 18       return 2 * x; | 
|  | 19     } | 
|  | 20     sum += f(i); | 
|  | 21 | 
|  | 22     if (i == 1) { | 
|  | 23       // f must be interpreted code. | 
|  | 24       assertTrue(isInterpreted(f)); | 
|  | 25 | 
|  | 26       // Allow it to run twice (i = 0, 1), then tier-up to baseline. | 
|  | 27       %BaselineFunctionOnNextCall(f); | 
|  | 28     } else if (i == 2) { | 
|  | 29       // Tier-up at i = 2 should only go up to baseline. | 
|  | 30       assertTrue(isBaselined(f)); | 
|  | 31 | 
|  | 32     } else if (i == 3) { | 
|  | 33       // Now f must be baseline code. | 
|  | 34       assertTrue(isBaselined(f)); | 
|  | 35 | 
|  | 36       // Run two more times (i = 2, 3), then tier-up to optimized. | 
|  | 37       %OptimizeFunctionOnNextCall(f); | 
|  | 38     } else if (i == 4) { | 
|  | 39       // Tier-up at i = 4 should now go up to crankshaft. | 
|  | 40       assertTrue(isCrankshafted(f)); | 
|  | 41     } | 
|  | 42   } | 
|  | 43 })() | 
| OLD | NEW | 
|---|