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.
( )
| 254 | nnn.addUse(n); |
| 255 | CODE.addAll(n._outputs); |
| 256 | } |
| 257 | kill(); |
| 258 | } |
| 259 | |
| 260 | // insert `this` immediately after `def` in the same basic block. |
| 261 | public void insertAfter( Node def ) { |
| 262 | CFGNode cfg = def.cfg0(); |
| 263 | int i = cfg._outputs.find(def)+1; |
| 264 | if( cfg instanceof CallEndNode ) { |
| 265 | cfg = cfg.uctrl(); i=0; |
| 266 | } else if( def.in(0) instanceof MultiNode ) { |
| 267 | assert i==0; |
| 268 | i = cfg._outputs.find(def.in(0))+1; |
| 269 | } |
| 270 | |
| 271 | while( cfg.out(i) instanceof PhiNode || cfg.out(i) instanceof CalleeSaveNode ) i++; |
no test coverage detected