< prev index next >
src/share/vm/classfile/javaClasses.cpp
Print this page
rev 12906 : [mq]: gc_interface
*** 42,52 ****
#include "oops/klass.hpp"
#include "oops/method.hpp"
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "oops/symbol.hpp"
! #include "oops/typeArrayOop.hpp"
#include "runtime/fieldDescriptor.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/interfaceSupport.hpp"
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
--- 42,53 ----
#include "oops/klass.hpp"
#include "oops/method.hpp"
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "oops/symbol.hpp"
! #include "oops/typeArrayOop.inline.hpp"
! #include "runtime/access.inline.hpp"
#include "runtime/fieldDescriptor.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/interfaceSupport.hpp"
#include "runtime/java.hpp"
#include "runtime/javaCalls.hpp"
*** 612,626 ****
jbyte* position = value->byte_at_addr(start);
return UNICODE::as_utf8(position, len, buf, buflen);
}
}
! bool java_lang_String::equals(oop java_string, jchar* chars, int len) {
assert(java_string->klass() == SystemDictionary::String_klass(),
"must be java_string");
- typeArrayOop value = java_lang_String::value(java_string);
- int length = java_lang_String::length(java_string);
if (length != len) {
return false;
}
bool is_latin1 = java_lang_String::is_latin1(java_string);
if (!is_latin1) {
--- 613,625 ----
jbyte* position = value->byte_at_addr(start);
return UNICODE::as_utf8(position, len, buf, buflen);
}
}
! bool java_lang_String::equals(typeArrayOop value, int length, oop java_string, jchar* chars, int len) {
assert(java_string->klass() == SystemDictionary::String_klass(),
"must be java_string");
if (length != len) {
return false;
}
bool is_latin1 = java_lang_String::is_latin1(java_string);
if (!is_latin1) {
*** 637,665 ****
}
}
return true;
}
bool java_lang_String::equals(oop str1, oop str2) {
assert(str1->klass() == SystemDictionary::String_klass(),
"must be java String");
assert(str2->klass() == SystemDictionary::String_klass(),
"must be java String");
typeArrayOop value1 = java_lang_String::value(str1);
! int length1 = java_lang_String::length(str1);
bool is_latin1 = java_lang_String::is_latin1(str1);
typeArrayOop value2 = java_lang_String::value(str2);
! int length2 = java_lang_String::length(str2);
bool is_latin2 = java_lang_String::is_latin1(str2);
if ((length1 != length2) || (is_latin1 != is_latin2)) {
// Strings of different size or with different
// coders are never equal.
return false;
}
! int blength1 = value1->length();
! for (int i = 0; i < value1->length(); i++) {
if (value1->byte_at(i) != value2->byte_at(i)) {
return false;
}
}
return true;
--- 636,669 ----
}
}
return true;
}
+ bool java_lang_String::equals(oop java_string, jchar* chars, int len) {
+ typeArrayOop value = java_lang_String::value(java_string);
+ int length = java_lang_String::length(java_string);
+ return java_lang_String::equals(value, length, java_string, chars, len);
+ }
+
bool java_lang_String::equals(oop str1, oop str2) {
assert(str1->klass() == SystemDictionary::String_klass(),
"must be java String");
assert(str2->klass() == SystemDictionary::String_klass(),
"must be java String");
typeArrayOop value1 = java_lang_String::value(str1);
! int length1 = value1->length();
bool is_latin1 = java_lang_String::is_latin1(str1);
typeArrayOop value2 = java_lang_String::value(str2);
! int length2 = value2->length();
bool is_latin2 = java_lang_String::is_latin1(str2);
if ((length1 != length2) || (is_latin1 != is_latin2)) {
// Strings of different size or with different
// coders are never equal.
return false;
}
! for (int i = 0; i < length1; i++) {
if (value1->byte_at(i) != value2->byte_at(i)) {
return false;
}
}
return true;
< prev index next >