// 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 var array = [[{}], [1.1]]; function transition() { for (var i = 0; i < array.length; i++) { var arr = array[i]; arr[0] = {}; } } var double_arr2 = [1.1, 2.2]; var flag = 0; function swap() { try { } catch (e) { } // Prevent Crankshaft from inlining this. if (flag == 1) { array[1] = double_arr2; } } var expected = 6.176516726456e-312; function f() { swap(); double_arr2[0] = 1; transition(); double_arr2[1] = expected; }; %PrepareFunctionForOptimization(f); for (var i = 0; i < 3; i++) { f(); } %OptimizeFunctionOnNextCall(f); flag = 1; f(); assertEquals(expected, double_arr2[1]);