changeset 22339:ba6a5a66fa18

CFGPrinterObserver: add support for dumping a subset of blocks.
author Josef Eisl <josef.eisl@jku.at>
date Thu, 16 Jul 2015 17:17:30 +0200
parents e50e1e67e17e
children e830b9559d8f
files graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java	Thu Jul 23 18:54:21 2015 +0200
+++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinterObserver.java	Thu Jul 16 17:17:30 2015 +0200
@@ -36,6 +36,7 @@
 import jdk.internal.jvmci.service.*;
 
 import com.oracle.graal.code.*;
+import com.oracle.graal.compiler.common.cfg.*;
 import com.oracle.graal.compiler.gen.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.java.*;
@@ -204,6 +205,8 @@
             }
         } else if (object instanceof StackInterval[]) {
             cfgPrinter.printStackIntervals(message, (StackInterval[]) object);
+        } else if (isBlockList(object)) {
+            cfgPrinter.printCFG(message, getBlockList(object), false);
         }
 
         cfgPrinter.target = null;
@@ -214,6 +217,15 @@
 
     }
 
+    @SuppressWarnings("unchecked")
+    private static List<? extends AbstractBlockBase<?>> getBlockList(Object object) {
+        return (List<? extends AbstractBlockBase<?>>) object;
+    }
+
+    private static boolean isBlockList(Object object) {
+        return object instanceof List<?> && ((List<?>) object).size() > 0 && ((List<?>) object).get(0) instanceof AbstractBlockBase<?>;
+    }
+
     private static DisassemblerProvider disassembler;
 
     private static final DisassemblerProvider NOP_DISASSEMBLER = new DisassemblerProvider() {