[deoptimizer] float32 stack on s390 and ppc is on lower 32 bit
Also add more local variables to regress-v8-6077 to force register spill on platform with 32 float registers. BUG= Review-Url: https://codereview.chromium.org/2822073003 Cr-Commit-Position: refs/heads/master@{#44865}
This commit is contained in:
parent
8887945e90
commit
3be834e876
@ -3132,7 +3132,11 @@ uint32_t TranslatedState::GetUInt32Slot(Address fp, int slot_offset) {
|
||||
}
|
||||
|
||||
Float32 TranslatedState::GetFloatSlot(Address fp, int slot_offset) {
|
||||
#if !V8_TARGET_ARCH_S390X && !V8_TARGET_ARCH_PPC64
|
||||
return Float32::FromBits(GetUInt32Slot(fp, slot_offset));
|
||||
#else
|
||||
return Float32::FromBits(Memory::uint32_at(fp + slot_offset));
|
||||
#endif
|
||||
}
|
||||
|
||||
Float64 TranslatedState::GetDoubleSlot(Address fp, int slot_offset) {
|
||||
|
@ -4,35 +4,57 @@
|
||||
|
||||
// Flags: --allow-natives-syntax
|
||||
|
||||
var f32 = new Float32Array(20);
|
||||
var f32 = new Float32Array(40);
|
||||
|
||||
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];
|
||||
var v0 = f32[0];
|
||||
var v1 = f32[1];
|
||||
var v2 = f32[2];
|
||||
var v3 = f32[3];
|
||||
var v4 = f32[4];
|
||||
var v5 = f32[5];
|
||||
var v6 = f32[6];
|
||||
var v7 = f32[7];
|
||||
var v8 = f32[8];
|
||||
var v9 = f32[9];
|
||||
var v10 = f32[10];
|
||||
var v11 = f32[11];
|
||||
var v12 = f32[12];
|
||||
var v13 = f32[13];
|
||||
var v14 = f32[14];
|
||||
var v15 = f32[15];
|
||||
var v16 = f32[16];
|
||||
var v17 = f32[17];
|
||||
var v18 = f32[18];
|
||||
var v19 = f32[19];
|
||||
var v20 = f32[20];
|
||||
var v21 = f32[21];
|
||||
var v22 = f32[22];
|
||||
var v23 = f32[23];
|
||||
var v24 = f32[24];
|
||||
var v25 = f32[25];
|
||||
var v26 = f32[26];
|
||||
var v27 = f32[27];
|
||||
var v28 = f32[28];
|
||||
var v29 = f32[29];
|
||||
var v30 = f32[30];
|
||||
var v31 = f32[31];
|
||||
var v32 = f32[32];
|
||||
var v33 = f32[33];
|
||||
var v34 = f32[34];
|
||||
var v35 = f32[35];
|
||||
var v36 = f32[36];
|
||||
var v37 = f32[37];
|
||||
var v38 = f32[38];
|
||||
var v39 = f32[39];
|
||||
// Side effect to force the deopt after the store.
|
||||
f32[0] = f1 - 1;
|
||||
f32[0] = v1 - 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;
|
||||
return deopt + v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 +
|
||||
v12 + v13 + v14 + v15 + v16 + v17 + v18 + v19 + v20 + v21 + v22 + v23 +
|
||||
v24 + v25 + v26 + v27 + v28 + v29 + v30 + v31 + v32 + v33 + v34 + v35 +
|
||||
v36 + v37 + v38 + v39;
|
||||
}
|
||||
|
||||
var s = "";
|
||||
|
Loading…
Reference in New Issue
Block a user