Mercurial > hg > graal-compiler
comparison src/share/vm/opto/cfgnode.cpp @ 14457:45467c53f178
Merge
author | kvn |
---|---|
date | Tue, 28 Jan 2014 12:28:17 -0800 |
parents | 5ec7dace41a6 |
children | 4ca6dc0799b6 |
comparison
equal
deleted
inserted
replaced
14456:abec000618bf | 14457:45467c53f178 |
---|---|
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(ti); | 954 t = t->meet_speculative(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(_type); // Worst case type | 971 const Type* ft = t->filter_speculative(_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(_type); | 975 const Type* jt = t->join_speculative(_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 |
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(in(i)->in(AddPNode::Base)->bottom_type()); | 1760 type = type->meet_speculative(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. |