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.