792 name->increment_refcount(); 793 } else { 794 Klass* k = as_Klass(java_class); 795 if (!k->oop_is_instance()) { 796 name = k->name(); 797 name->increment_refcount(); 798 } else { 799 ResourceMark rm; 800 const char* sigstr = k->signature_name(); 801 int siglen = (int) strlen(sigstr); 802 if (!intern_if_not_found) { 803 name = SymbolTable::probe(sigstr, siglen); 804 } else { 805 name = SymbolTable::new_symbol(sigstr, siglen, THREAD); 806 } 807 } 808 } 809 return name; 810 } 811 812 813 Klass* java_lang_Class::array_klass(oop java_class) { 814 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 815 assert(k == NULL || k->is_klass() && k->oop_is_array(), "should be array klass"); 816 return k; 817 } 818 819 820 void java_lang_Class::set_array_klass(oop java_class, Klass* klass) { 821 assert(klass->is_klass() && klass->oop_is_array(), "should be array klass"); 822 java_class->metadata_field_put(_array_klass_offset, klass); 823 } 824 825 826 bool java_lang_Class::is_primitive(oop java_class) { 827 // should assert: 828 //assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 829 bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL); 830 831 #ifdef ASSERT | 792 name->increment_refcount(); 793 } else { 794 Klass* k = as_Klass(java_class); 795 if (!k->oop_is_instance()) { 796 name = k->name(); 797 name->increment_refcount(); 798 } else { 799 ResourceMark rm; 800 const char* sigstr = k->signature_name(); 801 int siglen = (int) strlen(sigstr); 802 if (!intern_if_not_found) { 803 name = SymbolTable::probe(sigstr, siglen); 804 } else { 805 name = SymbolTable::new_symbol(sigstr, siglen, THREAD); 806 } 807 } 808 } 809 return name; 810 } 811 812 // Returns the Java name for this Java mirror (Resource allocated) 813 // See Klass::external_name(). 814 // For primitive type Java mirrors, its type name is returned. 815 const char* java_lang_Class::as_external_name(oop java_class) { 816 assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 817 const char* name = NULL; 818 if (is_primitive(java_class)) { 819 name = type2name(primitive_type(java_class)); 820 } else { 821 name = as_Klass(java_class)->external_name(); 822 } 823 if (name == NULL) { 824 name = "<null>"; 825 } 826 return name; 827 } 828 829 Klass* java_lang_Class::array_klass(oop java_class) { 830 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 831 assert(k == NULL || k->is_klass() && k->oop_is_array(), "should be array klass"); 832 return k; 833 } 834 835 836 void java_lang_Class::set_array_klass(oop java_class, Klass* klass) { 837 assert(klass->is_klass() && klass->oop_is_array(), "should be array klass"); 838 java_class->metadata_field_put(_array_klass_offset, klass); 839 } 840 841 842 bool java_lang_Class::is_primitive(oop java_class) { 843 // should assert: 844 //assert(java_lang_Class::is_instance(java_class), "must be a Class object"); 845 bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL); 846 847 #ifdef ASSERT |