< prev index next >
src/share/vm/runtime/signature.cpp
Print this page
*** 384,397 ****
Symbol* SignatureStream::as_symbol(TRAPS) {
// Create a symbol from for string _begin _end
int begin = _begin;
int end = _end;
! if ( ( _signature->byte_at(_begin) == 'L' || _signature->byte_at(_begin) == 'Q' )
! && _signature->byte_at(_end-1) == ';') {
begin++;
end--;
}
// Save names for cleaning up reference count at the end of
// SignatureStream scope.
Symbol* name = SymbolTable::new_symbol(_signature, begin, end, CHECK_NULL);
--- 384,399 ----
Symbol* SignatureStream::as_symbol(TRAPS) {
// Create a symbol from for string _begin _end
int begin = _begin;
int end = _end;
! if (_type == T_OBJECT || _type == T_VALUETYPE) {
begin++;
end--;
+ if (begin == end) {
+ return (_type == T_OBJECT) ? vmSymbols::java_lang_Object() : vmSymbols::java_lang____Value();
+ }
}
// Save names for cleaning up reference count at the end of
// SignatureStream scope.
Symbol* name = SymbolTable::new_symbol(_signature, begin, end, CHECK_NULL);
< prev index next >