comparison graal/GraalCompiler/src/com/sun/c1x/debug/GraphvizPrinterObserver.java @ 2691:4149feada801

GraphvizPrinterObserver: close output stream also in case of exception
author Peter Hofer <peter.hofer@jku.at>
date Wed, 18 May 2011 11:27:10 +0200
parents 6ab73784566a
children 79590d6b4a7c
comparison
equal deleted inserted replaced
2690:abb4cc15283d 2691:4149feada801
58 58
59 String name = event.getMethod().holder().name(); 59 String name = event.getMethod().holder().name();
60 name = name.substring(1, name.length() - 1).replace('/', '.'); 60 name = name.substring(1, name.length() - 1).replace('/', '.');
61 name = name + "." + event.getMethod().name(); 61 name = name + "." + event.getMethod().name();
62 String filename = name + "_" + (n++) + "_" + event.getLabel(); 62 String filename = name + "_" + (n++) + "_" + event.getLabel();
63
64 OutputStream out = null;
63 try { 65 try {
64 if (pdf) { 66 if (pdf) {
65 ByteArrayOutputStream out = new ByteArrayOutputStream(); 67 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
68 GraphvizPrinter printer = new GraphvizPrinter(buffer);
69 if (C1XOptions.OmitDOTFrameStates) {
70 printer.addOmittedClass(FrameState.class);
71 }
72 printer.begin(name);
73 printer.print(graph, true);
74 printer.end();
75
76 out = new FileOutputStream(filename + ".pdf");
77 GraphvizRunner.process(GraphvizRunner.DOT_LAYOUT, new ByteArrayInputStream(buffer.toByteArray()), out, "pdf");
78 } else {
79 out = new FileOutputStream(filename + ".gv");
80
66 GraphvizPrinter printer = new GraphvizPrinter(out); 81 GraphvizPrinter printer = new GraphvizPrinter(out);
67 if (C1XOptions.OmitDOTFrameStates) { 82 if (C1XOptions.OmitDOTFrameStates) {
68 printer.addOmittedClass(FrameState.class); 83 printer.addOmittedClass(FrameState.class);
69 } 84 }
70 printer.begin(name); 85 printer.begin(name);
71 printer.print(graph, true); 86 printer.print(graph, true);
72 printer.end(); 87 printer.end();
73
74 FileOutputStream output = new FileOutputStream(filename + ".pdf");
75 GraphvizRunner.process(GraphvizRunner.DOT_LAYOUT, new ByteArrayInputStream(out.toByteArray()), output, "pdf");
76 output.close();
77 } else {
78 final FileOutputStream stream = new FileOutputStream(filename + ".gv");
79
80 GraphvizPrinter printer = new GraphvizPrinter(stream);
81 if (C1XOptions.OmitDOTFrameStates) {
82 printer.addOmittedClass(FrameState.class);
83 }
84 printer.begin(name);
85 printer.print(graph, true);
86 printer.end();
87
88 stream.close();
89 } 88 }
90 } catch (IOException e) { 89 } catch (IOException e) {
91 e.printStackTrace(); 90 e.printStackTrace();
91 } finally {
92 if (out != null) {
93 try {
94 out.close();
95 } catch (IOException e) {
96 }
97 }
92 } 98 }
93 } 99 }
94 } 100 }
95 } 101 }