Sorry, I wasn't clear.  I meant why would it not be possible to
JIT-compile from the AST (rather than from bytecode)?

The technique of Polymorphic Inlince Caches (aka PICs) can be used to
optimise method dispatch in dynamic, JIT-compiled languages by virtue of
the fact that a single message send is usually directed at objects of
just one type, or one of a small number of types, rather than at objects
of any type that can process the message.  More info at:
http://www.cs.ucsb.edu/labs/oocsb/papers/pics.html 

Cheers,
	Nat.


On Wed, 2002-10-16 at 17:03, Justin Johnson wrote:
> 
> The real problem is that Ruby is so dynamic.  This is great for programmers
> but gives compilers a hard time.
> 
> Naive example:
> 
>     (1 + 2)
> 
> Most languages wouldn't have any problem recognizing this as a number
> addition and generating quick instructions.  Any good compiler would
> precompute this as 3 and use the result in the compiled code directly.
> 
> In Ruby, the '+' is a method call on a number which could be overridden at
> anytime, any number of times.  It's impossible for a compiler to predict
> just what '+' is going to do from one moment to the next.  JIT has a better
> chance.
> 
> You can generate bytecode but it's not going to give that much of a speed
> increase, IMHO, because it would still have to be doing dynamic method
> lookup etc.
> 
> --
> Justin Johnson
> 
> "Nat Pryce" <nat.pryce / b13media.com> wrote in message
> news:1034769293.1864.2.camel / ballsup...
> > On Wed, 2002-10-16 at 02:21, Phil Tomson wrote:
> > > In article <slrnaqpbo0.73l.whitton / grub.atlantic.net>,
> > > Travis Whitton  <whitton / atlantic.net> wrote:
> > > >There's an interesting article on IBM developerWorks about a new
> program
> > > >called Psyco, which hooks into the guts of Python's interpreter and
> does
> > > >a kind of just-in-time compilation substituting bytecode for native
> machine
> > > >code. Apparently, this allows python to achieve near C like speeds
> without
> > > >having to rewrite any code, and it sounds like a really cool project.
> > > >Unfortunately, I don't care much for Python, but I do love Ruby. This
> leads
> > > >me to the question of whether there are any similar programs available
> for
> > > >Ruby. If not, would such a project be possible?
> > >
> > > It's an interesting idea, but first we need a bytecode interpreter.  As
> it
> > > stands now, Ruby is interpreted by walking an AST.
> >
> > Why would it not be possible to compile the AST to native code?  That's
> > what a traditional compiler does, after all.
> >
> > Cheers,
> > Nat.
> >
> > --
> > Dr. Nathaniel Pryce, Technical Director, B13media Ltd.
> > Studio 3a, 22-24 Highbury Grove, London N5 2EA, UK
> > http://www.b13media.com
> >
> >
> >
> 
> 
> 
-- 
Dr. Nathaniel Pryce, Technical Director, B13media Ltd.
Studio 3a, 22-24 Highbury Grove, London N5 2EA, UK
http://www.b13media.com