diff options
Diffstat (limited to 'deps/v8/src/unoptimized-compilation-info.cc')
-rw-r--r-- | deps/v8/src/unoptimized-compilation-info.cc | 19 |
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 |