Evan Phoenix of Rubinius may have cracked the RubyClass code. He has documented all places where it needs to be updated and where it actually differs from the "cref" class in a document I'm attaching to this bug. Basically only evals end up actually needing to track a different RubyClass, which means all the other nonsense of pushing and popping RubyClass may be pure waste.
I started trying to implement this in JRuby, but ran into complications because of
JRUBY-3336, which I discovered while trying to untangle eval logic. So I think in order to get this totally working, we need to at minimum rework the eval logic we have currently and probably fix JRUBY-3336 as well. Given that neither of these is a trivial task and there's a breakage potential, I'm punting on them for now. This probably won't get into 1.2, but it may be a nice bonus perf boost in 1.3.