Index: src/compilation-info.cc |
diff --git a/src/compilation-info.cc b/src/compilation-info.cc |
index a8bf0eeb402a9f9de60e5576a808ff1c24d56912..e94b24557ab390693e47f7220ec137da61d9ff60 100644 |
--- a/src/compilation-info.cc |
+++ b/src/compilation-info.cc |
@@ -9,6 +9,7 @@ |
#include "src/ast/scopes.h" |
#include "src/isolate.h" |
#include "src/parsing/parse-info.h" |
+#include "src/source-position.h" |
namespace v8 { |
namespace internal { |
@@ -214,10 +215,25 @@ void CompilationInfo::SetOptimizing() { |
code_flags_ = Code::KindField::update(code_flags_, Code::OPTIMIZED_FUNCTION); |
} |
-void CompilationInfo::AddInlinedFunction( |
- Handle<SharedFunctionInfo> inlined_function) { |
+int CompilationInfo::AddInlinedFunction( |
+ Handle<SharedFunctionInfo> inlined_function, SourcePosition pos) { |
+ int id = static_cast<int>(inlined_functions_.size()); |
inlined_functions_.push_back(InlinedFunctionHolder( |
- inlined_function, handle(inlined_function->code()))); |
+ inlined_function, handle(inlined_function->code()), pos)); |
+ return id; |
+} |
+ |
+Handle<PodArray<InliningPosition>> CompilationInfo::CreateInliningPositions() { |
Michael Starzinger
2016/11/03 12:41:44
The {CompilationInfo} class should be a pure data
|
+ if (inlined_functions_.size() == 0) |
+ return Handle<PodArray<InliningPosition>>::cast( |
+ isolate()->factory()->empty_byte_array()); |
+ Handle<PodArray<InliningPosition>> info = |
+ isolate()->factory()->NewPodArray<InliningPosition>( |
+ static_cast<int>(inlined_functions_.size()), TENURED); |
+ for (int i = 0; i < inlined_functions_.size(); ++i) { |
+ info->set(i, inlined_functions_[i].position); |
+ } |
+ return info; |
} |
Code::Kind CompilationInfo::output_code_kind() const { |