[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