|Incremental compilation and type checking firstname.lastname@example.org (Gabriele Farina) (2008-06-30)|
|Re: Incremental compilation and type checking email@example.com (Eliot Miranda) (2008-07-02)|
|From:||Eliot Miranda <firstname.lastname@example.org>|
|Date:||Wed, 02 Jul 2008 08:48:34 -0700|
|Posted-Date:||03 Jul 2008 08:28:26 EDT|
Gabriele Farina wrote:
> I'm going to start writing a compiler for a typed OO language (similar
> to Java or JS 2.0). This is my first real compiler and I'd like to ask
> you some questions hoping u can help me out in designing the compiler
> What I want to do is to support incremental and multithreaded
> compilation, so I can compile each class file separately in an object
> and recompile only the files that have been changed between different
> My idea is to compile each file in its own thread, generating an
> itermediate object code which contains a data section and an header
> section. In the data section I'll put the bytecode and the required
> tables (class table, constants table, etc ...), and in the header
> section I'll put some additional informations related to type
> dependencies. During compilation I'll do a partial type check when
> possible, reserving type checking for externally defined types while
> linking the object files.
> Linking will be done by one single thread, doing the final checks and
> mergin them together the data sections (adding offsets to the tables
> when necessary).
> Do you think that this could work ?
> I'm asking about type checking because I've no idea how it is handled
> by multithreaded compilers.
Read up on in-line caches and polymorphic in-line caches in dynamic
languages like Smalltalk and Self. Then leave the type checking to
send time when a message is first sent. If the type check fails rase
a dynamic error. if the type check succeeds the in-line cache at the
send site is suitably updated and subsequent sends for the same type
avoid the type check.
Provide static type checking in a separate whole-program analysis tool
that is not used by the compiler. See Gilad bracha's papers on
You will get both excellent run-time performance form using in-line
caches and a more flexible and pleasant to use type system from keeping
it independent from the run-time.
The surest sign that intelligent life exists elsewhere in Calvin &
the universe is that none of it has tried to contact us. Hobbes.
Eliot ,,,^..^,,, Smalltalk - scene not herd
Return to the
Search the comp.compilers archives again.