< 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 >