Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: runtime/vm/assembler_arm64_test.cc

Issue 2957773002: Revert "VM: Fix ARM64 assembler tests that assumed there was a stack red zone" (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/assembler_arm64_test.cc
diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
index 1a55d4ce68b3e35296f6c09ca75fa5a843b7ea17..624a950e717bddb4bfab28bd343bdac7f041024c 100644
--- a/runtime/vm/assembler_arm64_test.cc
+++ b/runtime/vm/assembler_arm64_test.cc
@@ -15,22 +15,6 @@ namespace dart {
#define __ assembler->
-
-// Copies the stack pointer to our "SP", actually R15. Also moves the real SP
-// down so that we can do push and pop in tests. The Linux ABI does not seem
-// to have a red zone.
-static void SetUpStackFrame(Assembler* assembler) {
- __ SetupDartSP();
- __ EnterFrame(0);
-}
-
-
-static void TearDownStackFrame(Assembler* assembler) {
- __ LeaveFrame();
- __ RestoreCSP();
-}
-
-
ASSEMBLER_TEST_GENERATE(Simple, assembler) {
__ add(R0, ZR, Operand(ZR));
__ add(R0, R0, Operand(42));
@@ -404,12 +388,12 @@ ASSEMBLER_TEST_RUN(WordOverflow, test) {
// Loads and Stores.
ASSEMBLER_TEST_GENERATE(SimpleLoadStore, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
__ str(R1, Address(SP, -1 * kWordSize, Address::PreIndex));
__ ldr(R0, Address(SP, 1 * kWordSize, Address::PostIndex));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -421,13 +405,13 @@ ASSEMBLER_TEST_RUN(SimpleLoadStore, test) {
ASSEMBLER_TEST_GENERATE(SimpleLoadStoreHeapTag, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
__ add(R2, SP, Operand(1));
__ str(R1, Address(R2, -1));
__ ldr(R0, Address(R2, -1));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -439,7 +423,7 @@ ASSEMBLER_TEST_RUN(SimpleLoadStoreHeapTag, test) {
ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
// Largest negative offset that can fit in the signed 9-bit immediate field.
@@ -448,7 +432,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreLargeIndex, assembler) {
__ ldr(R0, Address(SP, 31 * kWordSize, Address::PostIndex));
// Correction.
__ add(SP, SP, Operand(kWordSize)); // Restore SP.
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -460,14 +444,14 @@ ASSEMBLER_TEST_RUN(LoadStoreLargeIndex, test) {
ASSEMBLER_TEST_GENERATE(LoadStoreLargeOffset, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
__ sub(SP, SP, Operand(512 * kWordSize));
__ str(R1, Address(SP, 512 * kWordSize, Address::Offset));
__ add(SP, SP, Operand(512 * kWordSize));
__ ldr(R0, Address(SP));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -479,7 +463,7 @@ ASSEMBLER_TEST_RUN(LoadStoreLargeOffset, test) {
ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
__ movz(R2, Immediate(0xfff8), 0);
@@ -490,7 +474,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreExtReg, assembler) {
__ sub(SP, SP, Operand(kWordSize));
__ ldr(R0, Address(SP));
__ add(SP, SP, Operand(kWordSize));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -502,7 +486,7 @@ ASSEMBLER_TEST_RUN(LoadStoreExtReg, test) {
ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(43), 0);
__ movz(R1, Immediate(42), 0);
__ movz(R2, Immediate(10), 0);
@@ -511,7 +495,7 @@ ASSEMBLER_TEST_GENERATE(LoadStoreScaledReg, assembler) {
__ str(R1, Address(SP, R2, UXTX, Address::Scaled));
__ ldr(R0, Address(SP, R2, UXTX, Address::Scaled));
__ add(SP, SP, Operand(10 * kWordSize));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -523,12 +507,12 @@ ASSEMBLER_TEST_RUN(LoadStoreScaledReg, test) {
ASSEMBLER_TEST_GENERATE(LoadSigned32Bit, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadImmediate(R1, 0xffffffff);
__ str(R1, Address(SP, -4, Address::PreIndex, kWord), kWord);
__ ldr(R0, Address(SP), kWord);
__ ldr(R1, Address(SP, 4, Address::PostIndex, kWord), kWord);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -540,13 +524,13 @@ ASSEMBLER_TEST_RUN(LoadSigned32Bit, test) {
ASSEMBLER_TEST_GENERATE(SimpleLoadStorePair, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadImmediate(R2, 43);
__ LoadImmediate(R3, 42);
__ stp(R2, R3, Address(SP, -2 * kWordSize, Address::PairPreIndex));
__ ldp(R0, R1, Address(SP, 2 * kWordSize, Address::PairPostIndex));
__ sub(R0, R0, Operand(R1));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -558,7 +542,7 @@ ASSEMBLER_TEST_RUN(SimpleLoadStorePair, test) {
ASSEMBLER_TEST_GENERATE(LoadStorePairOffset, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadImmediate(R2, 43);
__ LoadImmediate(R3, 42);
__ sub(SP, SP, Operand(4 * kWordSize));
@@ -566,7 +550,7 @@ ASSEMBLER_TEST_GENERATE(LoadStorePairOffset, assembler) {
__ ldp(R0, R1, Address::Pair(SP, 2 * kWordSize));
__ add(SP, SP, Operand(4 * kWordSize));
__ sub(R0, R0, Operand(R1));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -578,7 +562,7 @@ ASSEMBLER_TEST_RUN(LoadStorePairOffset, test) {
ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(40), 0);
__ movz(R1, Immediate(42), 0);
__ Push(R0);
@@ -589,7 +573,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore, assembler) {
__ cmp(TMP, Operand(0));
__ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
__ Pop(R0); // 42
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -602,7 +586,7 @@ ASSEMBLER_TEST_RUN(Semaphore, test) {
ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ movz(R0, Immediate(40), 0);
__ movz(R1, Immediate(42), 0);
__ Push(R0);
@@ -611,7 +595,7 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore, assembler) {
__ stxr(TMP, R1, SP); // IP == 1, failure
__ Pop(R0); // 40
__ add(R0, R0, Operand(TMP));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -624,8 +608,7 @@ ASSEMBLER_TEST_RUN(FailedSemaphore, test) {
ASSEMBLER_TEST_GENERATE(Semaphore32, assembler) {
- SetUpStackFrame(assembler);
- __ EnterFrame(0);
+ __ SetupDartSP();
__ movz(R0, Immediate(40), 0);
__ add(R0, R0, Operand(R0, LSL, 32));
__ Push(R0);
@@ -642,7 +625,7 @@ ASSEMBLER_TEST_GENERATE(Semaphore32, assembler) {
__ cmp(TMP, Operand(0));
__ b(&retry, NE); // NE if context switch occurred between ldrex and strex.
__ Pop(R0); // 42 + 42 * 2**32
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -658,8 +641,7 @@ ASSEMBLER_TEST_RUN(Semaphore32, test) {
ASSEMBLER_TEST_GENERATE(FailedSemaphore32, assembler) {
- SetUpStackFrame(assembler);
- __ EnterFrame(0);
+ __ SetupDartSP();
__ movz(R0, Immediate(40), 0);
__ add(R0, R0, Operand(R0, LSL, 32));
__ Push(R0);
@@ -672,7 +654,7 @@ ASSEMBLER_TEST_GENERATE(FailedSemaphore32, assembler) {
__ stxr(TMP, R1, SP, kWord); // IP == 1, failure
__ Pop(R0); // 40
__ add(R0, R0, Operand(TMP));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -1942,11 +1924,11 @@ static void LeaveTestFrame(Assembler* assembler) {
// Loading immediate values with the object pool.
ASSEMBLER_TEST_GENERATE(LoadImmediatePPSmall, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadImmediate(R0, 42);
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -1957,11 +1939,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPSmall, test) {
ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadImmediate(R0, 0xf1234123);
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -1972,11 +1954,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPMed, test) {
ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed2, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadImmediate(R0, 0x4321f1234124);
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -1987,11 +1969,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPMed2, test) {
ASSEMBLER_TEST_GENERATE(LoadImmediatePPLarge, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadImmediate(R0, 0x9287436598237465);
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2004,11 +1986,11 @@ ASSEMBLER_TEST_RUN(LoadImmediatePPLarge, test) {
// LoadObject null.
ASSEMBLER_TEST_GENERATE(LoadObjectNull, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadObject(R0, Object::null_object());
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2019,11 +2001,11 @@ ASSEMBLER_TEST_RUN(LoadObjectNull, test) {
ASSEMBLER_TEST_GENERATE(LoadObjectTrue, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadObject(R0, Bool::True());
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2034,11 +2016,11 @@ ASSEMBLER_TEST_RUN(LoadObjectTrue, test) {
ASSEMBLER_TEST_GENERATE(LoadObjectFalse, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
EnterTestFrame(assembler);
__ LoadObject(R0, Bool::False());
LeaveTestFrame(assembler);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2226,11 +2208,11 @@ ASSEMBLER_TEST_RUN(Fmovsr, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdPrePostIndex, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V1, 42.0);
__ fstrd(V1, Address(SP, -1 * kWordSize, Address::PreIndex));
__ fldrd(V0, Address(SP, 1 * kWordSize, Address::PostIndex));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2242,13 +2224,13 @@ ASSEMBLER_TEST_RUN(FldrdFstrdPrePostIndex, test) {
ASSEMBLER_TEST_GENERATE(FldrsFstrsPrePostIndex, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V1, 42.0);
__ fcvtsd(V2, V1);
__ fstrs(V2, Address(SP, -1 * kWordSize, Address::PreIndex));
__ fldrs(V3, Address(SP, 1 * kWordSize, Address::PostIndex));
__ fcvtds(V0, V3);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2260,7 +2242,7 @@ ASSEMBLER_TEST_RUN(FldrsFstrsPrePostIndex, test) {
ASSEMBLER_TEST_GENERATE(FldrqFstrqPrePostIndex, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V1, 21.0);
__ LoadDImmediate(V2, 21.0);
__ LoadImmediate(R1, 42);
@@ -2273,7 +2255,7 @@ ASSEMBLER_TEST_GENERATE(FldrqFstrqPrePostIndex, assembler) {
__ PopDouble(V0);
__ PopDouble(V1);
__ faddd(V0, V0, V1);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2446,7 +2428,7 @@ ASSEMBLER_TEST_RUN(Fsubd, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdHeapTag, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 43.0);
__ LoadDImmediate(V1, 42.0);
__ AddImmediate(SP, SP, -1 * kWordSize);
@@ -2454,7 +2436,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdHeapTag, assembler) {
__ fstrd(V1, Address(R2, -1));
__ fldrd(V0, Address(R2, -1));
__ AddImmediate(SP, 1 * kWordSize);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2466,7 +2448,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdHeapTag, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 43.0);
__ LoadDImmediate(V1, 42.0);
// Largest negative offset that can fit in the signed 9-bit immediate field.
@@ -2475,7 +2457,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeIndex, assembler) {
__ fldrd(V0, Address(SP, 31 * kWordSize, Address::PostIndex));
// Correction.
__ add(SP, SP, Operand(kWordSize)); // Restore SP.
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2487,14 +2469,14 @@ ASSEMBLER_TEST_RUN(FldrdFstrdLargeIndex, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdLargeOffset, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 43.0);
__ LoadDImmediate(V1, 42.0);
__ sub(SP, SP, Operand(512 * kWordSize));
__ fstrd(V1, Address(SP, 512 * kWordSize, Address::Offset));
__ add(SP, SP, Operand(512 * kWordSize));
__ fldrd(V0, Address(SP));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2506,7 +2488,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdLargeOffset, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdExtReg, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 43.0);
__ LoadDImmediate(V1, 42.0);
__ movz(R2, Immediate(0xfff8), 0);
@@ -2517,7 +2499,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdExtReg, assembler) {
__ sub(SP, SP, Operand(kWordSize));
__ fldrd(V0, Address(SP));
__ add(SP, SP, Operand(kWordSize));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2529,7 +2511,7 @@ ASSEMBLER_TEST_RUN(FldrdFstrdExtReg, test) {
ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 43.0);
__ LoadDImmediate(V1, 42.0);
__ movz(R2, Immediate(10), 0);
@@ -2538,7 +2520,7 @@ ASSEMBLER_TEST_GENERATE(FldrdFstrdScaledReg, assembler) {
__ fstrd(V1, Address(SP, R2, UXTX, Address::Scaled));
__ fldrd(V0, Address(SP, R2, UXTX, Address::Scaled));
__ add(SP, SP, Operand(10 * kWordSize));
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -2993,7 +2975,7 @@ ASSEMBLER_TEST_RUN(Vdivd, test) {
ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 21.0);
__ vdupd(V1, V0, 0);
@@ -3005,7 +2987,7 @@ ASSEMBLER_TEST_GENERATE(Vdupd, assembler) {
__ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
__ faddd(V0, V2, V3);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -3017,7 +2999,7 @@ ASSEMBLER_TEST_RUN(Vdupd, test) {
ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 21.0);
__ fcvtsd(V0, V0);
__ vdups(V1, V0, 0);
@@ -3039,7 +3021,7 @@ ASSEMBLER_TEST_GENERATE(Vdups, assembler) {
__ faddd(V0, V1, V1);
__ faddd(V0, V0, V2);
__ faddd(V0, V0, V3);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -3051,7 +3033,7 @@ ASSEMBLER_TEST_RUN(Vdups, test) {
ASSEMBLER_TEST_GENERATE(Vinsd, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V5, 42.0);
__ vinsd(V1, 1, V5, 0); // V1[1] <- V0[0].
@@ -3063,7 +3045,7 @@ ASSEMBLER_TEST_GENERATE(Vinsd, assembler) {
__ fldrd(V3, Address(SP, 1 * dword_bytes, Address::PostIndex));
__ fmovdd(V0, V3);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -3075,7 +3057,7 @@ ASSEMBLER_TEST_RUN(Vinsd, test) {
ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ LoadDImmediate(V0, 21.0);
__ fcvtsd(V0, V0);
__ vinss(V1, 3, V0, 0);
@@ -3098,7 +3080,7 @@ ASSEMBLER_TEST_GENERATE(Vinss, assembler) {
__ faddd(V0, V0, V1);
__ faddd(V0, V0, V2);
__ faddd(V0, V0, V3);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
@@ -3894,7 +3876,7 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
// R1: growable array.
// R2: current thread.
ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
- SetUpStackFrame(assembler);
+ __ SetupDartSP();
__ Push(CODE_REG);
__ Push(THR);
__ Push(LR);
@@ -3904,7 +3886,7 @@ ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
__ Pop(LR);
__ Pop(THR);
__ Pop(CODE_REG);
- TearDownStackFrame(assembler);
+ __ RestoreCSP();
__ ret();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698