--- old/src/share/vm/opto/type.cpp 2017-07-18 14:44:04.047940058 +0200 +++ new/src/share/vm/opto/type.cpp 2017-07-18 14:43:59.319950475 +0200 @@ -1937,6 +1937,10 @@ // Make a TypeTuple from the range of a method signature const TypeTuple *TypeTuple::make_range(ciSignature* sig, bool ret_vt_fields) { ciType* return_type = sig->return_type(); + return make_range(return_type, ret_vt_fields); +} + +const TypeTuple *TypeTuple::make_range(ciType* return_type, bool ret_vt_fields) { uint arg_cnt = 0; if (ret_vt_fields) { ret_vt_fields = return_type->is_valuetype() && ((ciValueKlass*)return_type)->can_be_returned_as_fields(); @@ -1972,7 +1976,7 @@ if (ret_vt_fields) { ciValueKlass* vk = (ciValueKlass*)return_type; uint pos = TypeFunc::Parms; - field_array[pos] = TypeKlassPtr::make(vk); + field_array[pos] = TypePtr::BOTTOM; pos++; collect_value_fields(vk, field_array, pos); } else {