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

Unified Diff: src/compiler/effect-control-linearizer.cc

Issue 2504913003: [turbofan] track source positions in EffectControlLinearizer (Closed)
Patch Set: addressed comments 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
« no previous file with comments | « src/compiler/effect-control-linearizer.h ('k') | src/compiler/pipeline.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..d4b0576f7927f18fd3d5d3c39e222da8147faf8c 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 {
@@ -144,7 +148,8 @@ void RemoveRegionNode(Node* node) {
void TryCloneBranch(Node* node, BasicBlock* block, Graph* graph,
CommonOperatorBuilder* common,
- BlockEffectControlMap* block_effects) {
+ BlockEffectControlMap* block_effects,
+ SourcePositionTable* source_positions) {
DCHECK_EQ(IrOpcode::kBranch, node->opcode());
// This optimization is a special case of (super)block cloning. It takes an
@@ -196,6 +201,8 @@ void TryCloneBranch(Node* node, BasicBlock* block, Graph* graph,
// ^ ^
// | |
+ SourcePositionTable::Scope scope(source_positions,
+ source_positions->GetSourcePosition(node));
Node* branch = node;
Node* cond = NodeProperties::GetValueInput(branch, 0);
if (!cond->OwnedBy(branch) || cond->opcode() != IrOpcode::kPhi) return;
@@ -448,7 +455,7 @@ void EffectControlLinearizer::Run() {
case BasicBlock::kBranch:
ProcessNode(block->control_input(), &frame_state, &effect, &control);
TryCloneBranch(block->control_input(), block, graph(), common(),
- &block_effects);
+ &block_effects, source_positions_);
break;
}
@@ -494,6 +501,9 @@ void TryScheduleCallIfSuccess(Node* node, Node** control) {
void EffectControlLinearizer::ProcessNode(Node* node, Node** frame_state,
Node** effect, Node** control) {
+ SourcePositionTable::Scope scope(source_positions_,
+ source_positions_->GetSourcePosition(node));
+
// If the node needs to be wired into the effect/control chain, do this
// here. Pass current frame state for lowering to eager deoptimization.
if (TryWireInStateEffect(node, *frame_state, effect, control)) {
« no previous file with comments | « src/compiler/effect-control-linearizer.h ('k') | src/compiler/pipeline.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698