Index: src/debug.cc |
diff --git a/src/debug.cc b/src/debug.cc |
index cdd2b8c7b949115816cbc91bc0395a74610a4efd..6d033a7416e191a80bba50cdab215f61025a506e 100644 |
--- a/src/debug.cc |
+++ b/src/debug.cc |
@@ -926,9 +926,6 @@ void Debug::ClearAllBreakPoints() { |
void Debug::FloodWithOneShot(Handle<JSFunction> function, |
BreakLocatorType type) { |
- // Do not ever break in native and extension functions. |
- if (!function->IsSubjectToDebugging()) return; |
- |
PrepareForBreakPoints(); |
// Make sure the function is compiled and has set up the debug info. |
@@ -951,8 +948,7 @@ void Debug::FloodBoundFunctionWithOneShot(Handle<JSFunction> function) { |
Handle<Object> bindee(new_bindings->get(JSFunction::kBoundFunctionIndex), |
isolate_); |
- if (!bindee.is_null() && bindee->IsJSFunction() && |
- JSFunction::cast(*bindee)->IsSubjectToDebugging()) { |
+ if (!bindee.is_null() && bindee->IsJSFunction()) { |
Handle<JSFunction> bindee_function(JSFunction::cast(*bindee)); |
FloodWithOneShotGeneric(bindee_function); |
} |
@@ -1881,20 +1877,22 @@ Handle<Object> Debug::FindSharedFunctionInfoInScript(Handle<Script> script, |
// Ensures the debug information is present for shared. |
bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared, |
Handle<JSFunction> function) { |
- Isolate* isolate = shared->GetIsolate(); |
+ if (!shared->IsSubjectToDebugging()) return false; |
// Return if we already have the debug info for shared. |
if (HasDebugInfo(shared)) { |
DCHECK(shared->is_compiled()); |
+ DCHECK(shared->code()->has_debug_break_slots()); |
return true; |
} |
// There will be at least one break point when we are done. |
has_break_points_ = true; |
- // Ensure function is compiled. Return false if this failed. |
- if (!function.is_null() && |
- !Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { |
+ if (function.is_null()) { |
+ DCHECK(shared->is_compiled()); |
+ DCHECK(shared->code()->has_debug_break_slots()); |
+ } else if (!Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { |
return false; |
} |
@@ -1904,7 +1902,9 @@ bool Debug::EnsureDebugInfo(Handle<SharedFunctionInfo> shared, |
shared->feedback_vector()->ClearICSlots(*shared); |
// Create the debug info object. |
- Handle<DebugInfo> debug_info = isolate->factory()->NewDebugInfo(shared); |
+ DCHECK(shared->is_compiled()); |
+ DCHECK(shared->code()->has_debug_break_slots()); |
+ Handle<DebugInfo> debug_info = isolate_->factory()->NewDebugInfo(shared); |
// Add debug info to the list. |
DebugInfoListNode* node = new DebugInfoListNode(*debug_info); |