--- old/src/hotspot/share/prims/methodHandles.cpp 2018-02-15 15:33:53.000000000 -0500 +++ new/src/hotspot/share/prims/methodHandles.cpp 2018-02-15 15:33:52.000000000 -0500 @@ -500,9 +500,6 @@ static const char OBJ_SIG[] = "Ljava/lang/Object;"; enum { OBJ_SIG_LEN = 18 }; -static const char VAL_SIG[] = "Qjava/lang/__Value;"; -enum { VAL_SIG_LEN = 19 }; - bool MethodHandles::is_basic_type_signature(Symbol* sig) { assert(vmSymbols::object_signature()->utf8_length() == (int)OBJ_SIG_LEN, ""); assert(vmSymbols::object_signature()->equals(OBJ_SIG), ""); @@ -515,12 +512,6 @@ return false; i += OBJ_SIG_LEN-1; //-1 because of i++ in loop continue; - case 'Q' : - // only java/lang/__Value is valid here - if (sig->index_of_at(i, VAL_SIG, VAL_SIG_LEN) != i) - return false; - i += VAL_SIG_LEN-1; //-1 because of i++ in loop - continue; case '(': case ')': case 'V': case 'I': case 'J': case 'F': case 'D': continue; @@ -564,10 +555,8 @@ if (arg_pos == keep_arg_pos) { buffer.write((char*) ss.raw_bytes(), (int) ss.raw_length()); - } else if (bt == T_OBJECT || bt == T_ARRAY) { + } else if (bt == T_OBJECT || bt == T_ARRAY || bt == T_VALUETYPE) { buffer.write(OBJ_SIG, OBJ_SIG_LEN); - } else if (bt == T_VALUETYPE) { - buffer.write(VAL_SIG, VAL_SIG_LEN); } else { if (is_subword_type(bt)) bt = T_INT;