--- old/src/hotspot/share/opto/doCall.cpp 2019-09-11 09:51:59.824470686 -0400 +++ new/src/hotspot/share/opto/doCall.cpp 2019-09-11 09:51:59.531460660 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -702,8 +702,8 @@ } else if (rt == T_INT || is_subword_type(rt)) { // Nothing. These cases are handled in lambda form bytecode. assert(ct == T_INT || is_subword_type(ct), "must match: rt=%s, ct=%s", type2name(rt), type2name(ct)); - } else if (rt == T_OBJECT || rt == T_ARRAY) { - assert(ct == T_OBJECT || ct == T_ARRAY, "rt=%s, ct=%s", type2name(rt), type2name(ct)); + } else if (is_reference_type(rt)) { + assert(is_reference_type(ct), "rt=%s, ct=%s", type2name(rt), type2name(ct)); if (ctype->is_loaded()) { const TypeOopPtr* arg_type = TypeOopPtr::make_from_klass(rtype->as_klass()); const Type* sig_type = TypeOopPtr::make_from_klass(ctype->as_klass()); @@ -750,7 +750,7 @@ set_bci(iter().cur_bci()); // put it back } BasicType ct = ctype->basic_type(); - if (ct == T_OBJECT || ct == T_ARRAY) { + if (is_reference_type(ct)) { record_profiled_return_for_speculation(); } }