Chromium Code Reviews| Index: test/cctest/test-macro-assembler-mips64.cc |
| diff --git a/test/cctest/test-macro-assembler-mips64.cc b/test/cctest/test-macro-assembler-mips64.cc |
| index 684b554236c123d3c3083fda744a7454a6b0f8e8..6cac726c212778a3f0749726c84a752b6d345e14 100644 |
| --- a/test/cctest/test-macro-assembler-mips64.cc |
| +++ b/test/cctest/test-macro-assembler-mips64.cc |
| @@ -323,21 +323,22 @@ TEST(jump_tables5) { |
| Label labels[kNumCases]; |
| Label done; |
| - __ daddiu(sp, sp, -8); |
| - __ sd(ra, MemOperand(sp)); |
| + __ Push(ra); |
| + |
| + // Opposite of Align(8) as we have unaligned number of instructions in the |
| + // following block before the first dd(). |
|
ivica.bogosavljevic
2016/01/25 11:40:03
Already made a remark
balazs.kilvady
2016/01/25 12:46:17
So do I :)
|
| + if ((masm->pc_offset() & 7) == 0) { |
| + __ nop(); |
| + } |
| - __ Align(8); |
| { |
| - __ BlockTrampolinePoolFor(kNumCases * 2 + 7 + 1); |
| + __ BlockTrampolinePoolFor(kNumCases * 2 + 6 + 1); |
| PredictableCodeSizeScope predictable( |
| - masm, kNumCases * kPointerSize + ((7 + 1) * Assembler::kInstrSize)); |
| - Label here; |
| + masm, kNumCases * kPointerSize + ((6 + 1) * Assembler::kInstrSize)); |
| - __ bal(&here); |
| - __ dsll(at, a0, 3); // In delay slot. |
| - __ bind(&here); |
| - __ daddu(at, at, ra); |
| - __ ld(at, MemOperand(at, 6 * Assembler::kInstrSize)); |
| + __ addiupc(at, 6 + 1); |
| + __ dlsa(at, at, a0, 3); |
| + __ ld(at, MemOperand(at)); |
| __ jalr(at); |
| __ nop(); // Branch delay slot nop. |
| __ bc(&done); |
| @@ -351,15 +352,13 @@ TEST(jump_tables5) { |
| for (int i = 0; i < kNumCases; ++i) { |
| __ bind(&labels[i]); |
| - __ lui(v0, (values[i] >> 16) & 0xffff); |
| - __ ori(v0, v0, values[i] & 0xffff); |
| + __ li(v0, values[i]); |
| __ jr(ra); |
| __ nop(); |
| } |
| __ bind(&done); |
| - __ ld(ra, MemOperand(sp)); |
| - __ daddiu(sp, sp, 8); |
| + __ Pop(ra); |
| __ jr(ra); |
| __ nop(); |