JRuby success!
Martin C. Martin
martin at martincmartin.com
Wed May 27 14:47:05 PDT 2009
Congrats to JRuby and the invokedynamic team!
Charles Oliver Nutter wrote:
> I have managed to get all the normal JRuby call paths wired up and was
> able to start up jirb (REPL) in force-compiled mode. This means that all
> normal calls are going through indy and working well enough to boot a
> fairly complicated app!
>
> The changes have been pushed to the invokedynamic jruby branch on Kenai.
> At the moment there's a lot that can be improved, especially since
> there's a lot of extra logic in the target and fallback methods that
> would ideally be stitched together primitive method handles rather than
> having this generic shim right in the middle of the call path. But it
> should be at least as fast as the original call site logic and there's
> obviously a lot of room for improvement now.
>
> The bulk of the code can be seen here:
>
> http://kenai.com/projects/jruby/sources/main/content/src/org/jruby/runtime/invokedynamic/InvokeDynamicSupport.java?rev=invokedynamic
>
> The major additions are the try/catch/finally logic for non-local flow
> control and method_missing logic.
>
> I think method_missing logic could be wired up as a second
> guard_with_test that checks visibility. So the fallback path would
> essentially stitch together logic to query for the method, check whether
> it's a method_missing scenario, and then call and cache either the
> method itself or method_missing.
>
> The exception-handling logic I'm not sure about. This seems to be a
> possible gap in primitive method handles: an exception-handling method
> handle that can wrap another handle with additional logic. I'm not sure
> exactly how it would manifest itself in the API.
>
> Anyway, things are looking pretty good. I will probably play with this a
> bit more to see if I can do a better decomposition of the call paths,
> but it should be usable right now.
>
> - 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