< prev index next >
src/share/vm/classfile/javaClasses.cpp
Print this page
rev 12906 : [mq]: gc_interface
@@ -42,11 +42,12 @@
#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 "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,15 +613,13 @@
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) {
+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");
- 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) {
@@ -637,29 +636,34 @@
}
}
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 = java_lang_String::length(str1);
+ int length1 = value1->length();
bool is_latin1 = java_lang_String::is_latin1(str1);
typeArrayOop value2 = java_lang_String::value(str2);
- int length2 = java_lang_String::length(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;
}
- int blength1 = value1->length();
- for (int i = 0; i < value1->length(); i++) {
+ for (int i = 0; i < length1; i++) {
if (value1->byte_at(i) != value2->byte_at(i)) {
return false;
}
}
return true;
< prev index next >