Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: src/compilation-info.cc

Issue 2451853002: Uniform and precise source positions for inlining (Closed)
Patch Set: fixed PodArray::copy_out Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698