--- old/src/share/vm/opto/type.cpp 2017-06-20 21:25:51.197630551 +0200 +++ new/src/share/vm/opto/type.cpp 2017-06-20 21:25:47.287641956 +0200 @@ -2023,7 +2023,7 @@ if (vt_fields_as_args) { for (int i = 0; i < sig->count(); i++) { ciType* type = sig->type_at(i); - if (type->basic_type() == T_VALUETYPE) { + if (type->basic_type() == T_VALUETYPE && type != ciEnv::current()->___Value_klass()) { assert(type->is_valuetype(), "inconsistent type"); ciValueKlass* vk = (ciValueKlass*)type; vt_extra += vk->value_arg_slots()-1; @@ -2081,8 +2081,7 @@ break; case T_VALUETYPE: { assert(type->is_valuetype(), "inconsistent type"); - assert(type != ciEnv::current()->___Value_klass(), "unsupported"); - if (vt_fields_as_args) { + if (vt_fields_as_args && type != ciEnv::current()->___Value_klass()) { ciValueKlass* vk = (ciValueKlass*)type; collect_value_fields(vk, field_array, pos); } else {