7026631: field _klass is incorrectly set for dual type of TypeAryPtr::OOPS
Summary: add missing check this->dual() != TypeAryPtr::OOPS into TypeAryPtr::klass().
Reviewed-by: never
--- a/hotspot/src/share/vm/opto/type.cpp Wed Mar 09 09:15:16 2011 -0800
+++ b/hotspot/src/share/vm/opto/type.cpp Fri Mar 11 07:50:51 2011 -0800
@@ -3781,7 +3781,7 @@
// Oops, need to compute _klass and cache it
ciKlass* k_ary = compute_klass();
- if( this != TypeAryPtr::OOPS ) {
+ if( this != TypeAryPtr::OOPS && this->dual() != TypeAryPtr::OOPS ) {
// The _klass field acts as a cache of the underlying
// ciKlass for this array type. In order to set the field,
// we need to cast away const-ness.