src/hotspot/share/oops/symbol.cpp
changeset 58722 cba8afa5cfed
parent 58015 dd84de796f2c
child 59252 623722a6aeb9
equal deleted inserted replaced
58720:ae0af9fb3dbb 58722:cba8afa5cfed
   199 const char* Symbol::as_klass_external_name() const {
   199 const char* Symbol::as_klass_external_name() const {
   200   char* str    = as_C_string();
   200   char* str    = as_C_string();
   201   int   length = (int)strlen(str);
   201   int   length = (int)strlen(str);
   202   // Turn all '/'s into '.'s (also for array klasses)
   202   // Turn all '/'s into '.'s (also for array klasses)
   203   for (int index = 0; index < length; index++) {
   203   for (int index = 0; index < length; index++) {
   204     if (str[index] == '/') {
   204     if (str[index] == JVM_SIGNATURE_SLASH) {
   205       str[index] = '.';
   205       str[index] = JVM_SIGNATURE_DOT;
   206     }
   206     }
   207   }
   207   }
   208   return str;
   208   return str;
   209 }
   209 }
   210 
   210 
   211 static void print_class(outputStream *os, char *class_str, int len) {
   211 static void print_class(outputStream *os, char *class_str, int len) {
   212   for (int i = 0; i < len; ++i) {
   212   for (int i = 0; i < len; ++i) {
   213     if (class_str[i] == '/') {
   213     if (class_str[i] == JVM_SIGNATURE_SLASH) {
   214       os->put('.');
   214       os->put(JVM_SIGNATURE_DOT);
   215     } else {
   215     } else {
   216       os->put(class_str[i]);
   216       os->put(class_str[i]);
   217     }
   217     }
   218   }
   218   }
   219 }
   219 }
   220 
   220 
   221 static void print_array(outputStream *os, char *array_str, int len) {
   221 static void print_array(outputStream *os, char *array_str, int len) {
   222   int dimensions = 0;
   222   int dimensions = 0;
   223   for (int i = 0; i < len; ++i) {
   223   for (int i = 0; i < len; ++i) {
   224     if (array_str[i] == '[') {
   224     if (array_str[i] == JVM_SIGNATURE_ARRAY) {
   225       dimensions++;
   225       dimensions++;
   226     } else if (array_str[i] == 'L') {
   226     } else if (array_str[i] == JVM_SIGNATURE_CLASS) {
   227       // Expected format: L<type name>;. Skip 'L' and ';' delimiting the type name.
   227       // Expected format: L<type name>;. Skip 'L' and ';' delimiting the type name.
   228       print_class(os, array_str+i+1, len-i-2);
   228       print_class(os, array_str+i+1, len-i-2);
   229       break;
   229       break;
   230     } else {
   230     } else {
   231       os->print("%s", type2name(char2type(array_str[i])));
   231       os->print("%s", type2name(char2type(array_str[i])));