< prev index next >

src/hotspot/share/ci/ciObjArrayKlass.cpp

Print this page




  48     _element_klass = _base_element_klass;
  49   } else {
  50     _element_klass = NULL;
  51   }
  52   if (!ciObjectFactory::is_initialized()) {
  53     assert(_element_klass->is_java_lang_Object(), "only arrays of object are shared");
  54   }
  55 }
  56 
  57 // ------------------------------------------------------------------
  58 // ciObjArrayKlass::ciObjArrayKlass
  59 //
  60 // Constructor for unloaded object array klasses.
  61 ciObjArrayKlass::ciObjArrayKlass(ciSymbol* array_name,
  62                                  ciKlass* base_element_klass,
  63                                  int dimension)
  64   : ciArrayKlass(array_name,
  65                  dimension, T_OBJECT) {
  66     _base_element_klass = base_element_klass;
  67     assert(_base_element_klass->is_instance_klass() ||
  68            _base_element_klass->is_type_array_klass(), "bad base klass");

  69     if (dimension == 1) {
  70       _element_klass = base_element_klass;
  71     } else {
  72       _element_klass = NULL;
  73     }
  74 }
  75 
  76 // ------------------------------------------------------------------
  77 // ciObjArrayKlass::element_klass
  78 //
  79 // What is the one-level element type of this array?
  80 ciKlass* ciObjArrayKlass::element_klass() {
  81   if (_element_klass == NULL) {
  82     assert(dimension() > 1, "_element_klass should not be NULL");
  83     // Produce the element klass.
  84     if (is_loaded()) {
  85       VM_ENTRY_MARK;
  86       Klass* element_Klass = get_ObjArrayKlass()->element_klass();
  87       _element_klass = CURRENT_THREAD_ENV->get_klass(element_Klass);
  88     } else {




  48     _element_klass = _base_element_klass;
  49   } else {
  50     _element_klass = NULL;
  51   }
  52   if (!ciObjectFactory::is_initialized()) {
  53     assert(_element_klass->is_java_lang_Object(), "only arrays of object are shared");
  54   }
  55 }
  56 
  57 // ------------------------------------------------------------------
  58 // ciObjArrayKlass::ciObjArrayKlass
  59 //
  60 // Constructor for unloaded object array klasses.
  61 ciObjArrayKlass::ciObjArrayKlass(ciSymbol* array_name,
  62                                  ciKlass* base_element_klass,
  63                                  int dimension)
  64   : ciArrayKlass(array_name,
  65                  dimension, T_OBJECT) {
  66     _base_element_klass = base_element_klass;
  67     assert(_base_element_klass->is_instance_klass() ||
  68            _base_element_klass->is_type_array_klass() ||
  69            _base_element_klass->is_value_array_klass(), "bad base klass");
  70     if (dimension == 1) {
  71       _element_klass = base_element_klass;
  72     } else {
  73       _element_klass = NULL;
  74     }
  75 }
  76 
  77 // ------------------------------------------------------------------
  78 // ciObjArrayKlass::element_klass
  79 //
  80 // What is the one-level element type of this array?
  81 ciKlass* ciObjArrayKlass::element_klass() {
  82   if (_element_klass == NULL) {
  83     assert(dimension() > 1, "_element_klass should not be NULL");
  84     // Produce the element klass.
  85     if (is_loaded()) {
  86       VM_ENTRY_MARK;
  87       Klass* element_Klass = get_ObjArrayKlass()->element_klass();
  88       _element_klass = CURRENT_THREAD_ENV->get_klass(element_Klass);
  89     } else {


< prev index next >