fix inliner
authorbdemsky <bdemsky>
Fri, 26 Jun 2009 01:08:18 +0000 (01:08 +0000)
committerbdemsky <bdemsky>
Fri, 26 Jun 2009 01:08:18 +0000 (01:08 +0000)
Robust/src/IR/Flat/Inliner.java

index 780856b443aa7fc74cbe0a6f51969e69a560dd3f..61a209efe265cdda3cde1d50a730e27eea643412 100644 (file)
@@ -41,6 +41,9 @@ public class Inliner {
     //make depth 0 be depth infinity
     if (depth==0)
       depth=10000000;
+    if (atomicset.isEmpty())
+      return;
+    System.out.println("Inlining methods into "+fm.getMethod());
     recursive(state, typeutil, atomicset, depth, new Stack<MethodDescriptor>());
   }
   
@@ -67,7 +70,7 @@ public class Inliner {
   public static Set<FlatNode> inline(FlatCall fc, TypeUtil typeutil, State state) {
     MethodDescriptor md=fc.getMethod();
     if (md.getModifiers().isNative())
-      return;
+      return null;
 
     /* Do we need to do virtual dispatch? */
     if (md.isStatic()||md.getReturnType()==null||singleCall(typeutil, fc.getThis().getType().getClassDesc(),md)) {
@@ -77,6 +80,7 @@ public class Inliner {
       TempDescriptor rettmp=fc.getReturnTemp();
       FlatNode aftercallnode=fc.getNext(0);
       aftercallnode.removePrev(fc);
+      System.out.println("Inlining: "+md);
 
       FlatMethod fm=state.getMethodFlat(md);
       //Clone nodes