aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/unoptimized-compilation-info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/unoptimized-compilation-info.cc')
-rw-r--r--deps/v8/src/unoptimized-compilation-info.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/deps/v8/src/unoptimized-compilation-info.cc b/deps/v8/src/unoptimized-compilation-info.cc
index 1211af3715..b1804ea51f 100644
--- a/deps/v8/src/unoptimized-compilation-info.cc
+++ b/deps/v8/src/unoptimized-compilation-info.cc
@@ -33,6 +33,9 @@ UnoptimizedCompilationInfo::UnoptimizedCompilationInfo(Zone* zone,
if (parse_info->is_native()) MarkAsNative();
if (parse_info->collect_type_profile()) MarkAsCollectTypeProfile();
if (parse_info->might_always_opt()) MarkAsMightAlwaysOpt();
+ if (parse_info->collect_source_positions()) {
+ MarkAsForceCollectSourcePositions();
+ }
}
DeclarationScope* UnoptimizedCompilationInfo::scope() const {
@@ -50,8 +53,20 @@ int UnoptimizedCompilationInfo::num_parameters_including_this() const {
SourcePositionTableBuilder::RecordingMode
UnoptimizedCompilationInfo::SourcePositionRecordingMode() const {
- return is_native() ? SourcePositionTableBuilder::OMIT_SOURCE_POSITIONS
- : SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS;
+ if (is_native()) {
+ DCHECK(!collect_source_positions());
+ return SourcePositionTableBuilder::OMIT_SOURCE_POSITIONS;
+ }
+
+ if (collect_source_positions()) {
+ return SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS;
+ }
+
+ // Always collect source positions for functions that cannot be lazily
+ // compiled, e.g. class member initializer functions.
+ return !literal_->AllowsLazyCompilation()
+ ? SourcePositionTableBuilder::RECORD_SOURCE_POSITIONS
+ : SourcePositionTableBuilder::OMIT_SOURCE_POSITIONS;
}
} // namespace internal