Currently at the RFC stage, Andrew Hughes has separated out the reflection code into VM and general purpose. Here's his post from classpath-patches:
This patch separates out common methods from the reflection VM
interfaces (Field, Constructor, Method) so that they are provided
in Classpath itself, and only native methods now appear in
new VMField, VMMethod and VMConstructor classes in the VM interface.
There is a lot of duplicate code in these classes that is currently
left to the VM to maintain, resulting in large parts of these files
in the VM being verbatim copies of the reference implementation and
dependent on package-private Classpath methods.
and the patch that was the original motivation:
In doing the work on CPStringBuilder, I noticed that many of our VMs
use code verbatim from the
classes when they all
broke in the same way. This suggests we should have a VM separation
here and I propose to add this in this evening.
For now, the patch to make a VM work is fairly trivial. I've attached
ones for CACAO, JikesRVM, JamVM and CACAO.