compiler.cfg.graphviz: add render-dom word
parent
2a87faf681
commit
d18a80dedb
|
@ -1,22 +1,44 @@
|
||||||
! Copyright (C) 2009 Slava Pestov.
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
USING: accessors compiler.cfg.rpo images.viewer io
|
USING: accessors compiler.cfg.rpo compiler.cfg.dominance
|
||||||
io.encodings.ascii io.files io.files.unique io.launcher kernel
|
compiler.cfg.dominance.private compiler.cfg.predecessors images.viewer
|
||||||
math.parser sequences ;
|
io io.encodings.ascii io.files io.files.unique io.launcher kernel
|
||||||
|
math.parser sequences assocs arrays make namespaces ;
|
||||||
IN: compiler.cfg.graphviz
|
IN: compiler.cfg.graphviz
|
||||||
|
|
||||||
: cfg>dot ( cfg -- )
|
: render-graph ( edges -- )
|
||||||
"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
|
"cfg" "dot" make-unique-file
|
||||||
[ ascii [ cfg>dot ] with-file-writer ]
|
[
|
||||||
|
ascii [
|
||||||
|
"digraph CFG {" print
|
||||||
|
[ [ number>> number>string ] bi@ " -> " glue write ";" print ] assoc-each
|
||||||
|
"}" print
|
||||||
|
] with-file-writer
|
||||||
|
]
|
||||||
[ { "dot" "-Tpng" "-O" } swap suffix try-process ]
|
[ { "dot" "-Tpng" "-O" } swap suffix try-process ]
|
||||||
[ ".png" append { "open" } swap suffix try-process ]
|
[ ".png" append { "open" } swap suffix try-process ]
|
||||||
tri ;
|
tri ;
|
||||||
|
|
||||||
|
: cfg-edges ( cfg -- edges )
|
||||||
|
[
|
||||||
|
[
|
||||||
|
dup successors>> [
|
||||||
|
2array ,
|
||||||
|
] with each
|
||||||
|
] each-basic-block
|
||||||
|
] { } make ;
|
||||||
|
|
||||||
|
: render-cfg ( cfg -- ) cfg-edges render-graph ;
|
||||||
|
|
||||||
|
: dom-edges ( cfg -- edges )
|
||||||
|
[
|
||||||
|
compute-predecessors
|
||||||
|
compute-dominance
|
||||||
|
dom-childrens get [
|
||||||
|
[
|
||||||
|
2array ,
|
||||||
|
] with each
|
||||||
|
] assoc-each
|
||||||
|
] { } make ;
|
||||||
|
|
||||||
|
: render-dom ( cfg -- ) dom-edges render-graph ;
|
Loading…
Reference in New Issue