| Index: src/debug.cc
|
| diff --git a/src/debug.cc b/src/debug.cc
|
| index 4e633c91cfa867cffada2363a956b1c5fe780c81..bb589086609aa6f67a5d1eb4f22e933c481a363e 100644
|
| --- a/src/debug.cc
|
| +++ b/src/debug.cc
|
| @@ -2050,12 +2050,11 @@ void Debug::EnsureFunctionHasDebugBreakSlots(Handle<JSFunction> function) {
|
| ForceDebuggerActive force_debugger_active(isolate_);
|
| MaybeHandle<Code> code = Compiler::GetCodeForDebugging(function);
|
| // Recompilation can fail. In that case leave the code as it was.
|
| - if (!code.is_null())
|
| - function->ReplaceCode(*code.ToHandleChecked());
|
| + if (!code.is_null()) function->ReplaceCode(*code.ToHandleChecked());
|
| + } else {
|
| + // Simply use shared code if it has debug break slots.
|
| + function->ReplaceCode(function->shared()->code());
|
| }
|
| -
|
| - // Keep function code in sync with shared function info.
|
| - function->ReplaceCode(function->shared()->code());
|
| }
|
|
|
|
|
| @@ -2152,8 +2151,8 @@ void Debug::PrepareForBreakPoints() {
|
| Code::Kind kind = function->code()->kind();
|
| if (kind == Code::FUNCTION &&
|
| !function->code()->has_debug_break_slots()) {
|
| - function->set_code(*lazy_compile);
|
| - function->shared()->set_code(*lazy_compile);
|
| + function->ReplaceCode(*lazy_compile);
|
| + function->shared()->ReplaceCode(*lazy_compile);
|
| } else if (kind == Code::BUILTIN &&
|
| (function->IsInOptimizationQueue() ||
|
| function->IsMarkedForOptimization() ||
|
| @@ -2162,10 +2161,10 @@ void Debug::PrepareForBreakPoints() {
|
| Code* shared_code = function->shared()->code();
|
| if (shared_code->kind() == Code::FUNCTION &&
|
| shared_code->has_debug_break_slots()) {
|
| - function->set_code(shared_code);
|
| + function->ReplaceCode(shared_code);
|
| } else {
|
| - function->set_code(*lazy_compile);
|
| - function->shared()->set_code(*lazy_compile);
|
| + function->ReplaceCode(*lazy_compile);
|
| + function->shared()->ReplaceCode(*lazy_compile);
|
| }
|
| }
|
| } else if (obj->IsJSGeneratorObject()) {
|
| @@ -2206,8 +2205,8 @@ void Debug::PrepareForBreakPoints() {
|
| Handle<JSFunction> &function = generator_functions[i];
|
| if (function->code()->kind() != Code::FUNCTION) continue;
|
| if (function->code()->has_debug_break_slots()) continue;
|
| - function->set_code(*lazy_compile);
|
| - function->shared()->set_code(*lazy_compile);
|
| + function->ReplaceCode(*lazy_compile);
|
| + function->shared()->ReplaceCode(*lazy_compile);
|
| }
|
|
|
| // Now recompile all functions with activation frames and and
|
|
|