ph-neutral header
welcome talks guest_info party history imprint darklab phenoelit twist4

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