< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page




3205   }
3206 
3207   const Array<Method*>* methods_array = methods();
3208   if (methods()) {
3209     for (int i = 0; i < methods_array->length(); i++) {
3210       Method* method = methods_array->at(i);
3211       if (method) {
3212         sz->_method_count ++;
3213         method->collect_statistics(sz);
3214       }
3215     }
3216   }
3217 }
3218 #endif // INCLUDE_SERVICES
3219 
3220 // Verification
3221 
3222 class VerifyFieldClosure: public OopClosure {
3223  protected:
3224   template <class T> void do_oop_work(T* p) {
3225     oop obj = oopDesc::load_decode_heap_oop(p);
3226     if (!oopDesc::is_oop_or_null(obj)) {
3227       tty->print_cr("Failed: " PTR_FORMAT " -> " PTR_FORMAT, p2i(p), p2i(obj));
3228       Universe::print_on(tty);
3229       guarantee(false, "boom");
3230     }
3231   }
3232  public:
3233   virtual void do_oop(oop* p)       { VerifyFieldClosure::do_oop_work(p); }
3234   virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
3235 };
3236 
3237 void InstanceKlass::verify_on(outputStream* st) {
3238 #ifndef PRODUCT
3239   // Avoid redundant verifies, this really should be in product.
3240   if (_verify_count == Universe::verify_count()) return;
3241   _verify_count = Universe::verify_count();
3242 #endif
3243 
3244   // Verify Klass
3245   Klass::verify_on(st);




3205   }
3206 
3207   const Array<Method*>* methods_array = methods();
3208   if (methods()) {
3209     for (int i = 0; i < methods_array->length(); i++) {
3210       Method* method = methods_array->at(i);
3211       if (method) {
3212         sz->_method_count ++;
3213         method->collect_statistics(sz);
3214       }
3215     }
3216   }
3217 }
3218 #endif // INCLUDE_SERVICES
3219 
3220 // Verification
3221 
3222 class VerifyFieldClosure: public OopClosure {
3223  protected:
3224   template <class T> void do_oop_work(T* p) {
3225     oop obj = RawAccess<>::oop_load(p);
3226     if (!oopDesc::is_oop_or_null(obj)) {
3227       tty->print_cr("Failed: " PTR_FORMAT " -> " PTR_FORMAT, p2i(p), p2i(obj));
3228       Universe::print_on(tty);
3229       guarantee(false, "boom");
3230     }
3231   }
3232  public:
3233   virtual void do_oop(oop* p)       { VerifyFieldClosure::do_oop_work(p); }
3234   virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
3235 };
3236 
3237 void InstanceKlass::verify_on(outputStream* st) {
3238 #ifndef PRODUCT
3239   // Avoid redundant verifies, this really should be in product.
3240   if (_verify_count == Universe::verify_count()) return;
3241   _verify_count = Universe::verify_count();
3242 #endif
3243 
3244   // Verify Klass
3245   Klass::verify_on(st);


< prev index next >