< prev index next >

src/share/vm/oops/instanceKlass.cpp

Print this page




3064   if (methods()) {
3065     for (int i = 0; i < methods_array->length(); i++) {
3066       Method* method = methods_array->at(i);
3067       if (method) {
3068         sz->_method_count ++;
3069         method->collect_statistics(sz);
3070       }
3071     }
3072   }
3073 }
3074 #endif // INCLUDE_SERVICES
3075 
3076 // Verification
3077 
3078 class VerifyFieldClosure: public OopClosure {
3079  protected:
3080   template <class T> void do_oop_work(T* p) {
3081     oop obj = oopDesc::load_decode_heap_oop(p);
3082     if (!obj->is_oop_or_null()) {
3083       tty->print_cr("Failed: " PTR_FORMAT " -> " PTR_FORMAT, p2i(p), p2i(obj));
3084       Universe::print();
3085       guarantee(false, "boom");
3086     }
3087   }
3088  public:
3089   virtual void do_oop(oop* p)       { VerifyFieldClosure::do_oop_work(p); }
3090   virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
3091 };
3092 
3093 void InstanceKlass::verify_on(outputStream* st) {
3094 #ifndef PRODUCT
3095   // Avoid redundant verifies, this really should be in product.
3096   if (_verify_count == Universe::verify_count()) return;
3097   _verify_count = Universe::verify_count();
3098 #endif
3099 
3100   // Verify Klass
3101   Klass::verify_on(st);
3102 
3103   // Verify that klass is present in ClassLoaderData
3104   guarantee(class_loader_data()->contains_klass(this),




3064   if (methods()) {
3065     for (int i = 0; i < methods_array->length(); i++) {
3066       Method* method = methods_array->at(i);
3067       if (method) {
3068         sz->_method_count ++;
3069         method->collect_statistics(sz);
3070       }
3071     }
3072   }
3073 }
3074 #endif // INCLUDE_SERVICES
3075 
3076 // Verification
3077 
3078 class VerifyFieldClosure: public OopClosure {
3079  protected:
3080   template <class T> void do_oop_work(T* p) {
3081     oop obj = oopDesc::load_decode_heap_oop(p);
3082     if (!obj->is_oop_or_null()) {
3083       tty->print_cr("Failed: " PTR_FORMAT " -> " PTR_FORMAT, p2i(p), p2i(obj));
3084       Universe::print_on(tty);
3085       guarantee(false, "boom");
3086     }
3087   }
3088  public:
3089   virtual void do_oop(oop* p)       { VerifyFieldClosure::do_oop_work(p); }
3090   virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
3091 };
3092 
3093 void InstanceKlass::verify_on(outputStream* st) {
3094 #ifndef PRODUCT
3095   // Avoid redundant verifies, this really should be in product.
3096   if (_verify_count == Universe::verify_count()) return;
3097   _verify_count = Universe::verify_count();
3098 #endif
3099 
3100   // Verify Klass
3101   Klass::verify_on(st);
3102 
3103   // Verify that klass is present in ClassLoaderData
3104   guarantee(class_loader_data()->contains_klass(this),


< prev index next >