hotspot/src/share/vm/ci/ciObjectFactory.cpp
changeset 13952 e3cf184080bc
parent 13728 882756847a04
child 13961 aeaa21c167d1
equal deleted inserted replaced
13918:b01a48301e67 13952:e3cf184080bc
   171       }
   171       }
   172     }
   172     }
   173   }
   173   }
   174 
   174 
   175   ciEnv::_unloaded_cisymbol = ciObjectFactory::get_symbol(vmSymbols::dummy_symbol());
   175   ciEnv::_unloaded_cisymbol = ciObjectFactory::get_symbol(vmSymbols::dummy_symbol());
   176   // Create dummy InstanceKlass and objArrayKlass object and assign them idents
   176   // Create dummy InstanceKlass and ObjArrayKlass object and assign them idents
   177   ciEnv::_unloaded_ciinstance_klass = new (_arena) ciInstanceKlass(ciEnv::_unloaded_cisymbol, NULL, NULL);
   177   ciEnv::_unloaded_ciinstance_klass = new (_arena) ciInstanceKlass(ciEnv::_unloaded_cisymbol, NULL, NULL);
   178   init_ident_of(ciEnv::_unloaded_ciinstance_klass);
   178   init_ident_of(ciEnv::_unloaded_ciinstance_klass);
   179   ciEnv::_unloaded_ciobjarrayklass = new (_arena) ciObjArrayKlass(ciEnv::_unloaded_cisymbol, ciEnv::_unloaded_ciinstance_klass, 1);
   179   ciEnv::_unloaded_ciobjarrayklass = new (_arena) ciObjArrayKlass(ciEnv::_unloaded_cisymbol, ciEnv::_unloaded_ciinstance_klass, 1);
   180   init_ident_of(ciEnv::_unloaded_ciobjarrayklass);
   180   init_ident_of(ciEnv::_unloaded_ciobjarrayklass);
   181   assert(ciEnv::_unloaded_ciobjarrayklass->is_obj_array_klass(), "just checking");
   181   assert(ciEnv::_unloaded_ciobjarrayklass->is_obj_array_klass(), "just checking");
   449 
   449 
   450   // This is a new unloaded klass.  Create it and stick it in
   450   // This is a new unloaded klass.  Create it and stick it in
   451   // the cache.
   451   // the cache.
   452   ciKlass* new_klass = NULL;
   452   ciKlass* new_klass = NULL;
   453 
   453 
   454   // Two cases: this is an unloaded objArrayKlass or an
   454   // Two cases: this is an unloaded ObjArrayKlass or an
   455   // unloaded InstanceKlass.  Deal with both.
   455   // unloaded InstanceKlass.  Deal with both.
   456   if (name->byte_at(0) == '[') {
   456   if (name->byte_at(0) == '[') {
   457     // Decompose the name.'
   457     // Decompose the name.'
   458     FieldArrayInfo fd;
   458     FieldArrayInfo fd;
   459     BasicType element_type = FieldType::get_array_info(name->get_symbol(),
   459     BasicType element_type = FieldType::get_array_info(name->get_symbol(),
   475       assert(dimension > 1, "one dimensional type arrays are always loaded.");
   475       assert(dimension > 1, "one dimensional type arrays are always loaded.");
   476 
   476 
   477       // The type array itself takes care of one of the dimensions.
   477       // The type array itself takes care of one of the dimensions.
   478       dimension--;
   478       dimension--;
   479 
   479 
   480       // The element klass is a typeArrayKlass.
   480       // The element klass is a TypeArrayKlass.
   481       element_klass = ciTypeArrayKlass::make(element_type);
   481       element_klass = ciTypeArrayKlass::make(element_type);
   482     }
   482     }
   483     new_klass = new (arena()) ciObjArrayKlass(name, element_klass, dimension);
   483     new_klass = new (arena()) ciObjArrayKlass(name, element_klass, dimension);
   484   } else {
   484   } else {
   485     jobject loader_handle = NULL;
   485     jobject loader_handle = NULL;