changeset 4388:b484ad70facb

Lazy initialize the printer.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 28 Jan 2012 00:44:26 +0100
parents 1bd28959b8b8
children 6ffa3413096e
files graal/com.oracle.max.graal.printer/src/com/oracle/max/graal/printer/IdealGraphPrinterDumpHandler.java
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.printer/src/com/oracle/max/graal/printer/IdealGraphPrinterDumpHandler.java	Sat Jan 28 00:40:18 2012 +0100
+++ b/graal/com.oracle.max.graal.printer/src/com/oracle/max/graal/printer/IdealGraphPrinterDumpHandler.java	Sat Jan 28 00:44:26 2012 +0100
@@ -42,28 +42,37 @@
 
     private IdealGraphPrinter printer;
     private List<RiResolvedMethod> previousInlineContext = new ArrayList<>();
+    private String fileName;
+    private String host;
+    private int port;
 
     /**
      * Creates a new {@link IdealGraphPrinterDumpHandler} that writes output to a file named after the compiled method.
      */
     public IdealGraphPrinterDumpHandler() {
-        initializeFilePrinter(DEFAULT_FILE_NAME);
-        begin();
+        this.fileName = DEFAULT_FILE_NAME;
     }
 
     /**
      * Creates a new {@link IdealGraphPrinterDumpHandler} that sends output to a remote IdealGraphVisualizer instance.
      */
     public IdealGraphPrinterDumpHandler(String host, int port) {
-        initializeNetworkPrinter(host, port);
-        begin();
+        this.host = host;
+        this.port = port;
     }
 
-    private void begin() {
+
+
+    private void ensureInitialized() {
+        if (fileName != null) {
+            initializeFilePrinter();
+        } else {
+            initializeNetworkPrinter();
+        }
         printer.begin();
     }
 
-    private void initializeFilePrinter(String fileName) {
+    private void initializeFilePrinter() {
         try {
             FileOutputStream stream = new FileOutputStream(fileName);
             printer = new IdealGraphPrinter(stream);
@@ -72,7 +81,7 @@
         }
     }
 
-    private void initializeNetworkPrinter(String host, int port) {
+    private void initializeNetworkPrinter() {
         try  {
             Socket socket = new Socket(host, port);
             BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream(), 0x4000);
@@ -86,6 +95,7 @@
     @Override
     public void dump(Object object, final String message) {
         if (object instanceof Graph) {
+            ensureInitialized();
             final Graph graph = (Graph) object;
 
             if (printer.isValid()) {