Commit 418142b5 authored by yangguo's avatar yangguo Committed by Commit bot

[profiler] collect more source positions when debugger is active.

In order for profiles of optimized code to have accurate source
positions, we need to prepare for this when compiling. If the profiler
is enabled late, this may be missing, leading to inaccurate profile
data. A compromise to solve this is to prepare for accurate positions if
the debugger (and therefore DevTools) is active, even if we are not
currently capturing a profile.

The alternative is to deopt everything upon profiling, but that would
affect the profile significantly.

R=alph@chromium.org, bmeurer@chromium.org, neis@chromium.org, tebbi@chromium.org

Review-Url: https://codereview.chromium.org/2519003002
Cr-Commit-Position: refs/heads/master@{#41217}
parent db1cc0cf
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "src/api.h" #include "src/api.h"
#include "src/ast/ast.h" #include "src/ast/ast.h"
#include "src/ast/scopes.h" #include "src/ast/scopes.h"
#include "src/debug/debug.h"
#include "src/isolate.h" #include "src/isolate.h"
#include "src/parsing/parse-info.h" #include "src/parsing/parse-info.h"
#include "src/source-position.h" #include "src/source-position.h"
...@@ -68,8 +69,12 @@ CompilationInfo::CompilationInfo(ParseInfo* parse_info, ...@@ -68,8 +69,12 @@ CompilationInfo::CompilationInfo(ParseInfo* parse_info,
if (FLAG_function_context_specialization) MarkAsFunctionContextSpecializing(); if (FLAG_function_context_specialization) MarkAsFunctionContextSpecializing();
if (FLAG_turbo_splitting) MarkAsSplittingEnabled(); if (FLAG_turbo_splitting) MarkAsSplittingEnabled();
// Collect source positions for optimized code when profiling or if debugger
// is active, to be able to get more precise source positions at the price of
// more memory consumption.
if (FLAG_trace_deopt || FLAG_trace_turbo || FLAG_trace_turbo_graph || if (FLAG_trace_deopt || FLAG_trace_turbo || FLAG_trace_turbo_graph ||
FLAG_turbo_profiling || isolate_->is_profiling()) { FLAG_turbo_profiling || isolate_->is_profiling() ||
isolate_->debug()->is_active()) {
MarkAsSourcePositionsEnabled(); MarkAsSourcePositionsEnabled();
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment