https://github.com/evilmartians/furnace-xray
A visualizer for transformations of code in Static Single Assignment form based on the Furnace library.
https://github.com/evilmartians/furnace-xray
programming-language visualizer
Last synced: over 1 year ago
JSON representation
A visualizer for transformations of code in Static Single Assignment form based on the Furnace library.
- Host: GitHub
- URL: https://github.com/evilmartians/furnace-xray
- Owner: evilmartians
- License: mit
- Created: 2012-09-24T17:16:07.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2013-03-29T09:32:36.000Z (over 13 years ago)
- Last Synced: 2025-04-12T00:55:35.417Z (over 1 year ago)
- Topics: programming-language, visualizer
- Language: CoffeeScript
- Homepage:
- Size: 873 KB
- Stars: 12
- Watchers: 8
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Furnace X-Ray
Furnace X-Ray is a visualizer for transformations performed on Static Single
Assignment form in the [Furnace][] framework.
[Furnace]: http://github.com/whitequark/furnace
## Installation
$ gem install furnace-xray
## Usage
First, you need to enable instrumentation for the functions you want to
observe. Here is a sample snippet:
``` ruby
mod = SSA::Module.new
fun = SSA::Function.new('my-function')
# It is important to enable instrumentation before doing anything else
# with the function. Otherwise, the collected data will be invalid.
fun.instrumentaiton = SSA::EventStream.new
mod.add fun
# Optionally, notify the instrumentation engine that you have started
# a transformation.
fun.instrumentation.transform_start "Set return type"
# Now, do whatever you want with the function.
fun.return_type = SSA.void_type
# After you have finished transforming functions, fetch the instrumentation
# data and dump it as JSON.
File.write("data.json", JSON.dump(mod.instrumentation))
```
To view collected data, just point furnace-xray to it:
$ furnace-xray data.json
[2013-01-27 20:05:13] INFO WEBrick 1.3.1
[2013-01-27 20:05:13] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from WEBrick
[2013-01-27 20:05:13] INFO WEBrick::HTTPServer#start: pid=28695 port=4567
Now, open your ~~browser~~ Chrome or Chromium and point it to
http://localhost:4567.

## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request
## License
MIT.