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