summaryrefslogtreecommitdiff
path: root/chapter21/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'chapter21/src/main')
-rw-r--r--chapter21/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java4
-rw-r--r--chapter21/src/main/java/com/seaofnodes/simple/print/IRPrinter.java6
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);
}
}
}