8182397: Race in field updates when creating ArrayKlasses can lead to crash

Update array_klass field in component mirror after klass.java_mirror field for concurrent readers in compiled code

Reviewed-by: aph, kbarrett
This commit is contained in:
Coleen Phillimore 2017-07-24 17:46:06 -04:00
parent fe6e4eb1e0
commit fd08aa9cef
5 changed files with 108 additions and 16 deletions

View file

@ -446,6 +446,10 @@ void oopDesc::obj_field_put_volatile(int offset, oop value) {
Metadata* oopDesc::metadata_field(int offset) const { return *metadata_field_addr(offset); }
void oopDesc::metadata_field_put(int offset, Metadata* value) { *metadata_field_addr(offset) = value; }
void oopDesc::release_metadata_field_put(int offset, Metadata* value) {
OrderAccess::release_store_ptr(metadata_field_addr(offset), value);
}
jbyte oopDesc::byte_field(int offset) const { return (jbyte) *byte_field_addr(offset); }
void oopDesc::byte_field_put(int offset, jbyte contents) { *byte_field_addr(offset) = (jint) contents; }