Index: src/compiler/ast-graph-builder.h |
diff --git a/src/compiler/ast-graph-builder.h b/src/compiler/ast-graph-builder.h |
index e6cb52f839754dea48930a6fd4eebf49d335df7e..46dcf4216d614e4b857172f7e78c38b20df2720f 100644 |
--- a/src/compiler/ast-graph-builder.h |
+++ b/src/compiler/ast-graph-builder.h |
@@ -6,6 +6,7 @@ |
#define V8_COMPILER_AST_GRAPH_BUILDER_H_ |
#include "src/ast/ast.h" |
+#include "src/compiler/compiler-source-position-table.h" |
#include "src/compiler/js-graph.h" |
#include "src/compiler/liveness-analyzer.h" |
#include "src/compiler/state-values-utils.h" |
@@ -617,6 +618,35 @@ class AstGraphBuilder::Environment : public ZoneObject { |
void PrepareForOsrEntry(); |
}; |
+class AstGraphBuilderWithPositions final : public AstGraphBuilder { |
+ public: |
+ AstGraphBuilderWithPositions(Zone* local_zone, CompilationInfo* info, |
+ JSGraph* jsgraph, float invocation_frequency, |
+ LoopAssignmentAnalysis* loop_assignment, |
+ TypeHintAnalysis* type_hint_analysis, |
+ SourcePositionTable* source_positions, |
+ int inlining_id = SourcePosition::kNotInlined); |
+ |
+ bool CreateGraph(bool stack_check = true) { |
+ SourcePositionTable::Scope pos_scope(source_positions_, start_position_); |
+ return AstGraphBuilder::CreateGraph(stack_check); |
+ } |
+ |
+#define DEF_VISIT(type) \ |
+ void Visit##type(type* node) override { \ |
+ SourcePositionTable::Scope pos( \ |
+ source_positions_, \ |
+ SourcePosition(node->position(), start_position_.InliningId())); \ |
+ AstGraphBuilder::Visit##type(node); \ |
+ } |
+ AST_NODE_LIST(DEF_VISIT) |
+#undef DEF_VISIT |
+ |
+ private: |
+ SourcePositionTable* const source_positions_; |
+ SourcePosition const start_position_; |
+}; |
+ |
} // namespace compiler |
} // namespace internal |
} // namespace v8 |