Chromium Code Reviews| Index: runtime/vm/stub_code_x64.cc |
| =================================================================== |
| --- runtime/vm/stub_code_x64.cc (revision 23045) |
| +++ runtime/vm/stub_code_x64.cc (working copy) |
| @@ -1685,32 +1685,27 @@ |
| } |
| -// 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. |
| + __ pushq(Immediate(0)); |
|
siva
2013/05/23 01:11:26
Ditto comment about pushq(raw_null);
hausner
2013/05/23 18:32:12
Done.
|
| + __ 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())); |