[virtmach] Implementing VMs efficiently

btanksley@hifn.com btanksley@hifn.com
Wed, 2 Feb 2000 16:37:58 -0800

> From: Peter_Murray@allegiance.com.au

> I feel that methods of dynamic optization seem to be blurring the line
> between the virtual machine and the compiler.

Interesting way of putting it.

> I've long wondered if it would be worthwile distributing a 
> compressed and
> possibly encrypted intermediate representation of a program 
> along with, or
> instead or, the byte-codes.  This should enable better 
> optimisation since
> the optimizer theoretically would have a better idea of the 
> "intent" of the
> application.

SlimBinaries for Oberon (AKA 'Juice') have been doing that for a long time.
There's no need for bytecodes, and the resulting binary is far smaller than
compressed bytecodes or source.  There's also no need for a huge 'validator'
program which is responsible for checking type safety; it's literally
impossible to encode a type unsafe operation.

(Although in the case of Juice, this "impossibility" is unproven; it wasn't
a priority.  There's a project underway to impliment a proven save version
at http://caesar.ics.uci.edu/laski/portablecode.html; so far they've
developed a C++ parser for SlimBinaries, thus providing a semiformal
specification for Slimbinaries which wasn't available before.)

Personally, I think bytecodes are a staggeringly bad idea for most VM use;
they take too much space and carry too little information.  The only place
they're reasonable is in constrained memory (where there's not enough room
to unpack a slimBinary).