annotate graal/GraalCompiler/src/com/sun/c1x/debug/IdealGraphPrinterObserver.java @ 2698:b179be22a3db

Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
author Peter Hofer <peter.hofer@jku.at>
date Wed, 18 May 2011 15:01:43 +0200
parents 79590d6b4a7c
children a51ef0310dad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
1 /*
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
4 *
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
7 * published by the Free Software Foundation.
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
8 *
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
13 * accompanied this code).
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
14 *
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
18 *
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
21 * questions.
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
22 */
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
23 package com.sun.c1x.debug;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
24
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
25 import java.io.*;
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
26 import java.net.*;
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
27 import java.util.regex.*;
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
28
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
29 import com.oracle.graal.graph.*;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
30 import com.sun.c1x.*;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
31 import com.sun.c1x.observer.*;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
32 import com.sun.c1x.value.*;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
33
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
34 /**
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
35 * Observes compilation events and uses {@link IdealGraphPrinter} to generate a graph representation that can be
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
36 * inspected with the <a href="http://kenai.com/projects/igv">Ideal Graph Visualizer</a>.
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
37 *
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
38 * @author Peter Hofer
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
39 */
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
40 public class IdealGraphPrinterObserver implements CompilationObserver {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
41
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
42 private static final Pattern INVALID_CHAR = Pattern.compile("[^A-Za-z0-9_.-]");
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
43
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
44 private final String host;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
45 private final int port;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
46
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
47 private IdealGraphPrinter printer;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
48 private OutputStream stream;
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
49 private Socket socket;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
50
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
51 public IdealGraphPrinterObserver() {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
52 this(null, -1);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
53 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
54
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
55 public IdealGraphPrinterObserver(String host, int port) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
56 this.host = host;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
57 this.port = port;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
58 }
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
59
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
60 @Override
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
61 public void compilationStarted(CompilationEvent event) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
62 assert (stream == null && printer == null);
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
63
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
64 if (!TTY.isSuppressed()) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
65 String name = event.getMethod().holder().name();
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
66 name = name.substring(1, name.length() - 1).replace('/', '.');
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
67 name = name + "." + event.getMethod().name();
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
68
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
69 if (host != null) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
70 openNetworkPrinter(name);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
71 } else {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
72 openFilePrinter(name);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
73 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
74 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
75 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
76
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
77 private void openFilePrinter(String name) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
78 String filename = name + ".igv.xml";
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
79 filename = INVALID_CHAR.matcher(filename).replaceAll("_");
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
80
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
81 try {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
82 stream = new FileOutputStream(filename);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
83 printer = new IdealGraphPrinter(stream);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
84 if (C1XOptions.OmitDOTFrameStates) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
85 printer.addOmittedClass(FrameState.class);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
86 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
87 printer.begin();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
88 printer.beginGroup(name, name, -1);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
89 } catch (IOException e) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
90 e.printStackTrace();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
91 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
92 }
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
93
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
94 private void openNetworkPrinter(String name) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
95 try {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
96 socket = new Socket(host, port);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
97 if (socket.getInputStream().read() == 'y') {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
98 stream = socket.getOutputStream();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
99 } else {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
100 // server currently does not accept any input
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
101 socket.close();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
102 socket = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
103 return;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
104 }
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
105
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
106 printer = new IdealGraphPrinter(stream);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
107 if (C1XOptions.OmitDOTFrameStates) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
108 printer.addOmittedClass(FrameState.class);
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
109 }
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
110 printer.begin();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
111 printer.beginGroup(name, name, -1);
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
112 printer.flush();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
113 if (socket.getInputStream().read() != 'y') {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
114 // server declines input for this method
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
115 socket.close();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
116 socket = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
117 stream = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
118 printer = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
119 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
120 } catch (IOException e) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
121 e.printStackTrace();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
122
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
123 if (socket != null) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
124 try {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
125 socket.close();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
126 } catch (IOException ioe) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
127 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
128 socket = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
129 }
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
130 stream = null;
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
131 printer = null;
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
132 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
133 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
134
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
135 @Override
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
136 public void compilationEvent(CompilationEvent event) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
137 if (printer != null && event.getStartBlock() != null) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
138 Graph graph = event.getStartBlock().graph();
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
139 printer.print(graph, event.getLabel(), true);
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
140 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
141 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
142
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
143 @Override
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
144 public void compilationFinished(CompilationEvent event) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
145 if (printer != null) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
146 try {
2692
79590d6b4a7c IdealGraphPrinterObserver, GraphvizPrinterObserver: replace possibly invalid characters in file names
Peter Hofer <peter.hofer@jku.at>
parents: 2684
diff changeset
147 printer.endGroup();
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
148 printer.end();
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
149
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
150 if (socket != null) {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
151 socket.close(); // also closes stream
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
152 } else {
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
153 stream.close();
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
154 }
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
155 } catch (IOException e) {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
156 e.printStackTrace();
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
157 } finally {
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
158 printer = null;
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
159 stream = null;
2698
b179be22a3db Allow to submit graphs to IdealGraphVisualizer remotely with new options named after their counterparts in C2
Peter Hofer <peter.hofer@jku.at>
parents: 2692
diff changeset
160 socket = null;
2684
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
161 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
162 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
163 }
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
164
ed36daed4c43 Add new option PrintIdealGraphToFile and another printer/observer pair to generate a graph representation that can be visualized and inspected with the ideal graph visualizer
Peter Hofer <peter.hofer@jku.at>
parents:
diff changeset
165 }