src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp
changeset 59249 29b0d0b61615
parent 59247 56bf71d64d51
child 59290 97d13893ec3c
equal deleted inserted replaced
59248:e92153ed8bdc 59249:29b0d0b61615
    51     : _cht(cht), _next_to_claim(0), _task_size_log2(DEFAULT_TASK_SIZE_LOG2),
    51     : _cht(cht), _next_to_claim(0), _task_size_log2(DEFAULT_TASK_SIZE_LOG2),
    52     _stop_task(0), _size_log2(0), _is_mt(is_mt) {}
    52     _stop_task(0), _size_log2(0), _is_mt(is_mt) {}
    53 
    53 
    54   // Returns true if you succeeded to claim the range start -> (stop-1).
    54   // Returns true if you succeeded to claim the range start -> (stop-1).
    55   bool claim(size_t* start, size_t* stop) {
    55   bool claim(size_t* start, size_t* stop) {
    56     size_t claimed = Atomic::add((size_t)1, &_next_to_claim) - 1;
    56     size_t claimed = Atomic::add(&_next_to_claim, (size_t)1) - 1;
    57     if (claimed >= _stop_task) {
    57     if (claimed >= _stop_task) {
    58       return false;
    58       return false;
    59     }
    59     }
    60     *start = claimed * (((size_t)1) << _task_size_log2);
    60     *start = claimed * (((size_t)1) << _task_size_log2);
    61     *stop  = ((*start) + (((size_t)1) << _task_size_log2));
    61     *stop  = ((*start) + (((size_t)1) << _task_size_log2));