673 if (ko != NULL) { 674 guarantee(ko->is_klass(), "should be klass"); 675 } 676 } 677 678 if (java_mirror() != NULL) { 679 guarantee(java_mirror()->is_oop(), "should be instance"); 680 } 681 } 682 683 void Klass::oop_verify_on(oop obj, outputStream* st) { 684 guarantee(obj->is_oop(), "should be oop"); 685 guarantee(obj->klass()->is_klass(), "klass field is not a klass"); 686 } 687 688 #ifndef PRODUCT 689 690 bool Klass::verify_vtable_index(int i) { 691 if (oop_is_instance()) { 692 int limit = ((InstanceKlass*)this)->vtable_length()/vtableEntry::size(); 693 assert(i >= 0 && i < limit, err_msg("index %d out of bounds %d", i, limit)); 694 } else { 695 assert(oop_is_array(), "Must be"); 696 int limit = ((ArrayKlass*)this)->vtable_length()/vtableEntry::size(); 697 assert(i >= 0 && i < limit, err_msg("index %d out of bounds %d", i, limit)); 698 } 699 return true; 700 } 701 702 bool Klass::verify_itable_index(int i) { 703 assert(oop_is_instance(), ""); 704 int method_count = klassItable::method_count_for_interface(this); 705 assert(i >= 0 && i < method_count, "index out of bounds"); 706 return true; 707 } 708 709 #endif 710 711 /////////////// Unit tests /////////////// 712 713 #ifndef PRODUCT 714 715 class TestKlass { 716 public: 717 static void test_oop_is_instanceClassLoader() { | 673 if (ko != NULL) { 674 guarantee(ko->is_klass(), "should be klass"); 675 } 676 } 677 678 if (java_mirror() != NULL) { 679 guarantee(java_mirror()->is_oop(), "should be instance"); 680 } 681 } 682 683 void Klass::oop_verify_on(oop obj, outputStream* st) { 684 guarantee(obj->is_oop(), "should be oop"); 685 guarantee(obj->klass()->is_klass(), "klass field is not a klass"); 686 } 687 688 #ifndef PRODUCT 689 690 bool Klass::verify_vtable_index(int i) { 691 if (oop_is_instance()) { 692 int limit = ((InstanceKlass*)this)->vtable_length()/vtableEntry::size(); 693 assert(i >= 0 && i < limit, "index %d out of bounds %d", i, limit); 694 } else { 695 assert(oop_is_array(), "Must be"); 696 int limit = ((ArrayKlass*)this)->vtable_length()/vtableEntry::size(); 697 assert(i >= 0 && i < limit, "index %d out of bounds %d", i, limit); 698 } 699 return true; 700 } 701 702 bool Klass::verify_itable_index(int i) { 703 assert(oop_is_instance(), ""); 704 int method_count = klassItable::method_count_for_interface(this); 705 assert(i >= 0 && i < method_count, "index out of bounds"); 706 return true; 707 } 708 709 #endif 710 711 /////////////// Unit tests /////////////// 712 713 #ifndef PRODUCT 714 715 class TestKlass { 716 public: 717 static void test_oop_is_instanceClassLoader() { |