162 }
163
164 // The array klass was unable to be made or the element klass was
165 // not loaded.
166 ciSymbol* array_name = construct_array_name(element_klass->name(), 1);
167 if (array_name == ciEnv::unloaded_cisymbol()) {
168 return ciEnv::unloaded_ciobjarrayklass();
169 }
170 return
171 CURRENT_ENV->get_unloaded_klass(element_klass, array_name)
172 ->as_obj_array_klass();
173 }
174
175 // ------------------------------------------------------------------
176 // ciObjArrayKlass::make
177 //
178 // Make an array klass corresponding to the specified primitive type.
179 ciObjArrayKlass* ciObjArrayKlass::make(ciKlass* element_klass) {
180 GUARDED_VM_ENTRY(return make_impl(element_klass);)
181 }
|
162 }
163
164 // The array klass was unable to be made or the element klass was
165 // not loaded.
166 ciSymbol* array_name = construct_array_name(element_klass->name(), 1);
167 if (array_name == ciEnv::unloaded_cisymbol()) {
168 return ciEnv::unloaded_ciobjarrayklass();
169 }
170 return
171 CURRENT_ENV->get_unloaded_klass(element_klass, array_name)
172 ->as_obj_array_klass();
173 }
174
175 // ------------------------------------------------------------------
176 // ciObjArrayKlass::make
177 //
178 // Make an array klass corresponding to the specified primitive type.
179 ciObjArrayKlass* ciObjArrayKlass::make(ciKlass* element_klass) {
180 GUARDED_VM_ENTRY(return make_impl(element_klass);)
181 }
182
183 ciKlass* ciObjArrayKlass::exact_klass() {
184 ciType* base = base_element_type();
185 if (base->is_instance_klass()) {
186 ciInstanceKlass* ik = base->as_instance_klass();
187 if (ik->exact_klass() != NULL) {
188 return this;
189 }
190 } else if (base->is_primitive_type()) {
191 return this;
192 }
193 return NULL;
194 }
|