| Index: runtime/vm/stub_code_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_ia32.cc (revision 24627)
|
| +++ runtime/vm/stub_code_ia32.cc (working copy)
|
| @@ -1432,6 +1432,20 @@
|
| }
|
| #endif // DEBUG
|
|
|
| + // Check single stepping.
|
| + Label not_stepping;
|
| + __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
|
| + __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
|
| + __ cmpl(EAX, Immediate(0));
|
| + __ j(EQUAL, ¬_stepping, Assembler::kNearJump);
|
| +
|
| + __ EnterStubFrame();
|
| + __ pushl(ECX);
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ popl(ECX);
|
| + __ LeaveFrame();
|
| + __ Bind(¬_stepping);
|
| +
|
| // Load arguments descriptor into EDX.
|
| __ movl(EDX, FieldAddress(ECX, ICData::arguments_descriptor_offset()));
|
| // Loop that checks if there is an IC data match.
|
| @@ -1655,6 +1669,20 @@
|
| }
|
| #endif // DEBUG
|
|
|
| + // Check single stepping.
|
| + Label not_stepping;
|
| + __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
|
| + __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
|
| + __ cmpl(EAX, Immediate(0));
|
| + __ j(EQUAL, ¬_stepping, Assembler::kNearJump);
|
| +
|
| + __ EnterStubFrame();
|
| + __ pushl(ECX);
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ popl(ECX);
|
| + __ LeaveFrame();
|
| + __ Bind(¬_stepping);
|
| +
|
| // ECX: IC data object (preserved).
|
| __ movl(EBX, FieldAddress(ECX, ICData::ic_data_offset()));
|
| // EBX: ic_data_array with entries: target functions and count.
|
| @@ -2133,6 +2161,18 @@
|
| // Returns ZF set.
|
| void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub(
|
| Assembler* assembler) {
|
| + // Check single stepping.
|
| + Label not_stepping;
|
| + __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
|
| + __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
|
| + __ cmpl(EAX, Immediate(0));
|
| + __ j(EQUAL, ¬_stepping, Assembler::kNearJump);
|
| +
|
| + __ EnterStubFrame();
|
| + __ CallRuntime(kSingleStepHandlerRuntimeEntry);
|
| + __ LeaveFrame();
|
| + __ Bind(¬_stepping);
|
| +
|
| const Register left = EAX;
|
| const Register right = EDX;
|
| const Register temp = ECX;
|
|
|