hotspot/src/share/vm/ci/ciObjectFactory.cpp
changeset 4571 80b553bddc26
parent 4567 7fc02fbe5c7a
child 5420 586d3988e72b
equal deleted inserted replaced
4569:f372ea9e5ed4 4571:80b553bddc26
   142     get(Universe::typeArrayKlassKlassObj())
   142     get(Universe::typeArrayKlassKlassObj())
   143       ->as_type_array_klass_klass();
   143       ->as_type_array_klass_klass();
   144   ciEnv::_obj_array_klass_klass_instance =
   144   ciEnv::_obj_array_klass_klass_instance =
   145     get(Universe::objArrayKlassKlassObj())
   145     get(Universe::objArrayKlassKlassObj())
   146       ->as_obj_array_klass_klass();
   146       ->as_obj_array_klass_klass();
   147   ciEnv::_ArrayStoreException =
   147 
   148     get(SystemDictionary::ArrayStoreException_klass())
   148 #define WK_KLASS_DEFN(name, ignore_s, opt)                              \
   149       ->as_instance_klass();
   149   if (SystemDictionary::name() != NULL) \
   150   ciEnv::_Class =
   150     ciEnv::_##name = get(SystemDictionary::name())->as_instance_klass();
   151     get(SystemDictionary::class_klass())
   151 
   152       ->as_instance_klass();
   152   WK_KLASSES_DO(WK_KLASS_DEFN)
   153   ciEnv::_ClassCastException =
   153 #undef WK_KLASS_DEFN
   154     get(SystemDictionary::ClassCastException_klass())
       
   155       ->as_instance_klass();
       
   156   if (EnableInvokeDynamic) {
       
   157     ciEnv::_InvokeDynamic =
       
   158       get(SystemDictionary::InvokeDynamic_klass())->as_instance_klass();
       
   159   }
       
   160   ciEnv::_Object =
       
   161     get(SystemDictionary::object_klass())
       
   162       ->as_instance_klass();
       
   163   ciEnv::_Throwable =
       
   164     get(SystemDictionary::throwable_klass())
       
   165       ->as_instance_klass();
       
   166   ciEnv::_Thread =
       
   167     get(SystemDictionary::thread_klass())
       
   168       ->as_instance_klass();
       
   169   ciEnv::_OutOfMemoryError =
       
   170     get(SystemDictionary::OutOfMemoryError_klass())
       
   171       ->as_instance_klass();
       
   172   ciEnv::_String =
       
   173     get(SystemDictionary::string_klass())
       
   174       ->as_instance_klass();
       
   175   ciEnv::_StringBuffer =
       
   176     get(SystemDictionary::stringBuffer_klass())
       
   177       ->as_instance_klass();
       
   178   ciEnv::_StringBuilder =
       
   179     get(SystemDictionary::StringBuilder_klass())
       
   180       ->as_instance_klass();
       
   181   ciEnv::_Integer =
       
   182     get(SystemDictionary::int_klass())
       
   183       ->as_instance_klass();
       
   184 
   154 
   185   for (int len = -1; len != _ci_objects->length(); ) {
   155   for (int len = -1; len != _ci_objects->length(); ) {
   186     len = _ci_objects->length();
   156     len = _ci_objects->length();
   187     for (int i2 = 0; i2 < len; i2++) {
   157     for (int i2 = 0; i2 < len; i2++) {
   188       ciObject* obj = _ci_objects->at(i2);
   158       ciObject* obj = _ci_objects->at(i2);
   586   // Thus, there might be a matching perm object in the table.
   556   // Thus, there might be a matching perm object in the table.
   587   // If there is, this probe must find it.
   557   // If there is, this probe must find it.
   588   if (key->is_perm() && _non_perm_count == 0) {
   558   if (key->is_perm() && _non_perm_count == 0) {
   589     return emptyBucket;
   559     return emptyBucket;
   590   } else if (key->is_instance()) {
   560   } else if (key->is_instance()) {
   591     if (key->klass() == SystemDictionary::class_klass()) {
   561     if (key->klass() == SystemDictionary::Class_klass()) {
   592       // class mirror instances are always perm
   562       // class mirror instances are always perm
   593       return emptyBucket;
   563       return emptyBucket;
   594     }
   564     }
   595     // fall through to probe
   565     // fall through to probe
   596   } else if (key->is_array()) {
   566   } else if (key->is_array()) {