6664815: Eliminate redundant memcpy operation in jni_GetStringUTFRegion

Added support for target buffer in as_utf8_string(), minor refactoring of as_utf8 and added some internal VM testing

Reviewed-by: coleenp, dsimms, sla, dholmes
This commit is contained in:
Marcus Larsson 2014-04-03 14:54:42 +02:00 committed by Mikael Gerdin
parent 7ee6324490
commit 9efb17f38f
4 changed files with 48 additions and 16 deletions

View file

@ -421,6 +421,15 @@ char* java_lang_String::as_utf8_string(oop java_string, int start, int len) {
return UNICODE::as_utf8(position, len);
}
char* java_lang_String::as_utf8_string(oop java_string, int start, int len, char* buf, int buflen) {
typeArrayOop value = java_lang_String::value(java_string);
int offset = java_lang_String::offset(java_string);
int length = java_lang_String::length(java_string);
assert(start + len <= length, "just checking");
jchar* position = value->char_at_addr(offset + 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");