src/share/vm/ci/ciMethodData.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/ci

src/share/vm/ci/ciMethodData.hpp

Print this page
rev 5621 : 8027572: assert(r != 0) failed: invalid
Summary: null classes should be expected in profiles with conflicts
Reviewed-by:


  60 class ciJumpData : public JumpData {
  61 public:
  62   ciJumpData(DataLayout* layout) : JumpData(layout) {};
  63 };
  64 
  65 class ciTypeEntries {
  66 protected:
  67   static intptr_t translate_klass(intptr_t k) {
  68     Klass* v = TypeEntries::valid_klass(k);
  69     if (v != NULL) {
  70       ciKlass* klass = CURRENT_ENV->get_klass(v);
  71       return with_status(klass, k);
  72     }
  73     return with_status(NULL, k);
  74   }
  75 
  76 public:
  77   static ciKlass* valid_ciklass(intptr_t k) {
  78     if (!TypeEntries::is_type_none(k) &&
  79         !TypeEntries::is_type_unknown(k)) {
  80       return (ciKlass*)TypeEntries::klass_part(k);


  81     } else {
  82       return NULL;
  83     }
  84   }
  85 
  86   static intptr_t with_status(ciKlass* k, intptr_t in) {
  87     return TypeEntries::with_status((intptr_t)k, in);
  88   }
  89 
  90 #ifndef PRODUCT
  91   static void print_ciklass(outputStream* st, intptr_t k);
  92 #endif
  93 };
  94 
  95 class ciTypeStackSlotEntries : public TypeStackSlotEntries, ciTypeEntries {
  96 public:
  97   void translate_type_data_from(const TypeStackSlotEntries* args);
  98 
  99   ciKlass* valid_type(int i) const {
 100     return valid_ciklass(type(i));




  60 class ciJumpData : public JumpData {
  61 public:
  62   ciJumpData(DataLayout* layout) : JumpData(layout) {};
  63 };
  64 
  65 class ciTypeEntries {
  66 protected:
  67   static intptr_t translate_klass(intptr_t k) {
  68     Klass* v = TypeEntries::valid_klass(k);
  69     if (v != NULL) {
  70       ciKlass* klass = CURRENT_ENV->get_klass(v);
  71       return with_status(klass, k);
  72     }
  73     return with_status(NULL, k);
  74   }
  75 
  76 public:
  77   static ciKlass* valid_ciklass(intptr_t k) {
  78     if (!TypeEntries::is_type_none(k) &&
  79         !TypeEntries::is_type_unknown(k)) {
  80       ciKlass* res = (ciKlass*)TypeEntries::klass_part(k);
  81       assert(res != NULL, "invalid");
  82       return res;
  83     } else {
  84       return NULL;
  85     }
  86   }
  87 
  88   static intptr_t with_status(ciKlass* k, intptr_t in) {
  89     return TypeEntries::with_status((intptr_t)k, in);
  90   }
  91 
  92 #ifndef PRODUCT
  93   static void print_ciklass(outputStream* st, intptr_t k);
  94 #endif
  95 };
  96 
  97 class ciTypeStackSlotEntries : public TypeStackSlotEntries, ciTypeEntries {
  98 public:
  99   void translate_type_data_from(const TypeStackSlotEntries* args);
 100 
 101   ciKlass* valid_type(int i) const {
 102     return valid_ciklass(type(i));


src/share/vm/ci/ciMethodData.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File