< prev index next >

src/share/vm/gc/shared/cardTableModRefBSForCTRS.hpp

Print this page
rev 10742 : Make fields used in lock-free algorithms volatile

*** 78,88 **** // This is an array, one element per covered region of the card table. // Each entry is itself an array, with one element per chunk in the // 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 CardPtr* CardArr; CardArr* _lowest_non_clean; size_t* _lowest_non_clean_chunk_size; uintptr_t* _lowest_non_clean_base_chunk_index; int* _last_LNC_resizing_collection; --- 78,88 ---- // This is an array, one element per covered region of the card table. // Each entry is itself an array, with one element per chunk in the // 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 volatile jbyte* CardPtr; typedef CardPtr* CardArr; CardArr* _lowest_non_clean; size_t* _lowest_non_clean_chunk_size; uintptr_t* _lowest_non_clean_base_chunk_index; int* _last_LNC_resizing_collection;
*** 91,101 **** // covering "sp", and "lowest_non_clean_base_chunk_index" to the chunk // index of the corresponding to the first element of that array. // 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, uintptr_t& lowest_non_clean_base_chunk_index, size_t& lowest_non_clean_chunk_size); // Returns the number of chunks necessary to cover "mr". size_t chunks_to_cover(MemRegion mr) { --- 91,101 ---- // covering "sp", and "lowest_non_clean_base_chunk_index" to the chunk // index of the corresponding to the first element of that array. // 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, ! volatile jbyte**& lowest_non_clean, uintptr_t& lowest_non_clean_base_chunk_index, size_t& lowest_non_clean_chunk_size); // Returns the number of chunks necessary to cover "mr". size_t chunks_to_cover(MemRegion mr) {
*** 115,136 **** void process_stride(Space* sp, MemRegion used, jint stride, int n_strides, OopsInGenClosure* cl, CardTableRS* ct, ! jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); // Makes sure that chunk boundaries are handled appropriately, by // adjusting the min_done of dcto_cl, and by using a special card-table // value to indicate how min_done should be set. void process_chunk_boundaries(Space* sp, DirtyCardToOopClosure* dcto_cl, MemRegion chunk_mr, MemRegion used, ! jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); }; --- 115,136 ---- void process_stride(Space* sp, MemRegion used, jint stride, int n_strides, OopsInGenClosure* cl, CardTableRS* ct, ! volatile jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); // Makes sure that chunk boundaries are handled appropriately, by // adjusting the min_done of dcto_cl, and by using a special card-table // value to indicate how min_done should be set. void process_chunk_boundaries(Space* sp, DirtyCardToOopClosure* dcto_cl, MemRegion chunk_mr, MemRegion used, ! volatile jbyte** lowest_non_clean, uintptr_t lowest_non_clean_base_chunk_index, size_t lowest_non_clean_chunk_size); };
*** 138,143 **** struct BarrierSet::GetName<CardTableModRefBSForCTRS> { static const BarrierSet::Name value = BarrierSet::CardTableForRS; }; #endif // include guard - --- 138,142 ----
< prev index next >