When we enqueue dirty cards on the update buffers for processing by the concurrent refinement threads, it is possible to enqueue cards on the perm gen. Given that we don't generate RSet entries for those, the concurrent refinement process just drops them. It would have been nice if we could filter them out earlier and maybe enqueue fewer update buffers.
I would guess that doing this filtering in the JITed barriers might be counter-produtive, as it will make the barriers a bit more expensive and maybe the JITed barriers do not update that many perm gen objedcts anyway. However, it might be worthwhile to do the filtering in the C++ barriers that are explicitly called by the JVM code. Those seem to be called during class loading and should update perm gen objects more often than the JITed barriers.
This is not a huge priority, given that the perm gen will be going away soon and this issue will disappear. But we might get some short-term benefit out of this, given that the patch should be very small and straightforward (most likely an extra if-statement in the write barrier).