| // 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 | 
 |  | 
 | (function() { | 
 | var x = 23; | 
 | function f() { | 
 |   return x; | 
 | } | 
 | function g() { | 
 |   [x] = [x + 1]; | 
 | } | 
 | function h() { | 
 |   g(); | 
 |   return x; | 
 | } | 
 |  | 
 | function boom() { | 
 |   return h(); | 
 | }; | 
 | %PrepareFunctionForOptimization(boom); | 
 | assertEquals(24, boom()); | 
 | assertEquals(25, boom()); | 
 | assertEquals(26, boom()); | 
 | %OptimizeFunctionOnNextCall(boom); | 
 | assertEquals(27, boom()); | 
 | })(); |