@@ -0,0 +1,28 @@
|
||||
# graphis
|
||||
|
||||
inspects OCaml heap values and lowers the reachable object graph to
|
||||
graphviz DOT
|
||||
|
||||

|
||||
|
||||
## api
|
||||
|
||||
the capture context is the alias analysis boundary. values captured through the same context share one address table so repeated physical values lower to the same node and cycles terminate through the visited set
|
||||
|
||||
```ocaml
|
||||
Graphis.context (fun ctx ->
|
||||
let shared = [| "left"; "right" |] in
|
||||
let root = shared, shared in
|
||||
Graphis.print_dot Format.std_formatter
|
||||
[ "root", Graphis.capture ctx root ])
|
||||
```
|
||||
|
||||
the same graph can be written as DOT for graphviz
|
||||
|
||||
```ocaml
|
||||
Graphis.context (fun ctx ->
|
||||
let shared = [| "left"; "right" |] in
|
||||
let root = shared, shared in
|
||||
Graphis.write_dot "heap.dot"
|
||||
[ "root", Graphis.capture ctx root ])
|
||||
```
|
||||
Reference in New Issue
Block a user