[bitc-dev] Change to compiler behavior
Swaroop Sridhar
swaroop at cs.jhu.edu
Wed Jul 9 15:35:16 CDT 2008
Jonathan S. Shapiro wrote:
> The current BitC prototype compiler is a whole-program static compiler.
> At the moment, it isn't terribly useful, mainly because I was struggling
> to find any clean way to make it "feel" like a traditional separate
> compilation tool.
>
> Since we need to move forward, here is the plan. Comments, critiques,
> and problem identifications would be greatly appreciated!
>
> File Extensions:
>
> .bitc Used for bitc interface files (only).
> .bits :-) Used for implementation "source" files.
> .bito Used for "object" files. A "bito" file actually contains
> BitC source code, but all of the unit-at-a-time passes have
> already been applied, notably including lambda hoisting
> and closure conversion.
Currently, the closure conversion and function hoisting is done after
poly-instantiating polymorphic definitions. This is because knowing the
concrete types of definitions helps us determine which non-locals must
be refized (add a ref-indirection for preserving mutation effects).
It is possible to do this refization conservatively before
poly-instantiation if necessary.
The current unit-at-a-time passes (that is, not including closure
conversion) do not make major modifications to the AST. So, I think that
the .bito file can have the same content as the input .bitc/.bits files.
Once the unit-at-a-time passes have run, the program is guaranteed to
have no compile time errors.
Swaroop.
More information about the bitc-dev
mailing list