< prev index next >
src/hotspot/share/utilities/concurrentHashTable.inline.hpp
Print this page
*** 261,272 ****
for (Node* next = bucket->first(); next != NULL ; next = next->next()) {
if (pref != NULL) {
Prefetch::read(*pref->value(), 0);
pref = pref->next();
}
! if (next->next() != NULL) {
! Prefetch::read(*next->next()->value(), 0);
}
if (eval_f(next->value())) {
return true;
}
}
--- 261,275 ----
for (Node* next = bucket->first(); next != NULL ; next = next->next()) {
if (pref != NULL) {
Prefetch::read(*pref->value(), 0);
pref = pref->next();
}
! // Read next() Node* once. May be racing with a thread moving the next
! // pointers.
! Node* next_pref = next->next();
! if (next_pref != NULL) {
! Prefetch::read(*next_pref->value(), 0);
}
if (eval_f(next->value())) {
return true;
}
}
< prev index next >