Index: src/debug.cc |
diff --git a/src/debug.cc b/src/debug.cc |
index ef8bb2a6c1d61d952abeffb25e642c604717330c..ae9e284015ba3ea4f9ff93851afd11861bdfb2eb 100644 |
--- a/src/debug.cc |
+++ b/src/debug.cc |
@@ -321,6 +321,10 @@ void BreakLocation::ClearDebugBreak() { |
} else { |
// Restore the IC call. |
rinfo().set_target_address(original_rinfo().target_address()); |
+ // Some ICs store data in the feedback vector. Clear this to ensure we |
+ // won't miss future stepping requirements. |
+ SharedFunctionInfo* shared = debug_info_->shared(); |
+ shared->feedback_vector()->ClearICSlots(shared); |
} |
DCHECK(!IsDebugBreak()); |
} |
@@ -2118,6 +2122,10 @@ bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared, |
return false; |
} |
+ // Make sure IC state is clean. |
+ shared->code()->ClearInlineCaches(); |
+ shared->feedback_vector()->ClearICSlots(*shared); |
+ |
// Create the debug info object. |
Handle<DebugInfo> debug_info = isolate->factory()->NewDebugInfo(shared); |