Add a node to the list of dependencies. Only add it if its not an input or output of this node, that is, it is at least one step away. The node being added must benefit from this node being peepholed.
( N dep )
| 547 | * being added must benefit from this node being peepholed. |
| 548 | */ |
| 549 | <N extends Node> N addDep( N dep ) { |
| 550 | // Running peepholes during the big assert cannot have side effects |
| 551 | // like adding dependencies. |
| 552 | if( CODE._midAssert ) return dep; |
| 553 | if( dep._deps==null ) dep._deps = new Ary<>(Node.class); |
| 554 | if( dep._deps .find(this) != -1 ) return dep; // Already on list |
| 555 | if( dep._inputs .find(this) != -1 ) return dep; // No need for deps on immediate neighbors |
| 556 | if( dep._outputs.find(this) != -1 ) return dep; |
| 557 | dep._deps.add(this); |
| 558 | return dep; |
| 559 | } |
| 560 | |
| 561 | // Move the dependents onto a worklist, and clear for future dependents. |
| 562 | public void moveDepsToWorklist( ) { |
no test coverage detected