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