--- old/src/hotspot/share/runtime/fieldType.cpp 2019-03-11 14:27:11.442354252 +0100 +++ new/src/hotspot/share/runtime/fieldType.cpp 2019-03-11 14:27:11.226354255 +0100 @@ -57,15 +57,15 @@ case 'Z': // T_BOOLEAN // If it is an array, the type is the last character return (i + 1 == len); + case 'Q': // fall through case 'L': - // If it is an object, the last character must be a ';' + // If it is a class name, the last character must be a ';' return sig->char_at(len - 1) == ';'; } return false; } - BasicType FieldType::get_array_info(Symbol* signature, FieldArrayInfo& fd, TRAPS) { assert(basic_type(signature) == T_ARRAY, "must be array"); int index = 1; @@ -77,7 +77,7 @@ ResourceMark rm; char *element = signature->as_C_string() + index; BasicType element_type = char2type(element[0]); - if (element_type == T_OBJECT) { + if (element_type == T_OBJECT || element_type == T_VALUETYPE) { int len = (int)strlen(element); assert(element[len-1] == ';', "last char should be a semicolon"); element[len-1] = '\0'; // chop off semicolon