| Index: runtime/vm/stub_code_arm64.cc | 
| diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc | 
| index 0b15d0d24daa2d44ad76a759fae7756ca0802a6e..e5aeb21acd8235c72189f76285b6bf87d7498e55 100644 | 
| --- a/runtime/vm/stub_code_arm64.cc | 
| +++ b/runtime/vm/stub_code_arm64.cc | 
| @@ -1422,8 +1422,9 @@ void StubCode::GenerateNArgsCheckInlineCacheStub( | 
| } | 
| #endif  // DEBUG | 
|  | 
| +#if !defined(PRODUCT) | 
| Label stepping, done_stepping; | 
| -  if (FLAG_support_debugger && !optimized) { | 
| +  if (!optimized) { | 
| __ Comment("Check single stepping"); | 
| __ LoadIsolate(R6); | 
| __ LoadFromOffset(R6, R6, Isolate::single_step_offset(), kUnsignedByte); | 
| @@ -1431,6 +1432,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub( | 
| __ b(&stepping, NE); | 
| __ Bind(&done_stepping); | 
| } | 
| +#endif | 
|  | 
| Label not_smi_or_overflow; | 
| if (kind != Token::kILLEGAL) { | 
| @@ -1558,7 +1560,8 @@ void StubCode::GenerateNArgsCheckInlineCacheStub( | 
| __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset()); | 
| __ br(R2); | 
|  | 
| -  if (FLAG_support_debugger && !optimized) { | 
| +#if !defined(PRODUCT) | 
| +  if (!optimized) { | 
| __ Bind(&stepping); | 
| __ EnterStubFrame(); | 
| __ Push(R5);  // Preserve IC data. | 
| @@ -1568,6 +1571,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub( | 
| __ LeaveStubFrame(); | 
| __ b(&done_stepping); | 
| } | 
| +#endif | 
| } | 
|  | 
| // Use inline cache data array to invoke the target or continue in inline | 
| @@ -1646,14 +1650,14 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { | 
| #endif  // DEBUG | 
|  | 
| // Check single stepping. | 
| +#if !defined(PRODUCT) | 
| Label stepping, done_stepping; | 
| -  if (FLAG_support_debugger) { | 
| -    __ LoadIsolate(R6); | 
| -    __ LoadFromOffset(R6, R6, Isolate::single_step_offset(), kUnsignedByte); | 
| -    __ CompareImmediate(R6, 0); | 
| -    __ b(&stepping, NE); | 
| -    __ Bind(&done_stepping); | 
| -  } | 
| +  __ LoadIsolate(R6); | 
| +  __ LoadFromOffset(R6, R6, Isolate::single_step_offset(), kUnsignedByte); | 
| +  __ CompareImmediate(R6, 0); | 
| +  __ b(&stepping, NE); | 
| +  __ Bind(&done_stepping); | 
| +#endif | 
|  | 
| // R5: IC data object (preserved). | 
| __ LoadFieldFromOffset(R6, R5, ICData::ic_data_offset()); | 
| @@ -1679,16 +1683,16 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { | 
| __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset()); | 
| __ br(R2); | 
|  | 
| -  if (FLAG_support_debugger) { | 
| -    __ Bind(&stepping); | 
| -    __ EnterStubFrame(); | 
| -    __ Push(R5);  // Preserve IC data. | 
| -    __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); | 
| -    __ Pop(R5); | 
| -    __ RestoreCodePointer(); | 
| -    __ LeaveStubFrame(); | 
| -    __ b(&done_stepping); | 
| -  } | 
| +#if !defined(PRODUCT) | 
| +  __ Bind(&stepping); | 
| +  __ EnterStubFrame(); | 
| +  __ Push(R5);  // Preserve IC data. | 
| +  __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); | 
| +  __ Pop(R5); | 
| +  __ RestoreCodePointer(); | 
| +  __ LeaveStubFrame(); | 
| +  __ b(&done_stepping); | 
| +#endif | 
| } | 
|  | 
| void StubCode::GenerateOneArgUnoptimizedStaticCallStub(Assembler* assembler) { | 
| @@ -2037,15 +2041,15 @@ static void GenerateIdenticalWithNumberCheckStub(Assembler* assembler, | 
| // Return Zero condition flag set if equal. | 
| void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub( | 
| Assembler* assembler) { | 
| +#if !defined(PRODUCT) | 
| // Check single stepping. | 
| Label stepping, done_stepping; | 
| -  if (FLAG_support_debugger) { | 
| -    __ LoadIsolate(R1); | 
| -    __ LoadFromOffset(R1, R1, Isolate::single_step_offset(), kUnsignedByte); | 
| -    __ CompareImmediate(R1, 0); | 
| -    __ b(&stepping, NE); | 
| -    __ Bind(&done_stepping); | 
| -  } | 
| +  __ LoadIsolate(R1); | 
| +  __ LoadFromOffset(R1, R1, Isolate::single_step_offset(), kUnsignedByte); | 
| +  __ CompareImmediate(R1, 0); | 
| +  __ b(&stepping, NE); | 
| +  __ Bind(&done_stepping); | 
| +#endif | 
|  | 
| const Register left = R1; | 
| const Register right = R0; | 
| @@ -2054,14 +2058,14 @@ void StubCode::GenerateUnoptimizedIdenticalWithNumberCheckStub( | 
| GenerateIdenticalWithNumberCheckStub(assembler, left, right); | 
| __ ret(); | 
|  | 
| -  if (FLAG_support_debugger) { | 
| -    __ Bind(&stepping); | 
| -    __ EnterStubFrame(); | 
| -    __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); | 
| -    __ RestoreCodePointer(); | 
| -    __ LeaveStubFrame(); | 
| -    __ b(&done_stepping); | 
| -  } | 
| +#if !defined(PRODUCT) | 
| +  __ Bind(&stepping); | 
| +  __ EnterStubFrame(); | 
| +  __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0); | 
| +  __ RestoreCodePointer(); | 
| +  __ LeaveStubFrame(); | 
| +  __ b(&done_stepping); | 
| +#endif | 
| } | 
|  | 
| // Called from optimized code only. | 
|  |