< prev index next >
src/hotspot/share/runtime/threadSMR.hpp
Print this page
rev 47289 : eosterlund, stefank CR - refactor code into threadSMR.cpp and threadSMR.hpp
rev 47290 : eosterlund CR - need more inline fixes.
rev 47291 : eosterlund, stefank CR - more inline and style cleanups
rev 47292 : stefank, coleenp CR - refactor most JavaThreadIterator usage to use JavaThreadIteratorWithHandle.
*** 131,142 ****
return _list->length();
}
};
// This stack allocated JavaThreadIterator is used to walk the
! // specified ThreadsList.
//
class JavaThreadIterator : public StackObj {
ThreadsList * _list;
uint _index;
public:
--- 131,147 ----
return _list->length();
}
};
// This stack allocated JavaThreadIterator is used to walk the
! // specified ThreadsList using the following style:
//
+ // JavaThreadIterator jti(t_list);
+ // for (JavaThread *jt = jti.first(); jt != NULL; jt = jti.next()) {
+ // ...
+ // }
+ //
class JavaThreadIterator : public StackObj {
ThreadsList * _list;
uint _index;
public:
*** 162,168 ****
--- 167,208 ----
return NULL;
}
return _list->thread_at(_index);
}
};
+
+ // This stack allocated ThreadsListHandle and JavaThreadIterator combo
+ // is used to walk the ThreadsList in the included ThreadsListHandle
+ // using the following style:
+ //
+ // for (JavaThreadIteratorWithHandle jtiwh; JavaThread *jt = jtiwh.next(); ) {
+ // ...
+ // }
+ //
+ class JavaThreadIteratorWithHandle : public StackObj {
+ ThreadsListHandle _tlh;
+ uint _index;
+
+ public:
+ JavaThreadIteratorWithHandle() : _tlh(), _index(0) {}
+
+ uint length() const {
+ return _tlh.length();
+ }
+
+ ThreadsList *list() const {
+ return _tlh.list();
+ }
+
+ JavaThread *next() {
+ if (_index >= length()) {
+ return NULL;
+ }
+ return _tlh.list()->thread_at(_index++);
+ }
+
+ void rewind() {
+ _index = 0;
+ }
+ };
#endif // SHARE_VM_RUNTIME_THREADSMR_HPP
< prev index next >