| Index: runtime/vm/stub_code_ia32.cc
 | 
| diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
 | 
| index 5fc60244de372dfc116568b4c057e5c867b1b0f3..75bb2a8a886877c841d513012d0b193dcb4b4b1f 100644
 | 
| --- a/runtime/vm/stub_code_ia32.cc
 | 
| +++ b/runtime/vm/stub_code_ia32.cc
 | 
| @@ -1299,14 +1299,16 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|    }
 | 
|  #endif  // DEBUG
 | 
|  
 | 
| +#if !defined(PRODUCT)
 | 
|    Label stepping, done_stepping;
 | 
| -  if (FLAG_support_debugger && !optimized) {
 | 
| +  if (!optimized) {
 | 
|      __ Comment("Check single stepping");
 | 
|      __ LoadIsolate(EAX);
 | 
|      __ cmpb(Address(EAX, Isolate::single_step_offset()), Immediate(0));
 | 
|      __ j(NOT_EQUAL, &stepping);
 | 
|      __ Bind(&done_stepping);
 | 
|    }
 | 
| +#endif
 | 
|    Label not_smi_or_overflow;
 | 
|    if (kind != Token::kILLEGAL) {
 | 
|      EmitFastSmiOp(assembler, kind, num_args, ¬_smi_or_overflow);
 | 
| @@ -1432,7 +1434,8 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|    __ movl(EBX, FieldAddress(EAX, Function::entry_point_offset()));
 | 
|    __ jmp(EBX);
 | 
|  
 | 
| -  if (FLAG_support_debugger && !optimized) {
 | 
| +#if !defined(PRODUCT)
 | 
| +  if (!optimized) {
 | 
|      __ Bind(&stepping);
 | 
|      __ EnterStubFrame();
 | 
|      __ pushl(ECX);
 | 
| @@ -1441,6 +1444,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|      __ LeaveFrame();
 | 
|      __ jmp(&done_stepping);
 | 
|    }
 | 
| +#endif
 | 
|  }
 | 
|  
 | 
|  // Use inline cache data array to invoke the target or continue in inline
 | 
| @@ -1531,14 +1535,15 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|      __ Bind(&ok);
 | 
|    }
 | 
|  #endif  // DEBUG
 | 
| +
 | 
| +#if !defined(PRODUCT)
 | 
|    // Check single stepping.
 | 
|    Label stepping, done_stepping;
 | 
| -  if (FLAG_support_debugger) {
 | 
| -    __ LoadIsolate(EAX);
 | 
| -    __ cmpb(Address(EAX, Isolate::single_step_offset()), Immediate(0));
 | 
| -    __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
 | 
| -    __ Bind(&done_stepping);
 | 
| -  }
 | 
| +  __ LoadIsolate(EAX);
 | 
| +  __ cmpb(Address(EAX, Isolate::single_step_offset()), Immediate(0));
 | 
| +  __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
 | 
| +  __ Bind(&done_stepping);
 | 
| +#endif
 | 
|  
 | 
|    // ECX: IC data object (preserved).
 | 
|    __ movl(EBX, FieldAddress(ECX, ICData::ic_data_offset()));
 | 
| @@ -1561,15 +1566,15 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|    __ movl(EBX, FieldAddress(EAX, Function::entry_point_offset()));
 | 
|    __ jmp(EBX);
 | 
|  
 | 
| -  if (FLAG_support_debugger) {
 | 
| -    __ Bind(&stepping);
 | 
| -    __ EnterStubFrame();
 | 
| -    __ pushl(ECX);
 | 
| -    __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
 | 
| -    __ popl(ECX);
 | 
| -    __ LeaveFrame();
 | 
| -    __ jmp(&done_stepping, Assembler::kNearJump);
 | 
| -  }
 | 
| +#if !defined(PRODUCT)
 | 
| +  __ Bind(&stepping);
 | 
| +  __ EnterStubFrame();
 | 
| +  __ pushl(ECX);
 | 
| +  __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
 | 
| +  __ popl(ECX);
 | 
| +  __ LeaveFrame();
 | 
| +  __ jmp(&done_stepping, Assembler::kNearJump);
 | 
| +#endif
 | 
|  }
 | 
|  
 | 
|  void StubCode::GenerateOneArgUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
| @@ -1928,15 +1933,15 @@ static void GenerateIdenticalWithNumberCheckStub(Assembler* assembler,
 | 
|  // Returns ZF set.
 | 
|  void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub(
 | 
|      Assembler* assembler) {
 | 
| +#if !defined(PRODUCT)
 | 
|    // Check single stepping.
 | 
|    Label stepping, done_stepping;
 | 
| -  if (FLAG_support_debugger) {
 | 
| -    __ LoadIsolate(EAX);
 | 
| -    __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
 | 
| -    __ cmpl(EAX, Immediate(0));
 | 
| -    __ j(NOT_EQUAL, &stepping);
 | 
| -    __ Bind(&done_stepping);
 | 
| -  }
 | 
| +  __ LoadIsolate(EAX);
 | 
| +  __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
 | 
| +  __ cmpl(EAX, Immediate(0));
 | 
| +  __ j(NOT_EQUAL, &stepping);
 | 
| +  __ Bind(&done_stepping);
 | 
| +#endif
 | 
|  
 | 
|    const Register left = EAX;
 | 
|    const Register right = EDX;
 | 
| @@ -1946,13 +1951,13 @@ void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub(
 | 
|    GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp);
 | 
|    __ ret();
 | 
|  
 | 
| -  if (FLAG_support_debugger) {
 | 
| -    __ Bind(&stepping);
 | 
| -    __ EnterStubFrame();
 | 
| -    __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
 | 
| -    __ LeaveFrame();
 | 
| -    __ jmp(&done_stepping);
 | 
| -  }
 | 
| +#if !defined(PRODUCT)
 | 
| +  __ Bind(&stepping);
 | 
| +  __ EnterStubFrame();
 | 
| +  __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
 | 
| +  __ LeaveFrame();
 | 
| +  __ jmp(&done_stepping);
 | 
| +#endif
 | 
|  }
 | 
|  
 | 
|  // Called from optimized code only.
 | 
| 
 |