hotspot/src/share/vm/opto/type.cpp
changeset 8670 1f805a0c20e5
parent 7886 a5f8bcebf285
child 8673 45ec0a6115a0
equal deleted inserted replaced
8669:6d7c03ff52f7 8670:1f805a0c20e5
  3384         // Something like byte[int+] meets char[int+].
  3384         // Something like byte[int+] meets char[int+].
  3385         // This must fall to bottom, not (int[-128..65535])[int+].
  3385         // This must fall to bottom, not (int[-128..65535])[int+].
  3386         instance_id = InstanceBot;
  3386         instance_id = InstanceBot;
  3387         tary = TypeAry::make(Type::BOTTOM, tary->_size);
  3387         tary = TypeAry::make(Type::BOTTOM, tary->_size);
  3388       }
  3388       }
  3389     }
  3389     } else // Non integral arrays.
       
  3390     // Must fall to bottom if exact klasses in upper lattice
       
  3391     // are not equal or super klass is exact.
       
  3392     if ( above_centerline(ptr) && klass() != tap->klass() &&
       
  3393          // meet with top[] and bottom[] are processed further down:
       
  3394          tap ->_klass != NULL  && this->_klass != NULL   &&
       
  3395          // both are exact and not equal:
       
  3396         ((tap ->_klass_is_exact && this->_klass_is_exact) ||
       
  3397          // 'tap'  is exact and super or unrelated:
       
  3398          (tap ->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
       
  3399          // 'this' is exact and super or unrelated:
       
  3400          (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
       
  3401       tary = TypeAry::make(Type::BOTTOM, tary->_size);
       
  3402       return make( NotNull, NULL, tary, lazy_klass, false, off, InstanceBot );
       
  3403     }
       
  3404 
  3390     bool xk = false;
  3405     bool xk = false;
  3391     switch (tap->ptr()) {
  3406     switch (tap->ptr()) {
  3392     case AnyNull:
  3407     case AnyNull:
  3393     case TopPTR:
  3408     case TopPTR:
  3394       // Compute new klass on demand, do not use tap->_klass
  3409       // Compute new klass on demand, do not use tap->_klass