Thanks.  It will take me a while to understand that code.  Once I do,
maybe I can write a performance test.  I'd like to see a comparison
between invokedynamic with guarded/chained method handles, as you
described, vs calling the dispatch logic the old fashioned way.

Rob

On Aug 5, 3:18 am, Charles Oliver Nutter <head...@headius.com> wrote:
> A simple way to do what you want might be sketched out like this:
>
> * The bootstrap method returns a CallSite + handle for your
> multi-dispatch logic contained in another method.
> * The multi-dispatch logic receives the actual arguments for that first call.
> * Based on those arguments, you build a guarded chain of method
> handles that calls the right target for the incoming types, and falls
> back on the multi-dispatch lookup logic again if new types come in.
>
> From here, you can do various combinations of guards, multiple
> targets, mechanisms for quickly calculating whether the incoming types
> have already been negotiated, and so on.
>
> You want to look at the bootstrap as your way to point future calls
> toward your own specialized logic; the bootstrap does not necessarily
> contain that logic.
>
> There's an example implementation of multi-dispatch 
> here:http://code.google.com/p/jsr292-cookbook/source/browse/trunk/multi-di...
>
> - Charlie
>
>
>
>
>
>
>
> On Sat, Aug 4, 2012 at 11:26 PM, Rob N <rob.nikan...@gmail.com> wrote:
> > Hi,
>
> > I'm trying to learn about invokedynamic and the supporting classes,
> > and I don't yet see how they help implement the dynamically typed
> > language I have in mind. From what I've read so far, when you emit an
> > invokedynamic instruction, you specify a bootstrap method in your
> > language's runtime, but that is only run once, and it must return a
> > MethodHandle for the CallSite.  Lets say I wanted to emit something
> > for a CLOS-like multiple dispatch method (foo x y), that will select
> > an implementation method based on the classes of x and y.  Would I not
> > have to return, from the bootstrap method, a handle to a method that
> > did that dispatch?  So why not just emit an invokevirtual or
> > invokestatic directly to that method?  What is the advantage of
> > invokedynamic here?
>
> > thanks,
> > Rob
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "JVM Languages" group.
> > To post to this group, send email to jvm-languages@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > jvm-languages+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/jvm-languages?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to jvm-languages@googlegroups.com.
To unsubscribe from this group, send email to 
jvm-languages+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en.

Reply via email to