| Index: runtime/vm/stub_code_arm.cc
|
| diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
|
| index 3dbd41b90bc391519dc79c163357dd5a2455f796..0ccfd17aa858d38a0d2d413a743266e5eb3334f5 100644
|
| --- a/runtime/vm/stub_code_arm.cc
|
| +++ b/runtime/vm/stub_code_arm.cc
|
| @@ -46,7 +46,6 @@ void StubCode::GenerateCallToRuntimeStub(Assembler* assembler) {
|
| __ mov(IP, Operand(0));
|
| __ Push(IP); // Push 0 for the PC marker.
|
| __ EnterFrame((1 << FP) | (1 << LR), 0);
|
| - __ SmiUntag(R4);
|
|
|
| // Load current Isolate pointer from Context structure into R0.
|
| __ ldr(R0, FieldAddress(CTX, Context::isolate_offset()));
|
| @@ -1536,7 +1535,23 @@ void StubCode::GenerateLazyCompileStub(Assembler* assembler) {
|
| }
|
|
|
|
|
| -void StubCode::GenerateBreakpointRuntimeStub(Assembler* assembler) {
|
| +// R5: Contains an ICData.
|
| +void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) {
|
| + __ EnterStubFrame();
|
| + __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null()));
|
| + // Preserve arguments descriptor and make room for result.
|
| + __ PushList((1 << R0) | (1 << R5));
|
| + __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| + __ PopList((1 << R0) | (1 << R5));
|
| + __ LeaveStubFrame();
|
| + __ bx(R0);
|
| +}
|
| +
|
| +
|
| +// R5: Contains Smi 0 (need to preserve a GC-safe value for the lazy compile
|
| +// stub).
|
| +// R4: Contains an arguments descriptor.
|
| +void StubCode::GenerateClosureCallBreakpointStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null()));
|
| // Preserve arguments descriptor and make room for result.
|
| @@ -1548,6 +1563,18 @@ void StubCode::GenerateBreakpointRuntimeStub(Assembler* assembler) {
|
| }
|
|
|
|
|
| +void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) {
|
| + __ EnterStubFrame();
|
| + __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null()));
|
| + // Make room for result.
|
| + __ PushList((1 << R0));
|
| + __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| + __ PopList((1 << R0));
|
| + __ LeaveStubFrame();
|
| + __ bx(R0);
|
| +}
|
| +
|
| +
|
| // Called only from unoptimized code. All relevant registers have been saved.
|
| void StubCode::GenerateDebugStepCheckStub(
|
| Assembler* assembler) {
|
|
|