Kill a Node with no uses , by setting all of its defs to null. This may recursively kill more Nodes and is basically dead code elimination. This function is co-recursive with #setDef.
( )
| 169 | * code elimination. This function is co-recursive with {@link #setDef}. |
| 170 | */ |
| 171 | public void kill( ) { |
| 172 | assert isUnused(); // Has no uses, so it is dead |
| 173 | for( int i=0; i<nIns(); i++ ) |
| 174 | setDef(i,null); // Set all inputs to null, recursively killing unused Nodes |
| 175 | _inputs.clear(); |
| 176 | _type=null; // Flag as dead |
| 177 | assert isDead(); // Really dead now |
| 178 | } |
| 179 | |
| 180 | // Mostly used for asserts and printing. |
| 181 | boolean isDead() { return isUnused() && nIns()==0 && _type==null; } |