| Index: runtime/vm/stub_code_x64.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_x64.cc (revision 23086)
|
| +++ runtime/vm/stub_code_x64.cc (working copy)
|
| @@ -1685,32 +1685,29 @@
|
| }
|
|
|
|
|
| -// RBX: ICData.
|
| +// RBX, R10: May contain arguments to runtime stub.
|
| // TOS(0): return address (Dart code).
|
| -void StubCode::GenerateBreakpointEqNullStub(Assembler* assembler) {
|
| +void StubCode::GenerateBreakpointRuntimeStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| - __ pushq(RBX); // Preserve ICData.
|
| - __ CallRuntime(kBreakpointClosureHandlerRuntimeEntry);
|
| - __ popq(RBX); // Restore arguments descriptor.
|
| + // Preserve runtime args.
|
| + __ pushq(RBX);
|
| + __ pushq(R10);
|
| + // Room for result. Debugger stub returns address of the
|
| + // unpatched runtime stub.
|
| + const Immediate& raw_null =
|
| + Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| + __ pushq(raw_null); // Room for result.
|
| + __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry);
|
| + __ popq(RAX); // Address of original.
|
| + __ popq(R10); // Restore arguments.
|
| + __ popq(RBX);
|
| __ LeaveFrame();
|
| - __ jmp(&StubCode::EqualityWithNullArgLabel());
|
| + __ jmp(RAX); // Jump to original stub.
|
| }
|
|
|
|
|
| // R10: Arguments descriptor array.
|
| // TOS(0): return address (Dart code).
|
| -void StubCode::GenerateBreakpointClosureStub(Assembler* assembler) {
|
| - __ EnterStubFrame();
|
| - __ pushq(R10); // Preserve arguments descriptor.
|
| - __ CallRuntime(kBreakpointClosureHandlerRuntimeEntry);
|
| - __ popq(R10); // Restore arguments descriptor.
|
| - __ LeaveFrame();
|
| - __ jmp(&StubCode::CallClosureFunctionLabel());
|
| -}
|
| -
|
| -
|
| -// R10: Arguments descriptor array.
|
| -// TOS(0): return address (Dart code).
|
| void StubCode::GenerateBreakpointStaticStub(Assembler* assembler) {
|
| const Immediate& raw_null =
|
| Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
|
|