Chromium Code Reviews| Index: runtime/vm/stub_code_ia32.cc |
| =================================================================== |
| --- runtime/vm/stub_code_ia32.cc (revision 38158) |
| +++ runtime/vm/stub_code_ia32.cc (working copy) |
| @@ -1294,20 +1294,14 @@ |
| } |
| #endif // DEBUG |
| + Label stepping, done_stepping; |
| if (FLAG_enable_debugger) { |
| // Check single stepping. |
| - Label not_stepping; |
| __ movl(EAX, FieldAddress(CTX, Context::isolate_offset())); |
| __ movzxb(EAX, Address(EAX, Isolate::single_step_offset())); |
|
Vyacheslav Egorov (Google)
2014/07/11 23:31:34
I wonder if single_step were intptr_t would there
|
| __ cmpl(EAX, Immediate(0)); |
| - __ j(EQUAL, ¬_stepping, Assembler::kNearJump); |
| - |
| - __ EnterStubFrame(); |
| - __ pushl(ECX); |
| - __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); |
| - __ popl(ECX); |
| - __ LeaveFrame(); |
| - __ Bind(¬_stepping); |
| + __ j(NOT_EQUAL, &stepping); |
| + __ Bind(&done_stepping); |
| } |
| // ECX: IC data object (preserved). |
| @@ -1417,6 +1411,16 @@ |
| __ addl(EBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag)); |
| __ jmp(EBX); |
| __ int3(); |
| + |
| + if (FLAG_enable_debugger) { |
| + __ Bind(&stepping); |
| + __ EnterStubFrame(); |
| + __ pushl(ECX); |
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); |
| + __ popl(ECX); |
| + __ LeaveFrame(); |
| + __ jmp(&done_stepping); |
| + } |
| } |