664 class LookForRefInGenClosure : public OopsInGenClosure { |
664 class LookForRefInGenClosure : public OopsInGenClosure { |
665 public: |
665 public: |
666 oop target; |
666 oop target; |
667 void do_oop(oop* o) { |
667 void do_oop(oop* o) { |
668 if (o != NULL && *o == target) { |
668 if (o != NULL && *o == target) { |
669 tty->print_cr("0x%08x", o); |
669 tty->print_cr(INTPTR_FORMAT, o); |
670 } |
670 } |
671 } |
671 } |
672 void do_oop(narrowOop* o) { ShouldNotReachHere(); } |
672 void do_oop(narrowOop* o) { ShouldNotReachHere(); } |
673 }; |
673 }; |
674 |
674 |
683 } |
683 } |
684 }; |
684 }; |
685 |
685 |
686 |
686 |
687 static void findref(intptr_t x) { |
687 static void findref(intptr_t x) { |
688 GenCollectedHeap *gch = GenCollectedHeap::heap(); |
688 CollectedHeap *ch = Universe::heap(); |
689 LookForRefInGenClosure lookFor; |
689 LookForRefInGenClosure lookFor; |
690 lookFor.target = (oop) x; |
690 lookFor.target = (oop) x; |
691 LookForRefInObjectClosure look_in_object((oop) x); |
691 LookForRefInObjectClosure look_in_object((oop) x); |
692 |
692 |
693 tty->print_cr("Searching heap:"); |
693 tty->print_cr("Searching heap:"); |
694 gch->object_iterate(&look_in_object); |
694 ch->object_iterate(&look_in_object); |
695 |
695 |
696 tty->print_cr("Searching strong roots:"); |
696 tty->print_cr("Searching strong roots:"); |
697 Universe::oops_do(&lookFor, false); |
697 Universe::oops_do(&lookFor, false); |
698 JNIHandles::oops_do(&lookFor); // Global (strong) JNI handles |
698 JNIHandles::oops_do(&lookFor); // Global (strong) JNI handles |
699 Threads::oops_do(&lookFor); |
699 Threads::oops_do(&lookFor); |