CardTableRS (in cardTableRS.hpp/cpp) still contains code referring to PermGen and this code also complicates further cleanups of the card tables. Examples include (from cardTableRS.hpp):
// These are for parallel collection.
// There are three P (parallel) youngergen card values. In general, this
// needs to be more than the number of generations (including the perm
// gen) that might have younger_refs_do invoked on them separately. So
// if we add more gens, we have to add more values.
...
// An array that contains, for each generation, the card table value last
// used as the current value for a younger_refs_do iteration of that
// portion of the table. (The perm gen is index 0; other gens are at
// their level plus 1. They youngest gen is in the table, but will
// always have the value "clean_card".)