[virtmach] parrot VM?
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."