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()) { |