equal
deleted
inserted
replaced
31 #include "memory/iterator.hpp" |
31 #include "memory/iterator.hpp" |
32 #include "oops/klass.hpp" |
32 #include "oops/klass.hpp" |
33 #include "oops/markOop.hpp" |
33 #include "oops/markOop.hpp" |
34 #include "oops/oop.hpp" |
34 #include "oops/oop.hpp" |
35 #include "prims/jvmtiThreadState.hpp" |
35 #include "prims/jvmtiThreadState.hpp" |
36 #include "prims/privilegedStack.hpp" |
|
37 #include "runtime/frame.inline.hpp" |
36 #include "runtime/frame.inline.hpp" |
38 #include "runtime/mutexLocker.hpp" |
37 #include "runtime/mutexLocker.hpp" |
39 #include "runtime/threadSMR.inline.hpp" |
38 #include "runtime/threadSMR.inline.hpp" |
40 #include "runtime/vframe_hp.hpp" |
39 #include "runtime/vframe_hp.hpp" |
41 #include "services/management.hpp" |
40 #include "services/management.hpp" |
320 assert(!complete(), "invariant"); |
319 assert(!complete(), "invariant"); |
321 |
320 |
322 ReferenceLocateClosure rcl(_callback, OldObjectRoot::_threads, OldObjectRoot::_stack_variable, jt); |
321 ReferenceLocateClosure rcl(_callback, OldObjectRoot::_threads, OldObjectRoot::_stack_variable, jt); |
323 |
322 |
324 if (jt->has_last_Java_frame()) { |
323 if (jt->has_last_Java_frame()) { |
325 PrivilegedElement* const pelem = jt->privileged_stack_top(); |
|
326 if (pelem != NULL) { |
|
327 pelem->oops_do(&rcl); |
|
328 if (rcl.complete()) { |
|
329 return true; |
|
330 } |
|
331 } |
|
332 |
|
333 // traverse the registered growable array gc_array |
324 // traverse the registered growable array gc_array |
334 // can't do this as it is not reachable from outside |
325 // can't do this as it is not reachable from outside |
335 |
326 |
336 // Traverse the monitor chunks |
327 // Traverse the monitor chunks |
337 MonitorChunk* chunk = jt->monitor_chunks(); |
328 MonitorChunk* chunk = jt->monitor_chunks(); |