6865583: Verbose CIPrintMethodCodes asserts when ldc an empty String
authortwisti
Thu Aug 27 06:17:23 2009 -0700 (6 months ago)
changeset 949489a4f8dcd0f
parent 934aba04734b61e
child 9508fe1963e3964
6865583: Verbose CIPrintMethodCodes asserts when ldc an empty String
Summary: ldc seems to load an empty String and that leads to an assert on offset < length, which are both zero.
Reviewed-by: kvn, never
src/share/vm/classfile/javaClasses.cpp
--- a/src/share/vm/classfile/javaClasses.cpp Tue Aug 25 13:08:40 2009 -0700
+++ b/src/share/vm/classfile/javaClasses.cpp Thu Aug 27 06:17:23 2009 -0700
@@ -252,7 +252,7 @@ symbolHandle java_lang_String::as_symbol
typeArrayOop value = java_lang_String::value(obj);
int offset = java_lang_String::offset(obj);
int length = java_lang_String::length(obj);
- jchar* base = value->char_at_addr(offset);
+ jchar* base = (length == 0) ? NULL : value->char_at_addr(offset);
symbolOop sym = SymbolTable::lookup_unicode(base, length, THREAD);
return symbolHandle(THREAD, sym);
}
@@ -261,7 +261,7 @@ symbolOop java_lang_String::as_symbol_or
typeArrayOop value = java_lang_String::value(java_string);
int offset = java_lang_String::offset(java_string);
int length = java_lang_String::length(java_string);
- jchar* base = value->char_at_addr(offset);
+ jchar* base = (length == 0) ? NULL : value->char_at_addr(offset);
return SymbolTable::probe_unicode(base, length);
}