- 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