460 st->cr(); 461 #endif //PRODUCT 462 } 463 464 void ObjArrayKlass::print_value_on(outputStream* st) const { 465 assert(is_klass(), "must be klass"); 466 467 element_klass()->print_value_on(st); 468 st->print("[]"); 469 } 470 471 #ifndef PRODUCT 472 473 void ObjArrayKlass::oop_print_on(oop obj, outputStream* st) { 474 ArrayKlass::oop_print_on(obj, st); 475 assert(obj->is_objArray(), "must be objArray"); 476 objArrayOop oa = objArrayOop(obj); 477 int print_len = MIN2((intx) oa->length(), MaxElementPrintSize); 478 for(int index = 0; index < print_len; index++) { 479 st->print(" - %3d : ", index); 480 oa->obj_at(index)->print_value_on(st); 481 st->cr(); 482 } 483 int remaining = oa->length() - print_len; 484 if (remaining > 0) { 485 st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining); 486 } 487 } 488 489 #endif //PRODUCT 490 491 void ObjArrayKlass::oop_print_value_on(oop obj, outputStream* st) { 492 assert(obj->is_objArray(), "must be objArray"); 493 st->print("a "); 494 element_klass()->print_value_on(st); 495 int len = objArrayOop(obj)->length(); 496 st->print("[%d] ", len); 497 obj->print_address_on(st); 498 } 499 500 const char* ObjArrayKlass::internal_name() const { 501 return external_name(); 502 } 503 504 505 // Verification 506 507 void ObjArrayKlass::verify_on(outputStream* st) { 508 ArrayKlass::verify_on(st); 509 guarantee(element_klass()->is_klass(), "should be klass"); 510 guarantee(bottom_klass()->is_klass(), "should be klass"); 511 Klass* bk = bottom_klass(); 512 guarantee(bk->is_instance_klass() || bk->is_typeArray_klass(), "invalid bottom klass"); 513 } 514 515 void ObjArrayKlass::oop_verify_on(oop obj, outputStream* st) { 516 ArrayKlass::oop_verify_on(obj, st); 517 guarantee(obj->is_objArray(), "must be objArray"); | 460 st->cr(); 461 #endif //PRODUCT 462 } 463 464 void ObjArrayKlass::print_value_on(outputStream* st) const { 465 assert(is_klass(), "must be klass"); 466 467 element_klass()->print_value_on(st); 468 st->print("[]"); 469 } 470 471 #ifndef PRODUCT 472 473 void ObjArrayKlass::oop_print_on(oop obj, outputStream* st) { 474 ArrayKlass::oop_print_on(obj, st); 475 assert(obj->is_objArray(), "must be objArray"); 476 objArrayOop oa = objArrayOop(obj); 477 int print_len = MIN2((intx) oa->length(), MaxElementPrintSize); 478 for(int index = 0; index < print_len; index++) { 479 st->print(" - %3d : ", index); 480 if (oa->obj_at(index) != NULL) { 481 oa->obj_at(index)->print_value_on(st); 482 st->cr(); 483 } else { 484 st->print_cr("NULL"); 485 } 486 } 487 int remaining = oa->length() - print_len; 488 if (remaining > 0) { 489 st->print_cr(" - <%d more elements, increase MaxElementPrintSize to print>", remaining); 490 } 491 } 492 493 #endif //PRODUCT 494 495 void ObjArrayKlass::oop_print_value_on(oop obj, outputStream* st) { 496 assert(obj->is_objArray(), "must be objArray"); 497 st->print("a "); 498 element_klass()->print_value_on(st); 499 int len = objArrayOop(obj)->length(); 500 st->print("[%d] ", len); 501 if (obj != NULL) { 502 obj->print_address_on(st); 503 } else { 504 st->print_cr("NULL"); 505 } 506 } 507 508 const char* ObjArrayKlass::internal_name() const { 509 return external_name(); 510 } 511 512 513 // Verification 514 515 void ObjArrayKlass::verify_on(outputStream* st) { 516 ArrayKlass::verify_on(st); 517 guarantee(element_klass()->is_klass(), "should be klass"); 518 guarantee(bottom_klass()->is_klass(), "should be klass"); 519 Klass* bk = bottom_klass(); 520 guarantee(bk->is_instance_klass() || bk->is_typeArray_klass(), "invalid bottom klass"); 521 } 522 523 void ObjArrayKlass::oop_verify_on(oop obj, outputStream* st) { 524 ArrayKlass::oop_verify_on(obj, st); 525 guarantee(obj->is_objArray(), "must be objArray"); |