< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page
rev 58870 : 8242452: During module definition, move conversion of packages from native to VM
8242290: Pointless verification in get_package_entry_by_name
Reviewed-by: lfoltan, alanb, iklam


 632 int java_lang_String::utf8_length(oop java_string, typeArrayOop value) {
 633   assert(value_equals(value, java_lang_String::value(java_string)),
 634          "value must be same as java_lang_String::value(java_string)");
 635   int length = java_lang_String::length(java_string, value);
 636   if (length == 0) {
 637     return 0;
 638   }
 639   if (!java_lang_String::is_latin1(java_string)) {
 640     return UNICODE::utf8_length(value->char_at_addr(0), length);
 641   } else {
 642     return UNICODE::utf8_length(value->byte_at_addr(0), length);
 643   }
 644 }
 645 
 646 int java_lang_String::utf8_length(oop java_string) {
 647   typeArrayOop value = java_lang_String::value(java_string);
 648   return utf8_length(java_string, value);
 649 }
 650 
 651 char* java_lang_String::as_utf8_string(oop java_string) {





 652   typeArrayOop value  = java_lang_String::value(java_string);
 653   int          length = java_lang_String::length(java_string, value);
 654   bool      is_latin1 = java_lang_String::is_latin1(java_string);
 655   if (!is_latin1) {
 656     jchar* position = (length == 0) ? NULL : value->char_at_addr(0);
 657     return UNICODE::as_utf8(position, length);
 658   } else {
 659     jbyte* position = (length == 0) ? NULL : value->byte_at_addr(0);
 660     return UNICODE::as_utf8(position, length);























 661   }
 662 }
 663 
 664 char* java_lang_String::as_utf8_string(oop java_string, typeArrayOop value, char* buf, int buflen) {
 665   assert(value_equals(value, java_lang_String::value(java_string)),
 666          "value must be same as java_lang_String::value(java_string)");
 667   int     length = java_lang_String::length(java_string, value);
 668   bool is_latin1 = java_lang_String::is_latin1(java_string);
 669   if (!is_latin1) {
 670     jchar* position = (length == 0) ? NULL : value->char_at_addr(0);
 671     return UNICODE::as_utf8(position, length, buf, buflen);
 672   } else {
 673     jbyte* position = (length == 0) ? NULL : value->byte_at_addr(0);
 674     return UNICODE::as_utf8(position, length, buf, buflen);
 675   }
 676 }
 677 
 678 char* java_lang_String::as_utf8_string(oop java_string, char* buf, int buflen) {
 679   typeArrayOop value = java_lang_String::value(java_string);
 680   return as_utf8_string(java_string, value, buf, buflen);




 632 int java_lang_String::utf8_length(oop java_string, typeArrayOop value) {
 633   assert(value_equals(value, java_lang_String::value(java_string)),
 634          "value must be same as java_lang_String::value(java_string)");
 635   int length = java_lang_String::length(java_string, value);
 636   if (length == 0) {
 637     return 0;
 638   }
 639   if (!java_lang_String::is_latin1(java_string)) {
 640     return UNICODE::utf8_length(value->char_at_addr(0), length);
 641   } else {
 642     return UNICODE::utf8_length(value->byte_at_addr(0), length);
 643   }
 644 }
 645 
 646 int java_lang_String::utf8_length(oop java_string) {
 647   typeArrayOop value = java_lang_String::value(java_string);
 648   return utf8_length(java_string, value);
 649 }
 650 
 651 char* java_lang_String::as_utf8_string(oop java_string) {
 652   int length = 0;
 653   return as_utf8_string(java_string, length);
 654 }
 655 
 656 char* java_lang_String::as_utf8_string(oop java_string, int& length) {
 657   typeArrayOop value = java_lang_String::value(java_string);
 658               length = java_lang_String::length(java_string, value);
 659   bool     is_latin1 = java_lang_String::is_latin1(java_string);
 660   if (!is_latin1) {
 661     jchar* position = (length == 0) ? NULL : value->char_at_addr(0);
 662     return UNICODE::as_utf8(position, length);
 663   } else {
 664     jbyte* position = (length == 0) ? NULL : value->byte_at_addr(0);
 665     return UNICODE::as_utf8(position, length);
 666   }
 667 }
 668 
 669 // Uses a provided buffer if it's sufficiently large, otherwise allocates
 670 // a resource array to fit
 671 char* java_lang_String::as_utf8_string_full(oop java_string, char* buf, int buflen, int& utf8_len) {
 672   typeArrayOop value = java_lang_String::value(java_string);
 673   int            len = java_lang_String::length(java_string, value);
 674   bool     is_latin1 = java_lang_String::is_latin1(java_string);
 675   if (!is_latin1) {
 676     jchar *position = (len == 0) ? NULL : value->char_at_addr(0);
 677     utf8_len = UNICODE::utf8_length(position, len);
 678     if (utf8_len >= buflen) {
 679       buf = NEW_RESOURCE_ARRAY(char, utf8_len + 1);
 680     }
 681     return UNICODE::as_utf8(position, len, buf, utf8_len + 1);
 682   } else {
 683     jbyte *position = (len == 0) ? NULL : value->byte_at_addr(0);
 684     utf8_len = UNICODE::utf8_length(position, len);
 685     if (utf8_len >= buflen) {
 686       buf = NEW_RESOURCE_ARRAY(char, utf8_len + 1);
 687     }
 688     return UNICODE::as_utf8(position, len, buf, utf8_len + 1);
 689   }
 690 }
 691 
 692 char* java_lang_String::as_utf8_string(oop java_string, typeArrayOop value, char* buf, int buflen) {
 693   assert(value_equals(value, java_lang_String::value(java_string)),
 694          "value must be same as java_lang_String::value(java_string)");
 695   int     length = java_lang_String::length(java_string, value);
 696   bool is_latin1 = java_lang_String::is_latin1(java_string);
 697   if (!is_latin1) {
 698     jchar* position = (length == 0) ? NULL : value->char_at_addr(0);
 699     return UNICODE::as_utf8(position, length, buf, buflen);
 700   } else {
 701     jbyte* position = (length == 0) ? NULL : value->byte_at_addr(0);
 702     return UNICODE::as_utf8(position, length, buf, buflen);
 703   }
 704 }
 705 
 706 char* java_lang_String::as_utf8_string(oop java_string, char* buf, int buflen) {
 707   typeArrayOop value = java_lang_String::value(java_string);
 708   return as_utf8_string(java_string, value, buf, buflen);


< prev index next >