< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page




 639       if (value->char_at(i) != chars[i]) {
 640         return false;
 641       }
 642     }
 643   } else {
 644     for (int i = 0; i < len; i++) {
 645       if ((((jchar) value->byte_at(i)) & 0xff) != chars[i]) {
 646         return false;
 647       }
 648     }
 649   }
 650   return true;
 651 }
 652 
 653 bool java_lang_String::equals(oop str1, oop str2) {
 654   assert(str1->klass() == SystemDictionary::String_klass(),
 655          "must be java String");
 656   assert(str2->klass() == SystemDictionary::String_klass(),
 657          "must be java String");
 658   typeArrayOop value1    = java_lang_String::value_no_keepalive(str1);
 659   int          length1   = java_lang_String::length(value1);
 660   bool         is_latin1 = java_lang_String::is_latin1(str1);
 661   typeArrayOop value2    = java_lang_String::value_no_keepalive(str2);
 662   int          length2   = java_lang_String::length(value2);
 663   bool         is_latin2 = java_lang_String::is_latin1(str2);
 664 
 665   if ((length1 != length2) || (is_latin1 != is_latin2)) {
 666     // Strings of different size or with different
 667     // coders are never equal.
 668     return false;
 669   }
 670   int blength1 = value1->length();
 671   for (int i = 0; i < blength1; i++) {
 672     if (value1->byte_at(i) != value2->byte_at(i)) {
 673       return false;
 674     }
 675   }
 676   return true;
 677 }
 678 
 679 void java_lang_String::print(oop java_string, outputStream* st) {
 680   assert(java_string->klass() == SystemDictionary::String_klass(), "must be java_string");
 681   typeArrayOop value  = java_lang_String::value_no_keepalive(java_string);
 682 




 639       if (value->char_at(i) != chars[i]) {
 640         return false;
 641       }
 642     }
 643   } else {
 644     for (int i = 0; i < len; i++) {
 645       if ((((jchar) value->byte_at(i)) & 0xff) != chars[i]) {
 646         return false;
 647       }
 648     }
 649   }
 650   return true;
 651 }
 652 
 653 bool java_lang_String::equals(oop str1, oop str2) {
 654   assert(str1->klass() == SystemDictionary::String_klass(),
 655          "must be java String");
 656   assert(str2->klass() == SystemDictionary::String_klass(),
 657          "must be java String");
 658   typeArrayOop value1    = java_lang_String::value_no_keepalive(str1);
 659   int          length1   = java_lang_String::length(str1);
 660   bool         is_latin1 = java_lang_String::is_latin1(str1);
 661   typeArrayOop value2    = java_lang_String::value_no_keepalive(str2);
 662   int          length2   = java_lang_String::length(str2);
 663   bool         is_latin2 = java_lang_String::is_latin1(str2);
 664 
 665   if ((length1 != length2) || (is_latin1 != is_latin2)) {
 666     // Strings of different size or with different
 667     // coders are never equal.
 668     return false;
 669   }
 670   int blength1 = value1->length();
 671   for (int i = 0; i < blength1; i++) {
 672     if (value1->byte_at(i) != value2->byte_at(i)) {
 673       return false;
 674     }
 675   }
 676   return true;
 677 }
 678 
 679 void java_lang_String::print(oop java_string, outputStream* st) {
 680   assert(java_string->klass() == SystemDictionary::String_klass(), "must be java_string");
 681   typeArrayOop value  = java_lang_String::value_no_keepalive(java_string);
 682 


< prev index next >