| Index: runtime/vm/assembler_arm64_test.cc
 | 
| diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
 | 
| index 72043716a91856990adeebb574ae7a3b88713d4a..a187ee8e6130d730ea71aff76b37f4728f32fdb8 100644
 | 
| --- a/runtime/vm/assembler_arm64_test.cc
 | 
| +++ b/runtime/vm/assembler_arm64_test.cc
 | 
| @@ -1622,81 +1622,100 @@ ASSEMBLER_TEST_RUN(LoadImmediateMedNeg4, test) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +static void EnterTestFrame(Assembler* assembler) {
 | 
| +  __ EnterFrame(0);
 | 
| +  __ Push(CODE_REG);
 | 
| +  __ TagAndPushPP();
 | 
| +  __ ldr(CODE_REG, Address(R0, VMHandles::kOffsetOfRawPtrInHandle));
 | 
| +  __ LoadPoolPointer(PP);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +static void LeaveTestFrame(Assembler* assembler) {
 | 
| +  __ PopAndUntagPP();
 | 
| +  __ Pop(CODE_REG);
 | 
| +  __ LeaveFrame();
 | 
| +}
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
|  // Loading immediate values with the object pool.
 | 
|  ASSEMBLER_TEST_GENERATE(LoadImmediatePPSmall, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ LoadImmediate(R0, 42);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_RUN(LoadImmediatePPSmall, test) {
 | 
| -  EXPECT_EQ(42, test->Invoke<int64_t>());
 | 
| +  EXPECT_EQ(42, test->InvokeWithCode<int64_t>());
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ LoadImmediate(R0, 0xf1234123);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_RUN(LoadImmediatePPMed, test) {
 | 
| -  EXPECT_EQ(0xf1234123, test->Invoke<int64_t>());
 | 
| +  EXPECT_EQ(0xf1234123, test->InvokeWithCode<int64_t>());
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed2, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ LoadImmediate(R0, 0x4321f1234124);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_RUN(LoadImmediatePPMed2, test) {
 | 
| -  EXPECT_EQ(0x4321f1234124, test->Invoke<int64_t>());
 | 
| +  EXPECT_EQ(0x4321f1234124, test->InvokeWithCode<int64_t>());
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(LoadImmediatePPLarge, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ LoadImmediate(R0, 0x9287436598237465);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_RUN(LoadImmediatePPLarge, test) {
 | 
| -  EXPECT_EQ(static_cast<int64_t>(0x9287436598237465), test->Invoke<int64_t>());
 | 
| +  EXPECT_EQ(static_cast<int64_t>(0x9287436598237465),
 | 
| +            test->InvokeWithCode<int64_t>());
 | 
|  }
 | 
|  
 | 
|  
 | 
|  #define ASSEMBLER_TEST_RUN_WITH_THREAD(result_type, var_name) \
 | 
|    Thread* thread = Thread::Current(); \
 | 
| -  result_type var_name = test->Invoke<result_type>(thread);
 | 
| +  result_type var_name = test->InvokeWithCode<result_type>(thread);
 | 
|  
 | 
|  
 | 
|  // LoadObject null.
 | 
|  ASSEMBLER_TEST_GENERATE(LoadObjectNull, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ Push(THR);
 | 
| -  __ mov(THR, R0);
 | 
| +  __ mov(THR, R1);
 | 
|    __ LoadObject(R0, Object::null_object());
 | 
|    __ Pop(THR);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
| @@ -1710,12 +1729,12 @@ ASSEMBLER_TEST_RUN(LoadObjectNull, test) {
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(LoadObjectTrue, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ Push(THR);
 | 
| -  __ mov(THR, R0);
 | 
| +  __ mov(THR, R1);
 | 
|    __ LoadObject(R0, Bool::True());
 | 
|    __ Pop(THR);
 | 
| -  __ LeaveDartFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
| @@ -1729,12 +1748,12 @@ ASSEMBLER_TEST_RUN(LoadObjectTrue, test) {
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(LoadObjectFalse, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    __ Push(THR);
 | 
| -  __ mov(THR, R0);
 | 
| +  __ mov(THR, R1);
 | 
|    __ LoadObject(R0, Bool::False());
 | 
|    __ Pop(THR);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
| @@ -3553,6 +3572,7 @@ ASSEMBLER_TEST_RUN(ReciprocalSqrt, test) {
 | 
|  // R2: current thread.
 | 
|  ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| +  __ Push(CODE_REG);
 | 
|    __ Push(THR);
 | 
|    __ Push(LR);
 | 
|    __ mov(THR, R2);
 | 
| @@ -3561,6 +3581,7 @@ ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
 | 
|                       R0);
 | 
|    __ Pop(LR);
 | 
|    __ Pop(THR);
 | 
| +  __ Pop(CODE_REG);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
| @@ -3568,9 +3589,8 @@ ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
 | 
|  
 | 
|  ASSEMBLER_TEST_GENERATE(ComputeRange, assembler) {
 | 
|    __ SetupDartSP(kTestStackSpace);
 | 
| -  __ EnterStubFrame();
 | 
| +  EnterTestFrame(assembler);
 | 
|    Label miss, done;
 | 
| -  __ mov(R1, R0);
 | 
|    __ ComputeRange(R0, R1, R2, &miss);
 | 
|    __ b(&done);
 | 
|  
 | 
| @@ -3578,14 +3598,14 @@ ASSEMBLER_TEST_GENERATE(ComputeRange, assembler) {
 | 
|    __ LoadImmediate(R0, -1);
 | 
|  
 | 
|    __ Bind(&done);
 | 
| -  __ LeaveStubFrame();
 | 
| +  LeaveTestFrame(assembler);
 | 
|    __ mov(CSP, SP);
 | 
|    __ ret();
 | 
|  }
 | 
|  
 | 
|  
 | 
|  ASSEMBLER_TEST_RUN(ComputeRange, test) {
 | 
| -#define RANGE_OF(arg_type, v) test->Invoke<intptr_t, arg_type>(v)
 | 
| +#define RANGE_OF(arg_type, v) test->InvokeWithCode<intptr_t, arg_type>(v)
 | 
|  
 | 
|    EXPECT_EQ(ICData::kInt32RangeBit, RANGE_OF(RawSmi*, Smi::New(0)));
 | 
|    EXPECT_EQ(ICData::kInt32RangeBit, RANGE_OF(RawSmi*, Smi::New(1)));
 | 
| 
 |