changeset 2245:83f08886981c

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
author kvn
date Fri, 11 Mar 2011 07:50:51 -0800
parents 1c0cf339481b
children 799d8ccf63cf
files src/share/vm/opto/type.cpp
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/type.cpp	Wed Mar 09 09:15:16 2011 -0800
+++ b/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.