G1's primary closure for iterating over oops to find references into the collection set is registered with the de-virtualization macros (oop_oop_iterate_nv). This functionality depends on the static types being propagated through all the layers, something which is not done currently. Suggested fix is to properly propagate the G1ParPushHeapRSClosure type all the way down to the oop_Iterate call and doing some drive-by cleanups to facilitate this change.