- Classloader-based runtime separation; instantiating a JRuby instance instantiates a new classloader and all of JRuby runs under that. This would isolate JRuby instances and allow access to the runtime through getClass().getClassLoader().getRuntime() always rather than having to have a Ruby metaclass around. This in turn would make it possible to do things like normal Java serialization, instantiable Ruby types without a runtime passed in, and more. We need to revisit this and try to make it happen.

- Profile-based compiler optimizations. Given an interpreted call site, we should be able to profile what methods are *actually* being called. If at compile time we can determine a call site is monomorphic, we can emit a *direct* call to the target method, with a guard to fall back on a regular dynamic call site. This could have the effect of skipping dynamic invocation and call sites *entirely* for a very large subset of calls.

- Profiling and method annotation-based frame optimization. Given the above profiling, we can also start to optimize whether frames are initialized for a given method. This would represent a performance boost I've seen as much as double fib() and similar benchmarks. The pieces for this are nearly all in place, so I think we're very close to making this happen.

We really need to solve the cumbersomeness of having to pass runtimes around and also start taking advantage of information we can gather at interpretation time.



- Charlie

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to