Watch compiler optimizing code or A tool for debugging compiler optimizations and type inference
Abstract
This tool is a Java application which visualizes the control and data
flow graph of the intermediate representation of Open Dylan [0] (former
DylanWorks, Harlequin Dylan, Functional Developer) and animates
optimizations. The Open Dylan compiler was extended with hooks to send
control flow and data flow changes via TCP/IP to the Java application.
The justification why the visualization is in Java is because I couldn't
find a decent graph layouting and animation library with an API. The
graph library used is yFiles [1]. The Java code [2] consists of 2000
lines of code, the compiler hooks were about 250 lines of code.
The communication protocol in use are S-expressions, in the same
marshalling format as swank (the slime backend protocol).
An example for this work is a visualized map(method(x) x end, #(1)),
available at [3] (data flow nodes and edges are pink).
- [0]: http://www.opendylan.org
- [1]: http://www.yworks.com/en/products_yfiles_about.html
- [2]:
http://www.opendylan.org/cgi-bin/viewvc.cgi/branches/opendylan-visualization/FlowGraphVisualization/src/
- [3]: http://www.opendylan.org/~hannes/yworks/test4.avi
hannes
|