@@ -53,6 +53,26 @@ ObjArrayKlass* ObjArrayKlass::allocate_klass(ClassLoaderData* loader_data, int n
5353 return new (loader_data, size, THREAD) ObjArrayKlass (n, k, name);
5454}
5555
56+ Symbol* ObjArrayKlass::create_element_klass_array_name (JavaThread* current, Klass* element_klass) {
57+ ResourceMark rm (current);
58+ char * name_str = element_klass->name ()->as_C_string ();
59+ int len = element_klass->name ()->utf8_length ();
60+ char * new_str = NEW_RESOURCE_ARRAY_IN_THREAD (current, char , len + 4 );
61+ int idx = 0 ;
62+ new_str[idx++] = JVM_SIGNATURE_ARRAY;
63+ if (element_klass->is_instance_klass ()) { // it could be an array or simple type
64+ new_str[idx++] = JVM_SIGNATURE_CLASS;
65+ }
66+ memcpy (&new_str[idx], name_str, len * sizeof (char ));
67+ idx += len;
68+ if (element_klass->is_instance_klass ()) {
69+ new_str[idx++] = JVM_SIGNATURE_ENDCLASS;
70+ }
71+ new_str[idx] = ' \0 ' ;
72+ return SymbolTable::new_symbol (new_str);
73+ }
74+
75+
5676ObjArrayKlass* ObjArrayKlass::allocate_objArray_klass (ClassLoaderData* loader_data,
5777 int n, Klass* element_klass, TRAPS) {
5878
@@ -79,25 +99,7 @@ ObjArrayKlass* ObjArrayKlass::allocate_objArray_klass(ClassLoaderData* loader_da
7999 }
80100
81101 // Create type name for klass.
82- Symbol* name = nullptr ;
83- {
84- ResourceMark rm (THREAD);
85- char *name_str = element_klass->name ()->as_C_string ();
86- int len = element_klass->name ()->utf8_length ();
87- char *new_str = NEW_RESOURCE_ARRAY (char , len + 4 );
88- int idx = 0 ;
89- new_str[idx++] = JVM_SIGNATURE_ARRAY;
90- if (element_klass->is_instance_klass ()) { // it could be an array or simple type
91- new_str[idx++] = JVM_SIGNATURE_CLASS;
92- }
93- memcpy (&new_str[idx], name_str, len * sizeof (char ));
94- idx += len;
95- if (element_klass->is_instance_klass ()) {
96- new_str[idx++] = JVM_SIGNATURE_ENDCLASS;
97- }
98- new_str[idx++] = ' \0 ' ;
99- name = SymbolTable::new_symbol (new_str);
100- }
102+ Symbol* name = create_element_klass_array_name (THREAD, element_klass);
101103
102104 // Initialize instance variables
103105 ObjArrayKlass* oak = ObjArrayKlass::allocate_klass (loader_data, n, element_klass, name, CHECK_NULL);
0 commit comments