483 fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
484 return NULL;
485 }
486
487
488 klassOop Klass::array_klass_impl(bool or_null, TRAPS) {
489 fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
490 return NULL;
491 }
492
493
494 void Klass::with_array_klasses_do(void f(klassOop k)) {
495 f(as_klassOop());
496 }
497
498
499 const char* Klass::external_name() const {
500 if (oop_is_instance()) {
501 instanceKlass* ik = (instanceKlass*) this;
502 if (ik->is_anonymous()) {
503 assert(AnonymousClasses, "");
504 intptr_t hash = ik->java_mirror()->identity_hash();
505 char hash_buf[40];
506 sprintf(hash_buf, "/" UINTX_FORMAT, (uintx)hash);
507 size_t hash_len = strlen(hash_buf);
508
509 size_t result_len = name()->utf8_length();
510 char* result = NEW_RESOURCE_ARRAY(char, result_len + hash_len + 1);
511 name()->as_klass_external_name(result, (int) result_len + 1);
512 assert(strlen(result) == result_len, "");
513 strcpy(result + result_len, hash_buf);
514 assert(strlen(result) == result_len + hash_len, "");
515 return result;
516 }
517 }
518 if (name() == NULL) return "<unknown>";
519 return name()->as_klass_external_name();
520 }
521
522
523 const char* Klass::signature_name() const {
|
483 fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
484 return NULL;
485 }
486
487
488 klassOop Klass::array_klass_impl(bool or_null, TRAPS) {
489 fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
490 return NULL;
491 }
492
493
494 void Klass::with_array_klasses_do(void f(klassOop k)) {
495 f(as_klassOop());
496 }
497
498
499 const char* Klass::external_name() const {
500 if (oop_is_instance()) {
501 instanceKlass* ik = (instanceKlass*) this;
502 if (ik->is_anonymous()) {
503 assert(EnableInvokeDynamic, "");
504 intptr_t hash = ik->java_mirror()->identity_hash();
505 char hash_buf[40];
506 sprintf(hash_buf, "/" UINTX_FORMAT, (uintx)hash);
507 size_t hash_len = strlen(hash_buf);
508
509 size_t result_len = name()->utf8_length();
510 char* result = NEW_RESOURCE_ARRAY(char, result_len + hash_len + 1);
511 name()->as_klass_external_name(result, (int) result_len + 1);
512 assert(strlen(result) == result_len, "");
513 strcpy(result + result_len, hash_buf);
514 assert(strlen(result) == result_len + hash_len, "");
515 return result;
516 }
517 }
518 if (name() == NULL) return "<unknown>";
519 return name()->as_klass_external_name();
520 }
521
522
523 const char* Klass::signature_name() const {
|