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.
( Node dep )
| 474 | * being added must benefit from this node being peepholed. |
| 475 | */ |
| 476 | Node addDep( Node dep ) { |
| 477 | // Running peepholes during the big assert cannot have side effects |
| 478 | // like adding dependencies. |
| 479 | if( CODE._midAssert ) return this; |
| 480 | if( dep == null ) return this; |
| 481 | if( _deps==null ) _deps = new Ary<>(Node.class); |
| 482 | if( _deps .find(dep) != -1 ) return this; // Already on list |
| 483 | if( _inputs .find(dep) != -1 ) return this; // No need for deps on immediate neighbors |
| 484 | if( _outputs.find(dep) != -1 ) return this; |
| 485 | _deps.add(dep); |
| 486 | return this; |
| 487 | } |
| 488 | |
| 489 | // Move the dependents onto a worklist, and clear for future dependents. |
| 490 | public void moveDepsToWorklist( ) { |
no test coverage detected