Use ReplaceCode instead of set_code in debug.cc.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/274043002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21206 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
yangguo@chromium.org 2014-05-09 08:42:17 +00:00
parent 9e1abe4d68
commit 6dac67da84

View File

@ -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