Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/type.cpp @ 6728:ca11db66f9de
7184649: NPG: Implement another MetdataPtr case
Summary: xmeet when both inputs are MetadataPtr.
Reviewed-by: kvn
author | roland |
---|---|
date | Tue, 04 Sep 2012 23:27:55 +0200 |
parents | da91efe96a93 |
children | aed758eda82a |
comparison
equal
deleted
inserted
replaced
6727:46c017102631 | 6728:ca11db66f9de |
---|---|
3911 case OopPtr: | 3911 case OopPtr: |
3912 case InstPtr: | 3912 case InstPtr: |
3913 case AryPtr: | 3913 case AryPtr: |
3914 return TypePtr::BOTTOM; // Oop meet raw is not well defined | 3914 return TypePtr::BOTTOM; // Oop meet raw is not well defined |
3915 | 3915 |
3916 case MetadataPtr: | 3916 case MetadataPtr: { |
3917 ShouldNotReachHere(); | 3917 const TypeMetadataPtr *tp = t->is_metadataptr(); |
3918 int offset = meet_offset(tp->offset()); | |
3919 PTR tptr = tp->ptr(); | |
3920 PTR ptr = meet_ptr(tptr); | |
3921 ciMetadata* md = (tptr == TopPTR) ? metadata() : tp->metadata(); | |
3922 if (tptr == TopPTR || _ptr == TopPTR || | |
3923 metadata()->equals(tp->metadata())) { | |
3924 return make(ptr, md, offset); | |
3925 } | |
3926 // metadata is different | |
3927 if( ptr == Constant ) { // Cannot be equal constants, so... | |
3928 if( tptr == Constant && _ptr != Constant) return t; | |
3929 if( _ptr == Constant && tptr != Constant) return this; | |
3930 ptr = NotNull; // Fall down in lattice | |
3931 } | |
3932 return make(ptr, NULL, offset); | |
3918 break; | 3933 break; |
3919 | 3934 } |
3920 } // End of switch | 3935 } // End of switch |
3921 return this; // Return the double constant | 3936 return this; // Return the double constant |
3922 } | 3937 } |
3923 | 3938 |
3924 | 3939 |