< prev index next >

src/hotspot/share/gc/shared/oopStorageParState.hpp

v2

*** 35,48 **** // // Iteration involves the _active_array (an ActiveArray), which contains all // of the blocks owned by a storage object. // // A concurrent ParState increments the associated storage's ! // _concurrent_iteration_active count when the state is constructed, and // decrements it when the state is destroyed. These assignments are made with // _active_mutex locked. Meanwhile, empty block deletion is not done while ! // _concurrent_iteration_active is non-zero. The counter check and the dependent // removal of a block from the _active_array is performed with _active_mutex // locked. This prevents concurrent iteration and empty block deletion from // interfering with with each other. // // Both allocate() and delete_empty_blocks_concurrent() lock the --- 35,48 ---- // // Iteration involves the _active_array (an ActiveArray), which contains all // of the blocks owned by a storage object. // // A concurrent ParState increments the associated storage's ! // _concurrent_iteration_count when the state is constructed, and // decrements it when the state is destroyed. These assignments are made with // _active_mutex locked. Meanwhile, empty block deletion is not done while ! // _concurrent_iteration_count is non-zero. The counter check and the dependent // removal of a block from the _active_array is performed with _active_mutex // locked. This prevents concurrent iteration and empty block deletion from // interfering with with each other. // // Both allocate() and delete_empty_blocks_concurrent() lock the ***************
*** 143,153 **** BasicParState(const BasicParState&); BasicParState& operator=(const BasicParState&); struct IterationData; ! void update_iteration_state(int value); bool claim_next_segment(IterationData* data); bool finish_iteration(const IterationData* data) const; // Wrapper for iteration handler; ignore handler result and return true. template<typename F> class AlwaysTrueFn; --- 143,153 ---- BasicParState(const BasicParState&); BasicParState& operator=(const BasicParState&); struct IterationData; ! void update_concurrent_iteration_count(int value); bool claim_next_segment(IterationData* data); bool finish_iteration(const IterationData* data) const; // Wrapper for iteration handler; ignore handler result and return true. template<typename F> class AlwaysTrueFn;
< prev index next >