1 /* |
1 /* |
2 * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
700 // The Java code knows this, at VerifyType.isNullConversion. |
700 // The Java code knows this, at VerifyType.isNullConversion. |
701 pop_node(rt); // whatever it was, pop it |
701 pop_node(rt); // whatever it was, pop it |
702 } else if (rt == T_INT || is_subword_type(rt)) { |
702 } else if (rt == T_INT || is_subword_type(rt)) { |
703 // Nothing. These cases are handled in lambda form bytecode. |
703 // Nothing. These cases are handled in lambda form bytecode. |
704 assert(ct == T_INT || is_subword_type(ct), "must match: rt=%s, ct=%s", type2name(rt), type2name(ct)); |
704 assert(ct == T_INT || is_subword_type(ct), "must match: rt=%s, ct=%s", type2name(rt), type2name(ct)); |
705 } else if (rt == T_OBJECT || rt == T_ARRAY) { |
705 } else if (is_reference_type(rt)) { |
706 assert(ct == T_OBJECT || ct == T_ARRAY, "rt=%s, ct=%s", type2name(rt), type2name(ct)); |
706 assert(is_reference_type(ct), "rt=%s, ct=%s", type2name(rt), type2name(ct)); |
707 if (ctype->is_loaded()) { |
707 if (ctype->is_loaded()) { |
708 const TypeOopPtr* arg_type = TypeOopPtr::make_from_klass(rtype->as_klass()); |
708 const TypeOopPtr* arg_type = TypeOopPtr::make_from_klass(rtype->as_klass()); |
709 const Type* sig_type = TypeOopPtr::make_from_klass(ctype->as_klass()); |
709 const Type* sig_type = TypeOopPtr::make_from_klass(ctype->as_klass()); |
710 if (arg_type != NULL && !arg_type->higher_equal(sig_type)) { |
710 if (arg_type != NULL && !arg_type->higher_equal(sig_type)) { |
711 Node* retnode = pop(); |
711 Node* retnode = pop(); |
748 set_bci(iter().next_bci()); |
748 set_bci(iter().next_bci()); |
749 null_assert(peek()); |
749 null_assert(peek()); |
750 set_bci(iter().cur_bci()); // put it back |
750 set_bci(iter().cur_bci()); // put it back |
751 } |
751 } |
752 BasicType ct = ctype->basic_type(); |
752 BasicType ct = ctype->basic_type(); |
753 if (ct == T_OBJECT || ct == T_ARRAY) { |
753 if (is_reference_type(ct)) { |
754 record_profiled_return_for_speculation(); |
754 record_profiled_return_for_speculation(); |
755 } |
755 } |
756 } |
756 } |
757 |
757 |
758 // Restart record of parsing work after possible inlining of call |
758 // Restart record of parsing work after possible inlining of call |