Trying to work newer indy into JRuby
Charles Oliver Nutter
charles.nutter at sun.com
Mon May 18 02:51:54 PDT 2009
I've read through Fidgety a few times and I think I'm starting to get it.
So the idea is that you would install a MethodHandle into the call site
that knows how to handle the incoming objects and (potentially) re-patch
the call site with a new method?
Is there any guarantee that the code in the MethodHandle will be inlined
through? I may have missed some discussion on this, but I want to be
absolutely clear on this point. If I wire up things exactly as in
Fidgety's "Guard" method handle, will (e.g.) Hotspot inline all the way
through? What are the edge cases?
I may have enough to get this wired now...starting to see where the old
pieces fit into the new structure. Hints still welcome :)
- Charlie
Charles Oliver Nutter wrote:
> Ok, I've been puzzling over the demos for a few hours, and I'm confused.
>
> With the iteration from this fall, where the full set of args were
> available during the bootstrap, I was able to actually inspect the
> receiver object and get information from it. Now I don't see how I can
> do that.
>
> Imagine this case:
>
> * All objects are of type RubyObject
> * The method table is just a hash contained within RubyObject#getMetaClass
>
> When doing a dynamic call against one of those objects, there's now no
> way for me to call getMetaClass on the receiver object to get its method
> table, and no way for me to look up a named method in that table.
>
> I'll keep hunting, but if someone has a hint I'd appreciate it.
>
> What I need is essentially this:
>
> ... bootstrapDynamic(Object receiver, Class caller, String name,
> MethodType type) {
> MethodHandle handle =
> ((RubyClass)receiver).getMetaClass().findMethodHandle(name, type);
> CallSite callSite = new CallSite(caller, name, type);
> callSite.setTarget(handle);
> return callSite;
> }
>
> I just don't see how I can get access to *my* method tables from within
> the bootstrap now, since they don't live on a Class or in a global
> location anywhere. And how would I bootstrap an interpreted method?
>
> - Charlie
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
More information about the mlvm-dev
mailing list