Home | History | Annotate | Download | only in compiler

Lines Matching refs:Loop

78   Node* NewOsrPhi(Node* loop, Node* incoming, int osr_value, Node* back1 = NULL,
84 CHECK_EQ(loop->InputCount(), count);
85 CHECK_EQ(osr_loop_entry, loop->InputAt(1));
93 inputs[count] = loop;
100 Node* loop = graph.NewNode(common.Loop(1), entry);
102 loop->AppendInput(graph.zone(), osr_loop_entry);
105 loop->AppendInput(graph.zone(), loop);
107 NodeProperties::ChangeOp(loop, common.Loop(loop->InputCount()));
108 return loop;
136 Node* loop = T.NewOsrLoop(1);
138 T.graph.SetEnd(loop);
142 CheckInputs(loop, T.start, loop);
149 Node* loop = T.NewOsrLoop(1);
151 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
153 Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop);
158 CheckInputs(loop, T.start, loop);
159 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
160 CheckInputs(ret, osr_phi, T.start, loop);
169 Node* loop = T.NewOsrLoop(1, d.merge);
171 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
173 Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop);
178 CheckInputs(loop, T.start, loop);
179 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
180 CheckInputs(ret, osr_phi, T.start, loop);
182 // The control before the loop should have been removed.
194 Node* loop = T.NewOsrLoop(1);
196 Node* branch = T.graph.NewNode(T.common.Branch(), T.p0, loop);
199 loop->ReplaceInput(2, if_true);
202 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
209 CheckInputs(loop, T.start, if_true);
210 CheckInputs(branch, T.p0, loop);
213 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
221 Node* loop = T.NewOsrLoop(1);
223 // Two chained branches in the the body of the loop.
224 Node* branch1 = T.graph.NewNode(T.common.Branch(), T.p0, loop);
231 loop->ReplaceInput(2, if_true2);
234 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
242 CheckInputs(loop, T.start, if_true2);
243 CheckInputs(branch1, T.p0, loop);
250 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
259 Node* loop = T.NewOsrLoop(2);
262 Node* branch1 = T.graph.NewNode(T.common.Branch(), T.p0, loop);
269 loop->ReplaceInput(2, if_false1);
270 loop->ReplaceInput(3, if_true2);
273 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant(),
281 CheckInputs(loop, T.start, if_false1, if_true2);
282 CheckInputs(branch1, T.p0, loop);
290 T.jsgraph.ZeroConstant(), loop);
300 Node* loop;
304 loop = t.NewLoop(is_osr, backedges);
305 branch = t.graph.NewNode(t.common.Branch(), cond, loop);
308 loop->ReplaceInput(loop->InputCount() - 1, if_true);
312 that.loop->ReplaceInput(that.loop->InputCount() - 1, exit);
313 this->loop->ReplaceInput(0, that.if_true);
317 if (loop->InputCount() == 2) {
319 i1, i2, loop);
322 i1, i2, i3, loop);
360 // Check inner OSR loop is directly connected to start.
361 CheckInputs(inner.loop, T.start, inner.if_true);
362 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.FalseConstant(), inner.loop);
364 // Check control transfer to copy of outer loop.
367 CHECK_NE(new_outer_loop, outer.loop);
372 // Check structure of outer loop.
385 // Check structure of inner loop.
398 // Test multiple backedge outer loop.
416 outer.loop->ReplaceInput(1, x_true);
417 outer.loop->ReplaceInput(2, x_false);
427 // Check inner OSR loop is directly connected to start.
428 CheckInputs(inner.loop, T.start, inner.if_true);
429 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.FalseConstant(), inner.loop);
431 // Check control transfer to copy of outer loop.
438 CHECK_NE(new_outer_loop, outer.loop);
446 // Check structure of outer loop.
459 // Check structure of inner loop.
470 Node* MakeCounter(JSGraph* jsgraph, Node* start, Node* loop) {
471 int count = loop->InputCount();
476 tmp_inputs.push_back(loop);
493 // outermost loop.
495 Node* loop0_cntr = MakeCounter(&T.jsgraph, T.p0, loop0.loop);
498 // middle loop.
499 Node* loop1 = T.graph.NewNode(T.common.Loop(1), loop0.if_true);
504 // innermost (OSR) loop.
506 loop2.loop->ReplaceInput(0, loop1);
508 Node* loop2_cntr = MakeCounter(&T.jsgraph, loop1_phi, loop2.loop);
517 // Branch to either the outer or middle loop.
522 loop0.loop->ReplaceInput(1, if_true);
524 NodeProperties::ChangeOp(loop1, T.common.Loop(2));
534 // Check loop2 (OSR loop) is directly connected to start.
535 CheckInputs(loop2.loop, T.start, loop2.if_true);
536 CheckInputs(osr_phi, T.osr_values[0], loop2_inc, loop2.loop);
537 CheckInputs(loop2.branch, osr_phi, loop2.loop);
568 // Check that the return returns the phi from the OSR loop and control