RFR: Klass is_<x>Array() fix, and support for value type ref fields with Parallel GC

David Simms david.simms at oracle.com
Thu Mar 16 12:46:46 UTC 2017

Hi all,


     As follow-up to "Value Types with ref fields, GC: Serial and G1" 
change earlier today, I realized only a few simple changes were required 
for basic Parallel GC support. Main outage: 
ValueArrayKlass::oop_pc_follow_contents() is not parallel as is the case 
for ObjArrayKlass.

     The main change is actually a bug fix, whereby Klass layout helper 
was always set "is_typeArray()" to true for valueArrayKlass. Previous to 
adding reference fields to value type this wasn't much of a problem. 
There is a fair amount of GC code which checks "is_typeArray()" then 
"nothing to do here".

     One could argue that value arrays, could use the obj array bit for 
rather than testing "valueKlass::contains_oops()", but for clarity, I 
simply added another discrete array tag bit. Arrays are one of three 
things, but not two of three as was the case (value and type array).


/David Simms

More information about the valhalla-dev mailing list