|  | // Copyright 2014 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 --opt | 
|  |  | 
|  | // Inlining shift with holey smi arrays shouldn't deopt just because it | 
|  | // encounters the hole on the copy step. | 
|  | function doShift(a) { | 
|  | var x = a.shift(); | 
|  | return x; | 
|  | } | 
|  |  | 
|  | function makeArray() { | 
|  | var a = [1, 2,, 3]; | 
|  | a[0] = 2; | 
|  | return a; | 
|  | } | 
|  |  | 
|  | %PrepareFunctionForOptimization(doShift); | 
|  | doShift(makeArray()); | 
|  | doShift(makeArray()); | 
|  | %OptimizeFunctionOnNextCall(doShift); | 
|  | doShift(makeArray()); | 
|  | assertOptimized(doShift); |