From 1c4f80836aa31b9ddbd79b77986f958e323b0ab1 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Wed, 29 Oct 2014 10:28:11 +0000 Subject: [PATCH] Eager compile for debugging when debug is active. Scenario: On reload, Devtools restores previously set break points. At this point, since Devtools is already opened, all code is compiled with debug break slots. No break points exist yet, so we would lazily compile inner functions, even ones that cannot be compiled lazily without a context. So when we use Debug::FindSharedFunctionInfoInScript to find the break positions, those lazily compiled functions are skipped. By eagerly compiling when debug is active, we make sure that whenever Devtools is open, functions that cannot be compiled lazily without a context are always compiled with its outer function. R=ulan@chromium.org BUG=chromium:424142 LOG=N Review URL: https://codereview.chromium.org/683413003 Cr-Commit-Position: refs/heads/master@{#24971} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24971 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/compiler.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler.cc b/src/compiler.cc index 8f50d9a..e894e10 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -1437,8 +1437,10 @@ Handle Compiler::GetConcurrentlyOptimizedCode(OptimizedCompileJob* job) { bool Compiler::DebuggerWantsEagerCompilation(CompilationInfo* info, bool allow_lazy_without_ctx) { - return LiveEditFunctionTracker::IsActive(info->isolate()) || - (info->isolate()->DebuggerHasBreakPoints() && !allow_lazy_without_ctx); + if (LiveEditFunctionTracker::IsActive(info->isolate())) return true; + Debug* debug = info->isolate()->debug(); + bool debugging = debug->is_active() || debug->has_break_points(); + return debugging && !allow_lazy_without_ctx; } -- 2.7.4