Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/thread.cpp @ 3908:7588156f5cf9
7051798: SA-JDI: NPE in Frame.addressOfStackSlot(Frame.java:244)
Reviewed-by: kvn
author | never |
---|---|
date | Mon, 05 Sep 2011 17:09:05 -0700 |
parents | c124e2e7463e |
children | e6b1331a51d2 |
comparison
equal
deleted
inserted
replaced
3907:7b5c767f229c | 3908:7588156f5cf9 |
---|---|
2857 fst.current()->print_value_on(tty,this); | 2857 fst.current()->print_value_on(tty,this); |
2858 tty->cr(); | 2858 tty->cr(); |
2859 } | 2859 } |
2860 } | 2860 } |
2861 | 2861 |
2862 class PrintAndVerifyOopClosure: public OopClosure { | |
2863 protected: | |
2864 template <class T> inline void do_oop_work(T* p) { | |
2865 oop obj = oopDesc::load_decode_heap_oop(p); | |
2866 if (obj == NULL) return; | |
2867 tty->print(INTPTR_FORMAT ": ", p); | |
2868 if (obj->is_oop_or_null()) { | |
2869 if (obj->is_objArray()) { | |
2870 tty->print_cr("valid objArray: " INTPTR_FORMAT, (oopDesc*) obj); | |
2871 } else { | |
2872 obj->print(); | |
2873 } | |
2874 } else { | |
2875 tty->print_cr("invalid oop: " INTPTR_FORMAT, (oopDesc*) obj); | |
2876 } | |
2877 tty->cr(); | |
2878 } | |
2879 public: | |
2880 virtual void do_oop(oop* p) { do_oop_work(p); } | |
2881 virtual void do_oop(narrowOop* p) { do_oop_work(p); } | |
2882 }; | |
2883 | |
2884 | |
2885 static void oops_print(frame* f, const RegisterMap *map) { | |
2886 PrintAndVerifyOopClosure print; | |
2887 f->print_value(); | |
2888 f->oops_do(&print, NULL, (RegisterMap*)map); | |
2889 } | |
2890 | |
2891 // Print our all the locations that contain oops and whether they are | |
2892 // valid or not. This useful when trying to find the oldest frame | |
2893 // where an oop has gone bad since the frame walk is from youngest to | |
2894 // oldest. | |
2895 void JavaThread::trace_oops() { | |
2896 tty->print_cr("[Trace oops]"); | |
2897 frames_do(oops_print); | |
2898 } | |
2899 | |
2862 | 2900 |
2863 #ifdef ASSERT | 2901 #ifdef ASSERT |
2864 // Print or validate the layout of stack frames | 2902 // Print or validate the layout of stack frames |
2865 void JavaThread::print_frame_layout(int depth, bool validate_only) { | 2903 void JavaThread::print_frame_layout(int depth, bool validate_only) { |
2866 ResourceMark rm; | 2904 ResourceMark rm; |