Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index ad86ca5d81ce62f8093b0611444ffc177c06206a..ae6b622b988a59c2d3ef208e14219bf389a00c0f 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -6,6 +6,7 @@ |
#include "src/code-factory.h" |
#include "src/compiler/access-builder.h" |
+#include "src/compiler/compiler-source-position-table.h" |
#include "src/compiler/js-graph.h" |
#include "src/compiler/linkage.h" |
#include "src/compiler/node-matchers.h" |
@@ -17,10 +18,13 @@ namespace v8 { |
namespace internal { |
namespace compiler { |
-EffectControlLinearizer::EffectControlLinearizer(JSGraph* js_graph, |
- Schedule* schedule, |
- Zone* temp_zone) |
- : js_graph_(js_graph), schedule_(schedule), temp_zone_(temp_zone) {} |
+EffectControlLinearizer::EffectControlLinearizer( |
+ JSGraph* js_graph, Schedule* schedule, Zone* temp_zone, |
+ SourcePositionTable* source_positions) |
+ : js_graph_(js_graph), |
+ schedule_(schedule), |
+ temp_zone_(temp_zone), |
+ source_positions_(source_positions) {} |
Graph* EffectControlLinearizer::graph() const { return js_graph_->graph(); } |
CommonOperatorBuilder* EffectControlLinearizer::common() const { |
@@ -428,7 +432,13 @@ void EffectControlLinearizer::Run() { |
// Process the ordinary instructions. |
for (; instr < block->NodeCount(); instr++) { |
Node* node = block->NodeAt(instr); |
- ProcessNode(node, &frame_state, &effect, &control); |
+ if (source_positions_) { |
+ SourcePositionTable::Scope scope( |
+ source_positions_, source_positions_->GetSourcePosition(node)); |
+ ProcessNode(node, &frame_state, &effect, &control); |
+ } else { |
+ ProcessNode(node, &frame_state, &effect, &control); |
+ } |
} |
switch (block->control()) { |