798ffc9d67
BUG=v8:6077 Review-Url: https://codereview.chromium.org/2765323002 Cr-Commit-Position: refs/heads/master@{#44035}
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
// 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 f32 = new Float32Array(20);
|
|
|
|
function foo(f32, deopt) {
|
|
var f0 = f32[0];
|
|
var f1 = f32[1];
|
|
var f2 = f32[2];
|
|
var f3 = f32[3];
|
|
var f4 = f32[4];
|
|
var f5 = f32[5];
|
|
var f6 = f32[6];
|
|
var f7 = f32[7];
|
|
var f8 = f32[8];
|
|
var f9 = f32[9];
|
|
var f10 = f32[10];
|
|
var f11 = f32[11];
|
|
var f12 = f32[12];
|
|
var f13 = f32[13];
|
|
var f14 = f32[14];
|
|
var f15 = f32[15];
|
|
var f16 = f32[16];
|
|
var f17 = f32[17];
|
|
var f18 = f32[18];
|
|
var f19 = f32[19];
|
|
// Side effect to force the deopt after the store.
|
|
f32[0] = f1 - 1;
|
|
// Here we deopt once we warm up with numbers, but then we
|
|
// pass a string as {deopt}.
|
|
return deopt + f0 + f1 + f2 + f3 + f4 + f5 + f6 + f7 + f8 + f9 + f10 + f11 +
|
|
f12 + f13 + f14 + f15 + f16 + f17 + f18 + f19;
|
|
}
|
|
|
|
var s = "";
|
|
for (var i = 0; i < f32.length; i++) {
|
|
f32[i] = i;
|
|
s += i;
|
|
}
|
|
|
|
foo(f32, 0);
|
|
foo(f32, 0);
|
|
%OptimizeFunctionOnNextCall(foo);
|
|
assertEquals("x" + s, foo(f32, "x"));
|