comparison src/share/vm/opto/cfgnode.cpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents 5ec7dace41a6
children 52b4284cb496
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
949 if (k->is_loaded() && k->is_interface()) 949 if (k->is_loaded() && k->is_interface())
950 ti_is_intf = true; 950 ti_is_intf = true;
951 if (is_intf != ti_is_intf) 951 if (is_intf != ti_is_intf)
952 { t = _type; break; } 952 { t = _type; break; }
953 } 953 }
954 t = t->meet_speculative(ti); 954 t = t->meet(ti);
955 } 955 }
956 } 956 }
957 957
958 // The worst-case type (from ciTypeFlow) should be consistent with "t". 958 // The worst-case type (from ciTypeFlow) should be consistent with "t".
959 // That is, we expect that "t->higher_equal(_type)" holds true. 959 // That is, we expect that "t->higher_equal(_type)" holds true.
966 // - Value calls on inputs might produce fuzzy results. 966 // - Value calls on inputs might produce fuzzy results.
967 // (Occurrences of this case suggest improvements to Value methods.) 967 // (Occurrences of this case suggest improvements to Value methods.)
968 // 968 //
969 // It is not possible to see Type::BOTTOM values as phi inputs, 969 // It is not possible to see Type::BOTTOM values as phi inputs,
970 // because the ciTypeFlow pre-pass produces verifier-quality types. 970 // because the ciTypeFlow pre-pass produces verifier-quality types.
971 const Type* ft = t->filter_speculative(_type); // Worst case type 971 const Type* ft = t->filter(_type); // Worst case type
972 972
973 #ifdef ASSERT 973 #ifdef ASSERT
974 // The following logic has been moved into TypeOopPtr::filter. 974 // The following logic has been moved into TypeOopPtr::filter.
975 const Type* jt = t->join_speculative(_type); 975 const Type* jt = t->join(_type);
976 if( jt->empty() ) { // Emptied out??? 976 if( jt->empty() ) { // Emptied out???
977 977
978 // Check for evil case of 't' being a class and '_type' expecting an 978 // Check for evil case of 't' being a class and '_type' expecting an
979 // interface. This can happen because the bytecodes do not contain 979 // interface. This can happen because the bytecodes do not contain
980 // enough type info to distinguish a Java-level interface variable 980 // enough type info to distinguish a Java-level interface variable
1016 if( jtkp && ttkp ) { 1016 if( jtkp && ttkp ) {
1017 if( jtkp->is_loaded() && jtkp->klass()->is_interface() && 1017 if( jtkp->is_loaded() && jtkp->klass()->is_interface() &&
1018 !jtkp->klass_is_exact() && // Keep exact interface klass (6894807) 1018 !jtkp->klass_is_exact() && // Keep exact interface klass (6894807)
1019 ttkp->is_loaded() && !ttkp->klass()->is_interface() ) { 1019 ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
1020 assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) || 1020 assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
1021 ft->isa_narrowklass() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), ""); 1021 ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
1022 jt = ft; 1022 jt = ft;
1023 } 1023 }
1024 } 1024 }
1025 if (jt != ft && jt->base() == ft->base()) { 1025 if (jt != ft && jt->base() == ft->base()) {
1026 if (jt->isa_int() && 1026 if (jt->isa_int() &&
1755 in(i)->in(AddPNode::Offset) != y) { 1755 in(i)->in(AddPNode::Offset) != y) {
1756 doit = false; 1756 doit = false;
1757 break; 1757 break;
1758 } 1758 }
1759 // Accumulate type for resulting Phi 1759 // Accumulate type for resulting Phi
1760 type = type->meet_speculative(in(i)->in(AddPNode::Base)->bottom_type()); 1760 type = type->meet(in(i)->in(AddPNode::Base)->bottom_type());
1761 } 1761 }
1762 Node* base = NULL; 1762 Node* base = NULL;
1763 if (doit) { 1763 if (doit) {
1764 // Check for neighboring AddP nodes in a tree. 1764 // Check for neighboring AddP nodes in a tree.
1765 // If they have a base, use that it. 1765 // If they have a base, use that it.