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

Unified Diff: src/compiler/pipeline.cc

Issue 1890803002: [wasm] Generate source position information (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@wasm-throw-error
Patch Set: some doc and fixes Created 4 years, 8 months 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/compiler/pipeline.cc
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
index fad9e489b7562dbf5a58bd1461cc597b3435a4b5..60ce5fa27965b57673d2859e536b99877045e26f 100644
--- a/src/compiler/pipeline.cc
+++ b/src/compiler/pipeline.cc
@@ -103,7 +103,6 @@ class PipelineData {
register_allocation_data_(nullptr) {
PhaseScope scope(pipeline_statistics, "init pipeline data");
graph_ = new (graph_zone_) Graph(graph_zone_);
- source_positions_.Reset(new SourcePositionTable(graph_));
simplified_ = new (graph_zone_) SimplifiedOperatorBuilder(graph_zone_);
machine_ = new (graph_zone_) MachineOperatorBuilder(
graph_zone_, MachineType::PointerRepresentation(),
@@ -127,7 +126,6 @@ class PipelineData {
graph_zone_scope_(zone_pool_),
graph_zone_(nullptr),
graph_(graph),
- source_positions_(new SourcePositionTable(graph_)),
loop_assignment_(nullptr),
simplified_(nullptr),
machine_(nullptr),
@@ -194,7 +192,12 @@ class PipelineData {
Zone* graph_zone() const { return graph_zone_; }
Graph* graph() const { return graph_; }
- SourcePositionTable* source_positions() const {
+ SourcePositionTable* source_positions() {
+ // First check whether the CompilationInfo provides the table
+ if (auto* table = info()->GetSourcePositionTable()) return table;
+ // Lazy initialization
+ if (source_positions_.is_empty())
+ source_positions_.Reset(new SourcePositionTable(graph()));
return source_positions_.get();
}
MachineOperatorBuilder* machine() const { return machine_; }
@@ -400,15 +403,15 @@ class AstGraphBuilderWithPositions final : public AstGraphBuilder {
start_position_(info->shared_info()->start_position()) {}
bool CreateGraph(bool stack_check) {
- SourcePositionTable::Scope pos_scope(source_positions_, start_position_);
+ SourcePositionScope 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())); \
- AstGraphBuilder::Visit##type(node); \
+#define DEF_VISIT(type) \
+ void Visit##type(type* node) override { \
+ SourcePositionScope pos(source_positions_, \
+ SourcePosition(node->position())); \
+ AstGraphBuilder::Visit##type(node); \
}
AST_NODE_LIST(DEF_VISIT)
#undef DEF_VISIT
@@ -427,7 +430,7 @@ class SourcePositionWrapper final : public Reducer {
Reduction Reduce(Node* node) final {
SourcePosition const pos = table_->GetSourcePosition(node);
- SourcePositionTable::Scope position(table_, pos);
+ SourcePositionScope position(table_, pos);
return reducer_->Reduce(node);
}

Powered by Google App Engine
This is Rietveld 408576698