comparison src/share/vm/oops/klass.cpp @ 431:a45484ea312d

6653858: dynamic languages need to be able to load anonymous classes Summary: low-level privileged sun.misc.Unsafe.defineAnonymousClass Reviewed-by: kvn
author jrose
date Wed, 12 Nov 2008 22:33:26 -0800
parents d1605aabd0a1
children 98cb887364d3
comparison
equal deleted inserted replaced
430:4d20a3aaf1ab 431:a45484ea312d
476 f(as_klassOop()); 476 f(as_klassOop());
477 } 477 }
478 478
479 479
480 const char* Klass::external_name() const { 480 const char* Klass::external_name() const {
481 if (oop_is_instance()) {
482 instanceKlass* ik = (instanceKlass*) this;
483 if (ik->is_anonymous()) {
484 assert(AnonymousClasses, "");
485 intptr_t hash = ik->java_mirror()->identity_hash();
486 char hash_buf[40];
487 sprintf(hash_buf, "/" UINTX_FORMAT, (uintx)hash);
488 size_t hash_len = strlen(hash_buf);
489
490 size_t result_len = name()->utf8_length();
491 char* result = NEW_RESOURCE_ARRAY(char, result_len + hash_len + 1);
492 name()->as_klass_external_name(result, (int) result_len + 1);
493 assert(strlen(result) == result_len, "");
494 strcpy(result + result_len, hash_buf);
495 assert(strlen(result) == result_len + hash_len, "");
496 return result;
497 }
498 }
481 return name()->as_klass_external_name(); 499 return name()->as_klass_external_name();
482 } 500 }
483 501
484 502
485 char* Klass::signature_name() const { 503 char* Klass::signature_name() const {