[virtmach] parrot VM?

Manoj Plakal virtmach@iecc.com
Fri, 12 Jul 2002 17:26:08 -0500

Chris Lattner wrote (Fri, Jul 12, 2002 at 04:42:05PM -0500) :
> > > and (b) simpler compiler?
> > Yes.  I imagine register allocation (done right) would be a significant
> > complication in the bytecode compiler.
> Although the register allocator would give much better results than simple 
> tree based heuristics used for stack machines.  Linear scan register 
> allocation isn't that hard, and gives quite reasonable results.
> > > Is there some other obvious reason to use a stack VM?
> One very significant drawback of stack-based VMs is that they are almost 
> impossible to do meaningful optimizations on.  If your VM performs any 
> substation optimization, you will often find that you have to translate 
> from a stack-based rep to a register based representation anyway, losing 
> any advantages the stack based VM gives you.

	True. I think that if you want a high-performance VM,
	then you probably want to do a register VM.

	But aren't there some portability issues with a register VM?
	Wouldn't you want to map the VM registers to real registers
	(since you want performance in the first place)? That
	might make it difficult to have a register VM that runs fast
        on both, say, x86 and MIPS.
	I'd say that a stack-based VM seems a good option if
	you want a portable VM and a simple compiler and code size
	is an issue. 

        The Parrot folks (based on some browsing of the Perl lists) seem
	to opt for register VMs for performance and "easier debugging."