diff options
Diffstat (limited to 'chapter21/src')
| -rw-r--r-- | chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java | 4 | ||||
| -rw-r--r-- | chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java b/chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java index 2c5b138d..902aa3c2 100644 --- a/chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java +++ b/chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java @@ -255,8 +255,8 @@ public abstract class ASMPrinter { // MultiNodes are immediately followed by projection(s) if( !(n instanceof CFGNode) && n instanceof MultiNode ) { for( Node proj : n._outputs ) { - assert proj instanceof ProjNode; - doInst(iadr,sb,code,fun, cfgidx, proj,postAlloc,postEncode); + if( proj instanceof ProjNode ) // it could also be an ante-dep + doInst(iadr,sb,code,fun, cfgidx, proj,postAlloc,postEncode); } } diff --git a/chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java b/chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java index b171e9f7..c6e478c5 100644 --- a/chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java +++ b/chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java @@ -212,7 +212,8 @@ public abstract class IRPrinter { printLine(n,sb); if( !(n instanceof CFGNode) && n instanceof MultiNode ) for( Node use : n._outputs ) - printLine(use,sb); + if( use instanceof ProjNode ) + printLine(use,sb); } } @@ -282,7 +283,8 @@ public abstract class IRPrinter { printLine( n, sb, bns, i--, ds,ns ); if( n instanceof MultiNode && !(n instanceof CFGNode) ) { for( Node use : n._outputs ) { - printLine(use,sb,bns,bns.indexOf(use),ds,ns); + if( use instanceof ProjNode ) + printLine(use,sb,bns,bns.indexOf(use),ds,ns); } } } |
