104 ResourceMark rm(THREAD); |
104 ResourceMark rm(THREAD); |
105 char *name_str = element_klass->name()->as_C_string(); |
105 char *name_str = element_klass->name()->as_C_string(); |
106 int len = element_klass->name()->utf8_length(); |
106 int len = element_klass->name()->utf8_length(); |
107 char *new_str = NEW_RESOURCE_ARRAY(char, len + 4); |
107 char *new_str = NEW_RESOURCE_ARRAY(char, len + 4); |
108 int idx = 0; |
108 int idx = 0; |
109 new_str[idx++] = '['; |
109 new_str[idx++] = JVM_SIGNATURE_ARRAY; |
110 if (element_klass->is_instance_klass()) { // it could be an array or simple type |
110 if (element_klass->is_instance_klass()) { // it could be an array or simple type |
111 new_str[idx++] = 'L'; |
111 new_str[idx++] = JVM_SIGNATURE_CLASS; |
112 } |
112 } |
113 memcpy(&new_str[idx], name_str, len * sizeof(char)); |
113 memcpy(&new_str[idx], name_str, len * sizeof(char)); |
114 idx += len; |
114 idx += len; |
115 if (element_klass->is_instance_klass()) { |
115 if (element_klass->is_instance_klass()) { |
116 new_str[idx++] = ';'; |
116 new_str[idx++] = JVM_SIGNATURE_ENDCLASS; |
117 } |
117 } |
118 new_str[idx++] = '\0'; |
118 new_str[idx++] = '\0'; |
119 name = SymbolTable::new_permanent_symbol(new_str); |
119 name = SymbolTable::new_permanent_symbol(new_str); |
120 if (element_klass->is_instance_klass()) { |
120 if (element_klass->is_instance_klass()) { |
121 InstanceKlass* ik = InstanceKlass::cast(element_klass); |
121 InstanceKlass* ik = InstanceKlass::cast(element_klass); |