Shopify / seafoam

A tool for working with compiler graphs dumped by the GraalVM compiler
MIT License
126 stars 22 forks source link

Basic Mermaid and Markdown output #56

Closed chrisseaton closed 2 years ago

chrisseaton commented 2 years ago

For https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/.

% seafoam examples/fib-java.bgv.gz:0 render --md | pbcopy
flowchart TD
  node0["Start"]
  node1["P(0)"]
  node2["FrameState Fib#fib Fib.java:17"]
  node4["C(2)"]
  node5["<"]
  node6["Begin"]
  node7["Begin"]
  node8["If"]
  node9["Return"]
  node10["C(-1)"]
  node11["+"]
  node12["MethodCallTarget"]
  node13["Call Fib.fib"]
  node14["FrameState Fib#fib Fib.java:20"]
  node15["C(-2)"]
  node16["+"]
  node17["MethodCallTarget"]
  node18["Call Fib.fib"]
  node19["FrameState Fib#fib Fib.java:20"]
  node20["+"]
  node21["Return"]
  node2 --> node0
  node0 --> node8
  node1 --> node2
  node1 --> node5
  node4 --> node5
  node6 --> node13
  node7 --> node9
  node5 --> node8
  node8 --> node7
  node8 --> node6
  node1 --> node9
  node1 --> node11
  node10 --> node11
  node11 --> node12
  node14 --> node13
  node12 --> node13
  node13 --> node18
  node1 --> node14
  node13 --> node14
  node1 --> node16
  node15 --> node16
  node16 --> node17
  node19 --> node18
  node17 --> node18
  node18 --> node21
  node13 --> node19
  node18 --> node19
  node13 --> node20
  node18 --> node20
  node20 --> node21

We can explore formatting and things like node inlining next.

CC @eregon

nirvdrum commented 2 years ago

It looks good to me. I think the Graphviz graphs look better, but with GitHub adopting Mermaid it'll be nice to pull together docs, issues, blog posts, and such with a simple representation of the graphs.