Compilation strategy

Walter Bright newshound2 at digitalmars.com
Tue Dec 18 09:22:35 PST 2012


On 12/18/2012 8:54 AM, Andrei Alexandrescu wrote:
> On 12/18/12 10:01 AM, Walter Bright wrote:
>> On 12/18/2012 1:43 AM, Dmitry Olshansky wrote:
>>> Compared to doing computations on AST tries (and looking up every name
>>> in symbol
>>> table?), creating fake nodes when the result is computed etc?
>>
>> CTFE does not look up every (or any) name in the symbol table. I don't
>> see any advantage to interpreting bytecode over interpreting ASTs. In
>> fact, all the Java bytecode is is a serialized AST.
>
> My understanding is that Java bytecode is somewhat lowered e.g. using a stack
> machine for arithmetic, jumps etc. which makes it more amenable to
> interpretation than what an AST walker would do.

The Java bytecode is indeed a stack machine, and a stack machine *is* a 
serialized AST.


> Also bytecode is more directly
> streamable because you don't need any pointer fixups.

A stack machine *is* a streamable representation of an AST. They are trivially 
convertible back and forth between each other, and I mean trivially.



More information about the Digitalmars-d mailing list