[fetter-devel] Progress Report for Week of August 8
Rayiner Hashem
rayiner at gmail.com
Mon Aug 15 21:53:41 UTC 2005
Accomplished:
1) Wrote C-FFI backend. It handles most interesting things, except
defining C variables, which I'll do once I get things running on
Luis's branch.
2) Rewrote dependency reordering pass to do things The Right Way. This
means using a DFS to calculate the finishing time for each vertex,
generating a list of all definition edges in the graph, and sorting
the list by finishing time. Being the "Right Way", it doesn't handle C
semantics correctly. It doesn't messes up the dependencies for the
following case:
struct foo {bar* myBar};
struct bar {foo* myFoo};
This is fine for C-FFI, which doesn't have typed pointers, but not for
UFFI, which I don't think can handle the situation at all.
3) Wrote a Cairo demo application, updated website with output samples.
4) Boring but necessary prerequisite work for C++ support. Wrote a
simplification pass to unnest nested declarations, made sure member
functions get handled properly, etc.
5) Started the utility library to handled virtual functions calls into C++ code.
6) Conceptual work on semantics of C++ bindings. Will post outline RSN.
To Do:
1) Write simplification pass to promote structures with member
functions to class-type IR nodes, and demote classes without member
functions to struct-type IR nodes.
2) Make generated code use utility library to do virtual function calls.
3) Emit proper declarations for non-virtual member functions.
4) Get things running on CFFI-Luis.
More information about the fetter-devel
mailing list