Lines Matching refs:node
10 #include "src/compiler/node-matchers.h"
11 #include "src/compiler/node-properties.h"
34 Node* node = queue_.front();
36 if (node->IsDead()) continue;
37 switch (node->opcode()) {
39 VisitBranch(node);
42 VisitNode(node);
49 void ControlFlowOptimizer::Enqueue(Node* node) {
50 DCHECK_NOT_NULL(node);
51 if (node->IsDead() || queued_.Get(node)) return;
52 queued_.Set(node, true);
53 queue_.push(node);
57 void ControlFlowOptimizer::VisitNode(Node* node) {
58 for (Edge edge : node->use_edges()) {
66 void ControlFlowOptimizer::VisitBranch(Node* node) {
67 DCHECK_EQ(IrOpcode::kBranch, node->opcode());
68 if (TryBuildSwitch(node)) return;
69 VisitNode(node);
73 bool ControlFlowOptimizer::TryBuildSwitch(Node* node) {
74 DCHECK_EQ(IrOpcode::kBranch, node->opcode());
76 Node* branch = node;
81 Node* index = m.left().node();
106 if (m1.left().node() != index) break;
112 if (branch != node) {
114 if_true->ReplaceInput(0, node);
125 DCHECK_EQ(IrOpcode::kBranch, node->opcode());
127 if (branch == node) {
132 node->ReplaceInput(0, index);
133 NodeProperties::ChangeOp(node, common()->Switch(values.size() + 1));
134 if_true->ReplaceInput(0, node);
137 if_false->ReplaceInput(0, node);