Mercurial > hg > truffle
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 } |