--- old/src/share/vm/gc/shared/cardTableModRefBSForCTRS.hpp 2016-04-06 17:17:34.694383789 +0200 +++ new/src/share/vm/gc/shared/cardTableModRefBSForCTRS.hpp 2016-04-06 17:17:34.590383787 +0200 @@ -80,7 +80,7 @@ // covered region. Each entry of these arrays is the lowest non-clean // card of the corresponding chunk containing part of an object from the // previous chunk, or else NULL. - typedef jbyte* CardPtr; + typedef volatile jbyte* CardPtr; typedef CardPtr* CardArr; CardArr* _lowest_non_clean; size_t* _lowest_non_clean_chunk_size; @@ -93,7 +93,7 @@ // Ensures that these arrays are of sufficient size, allocating if necessary. // May be called by several threads concurrently. void get_LNC_array_for_space(Space* sp, - jbyte**& lowest_non_clean, + volatile jbyte**& lowest_non_clean, uintptr_t& lowest_non_clean_base_chunk_index, size_t& lowest_non_clean_chunk_size); @@ -117,7 +117,7 @@ jint stride, int n_strides, OopsInGenClosure* cl, CardTableRS* ct, - jbyte** lowest_non_clean, + volatile jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); @@ -128,7 +128,7 @@ DirtyCardToOopClosure* dcto_cl, MemRegion chunk_mr, MemRegion used, - jbyte** lowest_non_clean, + volatile jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); @@ -140,4 +140,3 @@ }; #endif // include guard -