--- /dev/null
+! Copyright (C) 2009 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license
+USING: accessors compiler.cfg.rpo images.viewer io
+io.encodings.ascii io.files io.files.unique io.launcher kernel
+math.parser sequences ;
+IN: compiler.cfg.graphviz
+
+: cfg>dot ( cfg -- )
+ "digraph CFG {" print
+ [
+ [ number>> ] [ successors>> ] bi [
+ number>> [ number>string ] bi@ " -> " glue write ";" print
+ ] with each
+ ] each-basic-block
+ "}" print ;
+
+: render-cfg ( cfg -- )
+ "cfg" "dot" make-unique-file
+ [ ascii [ cfg>dot ] with-file-writer ]
+ [ { "dot" "-Tpng" "-O" } swap suffix try-process ]
+ [ ".png" append { "open" } swap suffix try-process ]
+ tri ;