< prev index next >
src/hotspot/share/ci/ciValueArrayKlass.cpp
Print this page
@@ -53,10 +53,18 @@
if (!ciObjectFactory::is_initialized()) {
assert(_element_klass->is_java_lang_Object(), "only arrays of object are shared");
}
}
+ciValueArrayKlass::ciValueArrayKlass(ciSymbol* array_name,
+ ciValueKlass* base_element_klass,
+ int dimension)
+ : ciArrayKlass(array_name, dimension, T_VALUETYPE) {
+ _base_element_klass = base_element_klass;
+ _element_klass = base_element_klass;
+}
+
// ------------------------------------------------------------------
// ciValueArrayKlass::element_klass
//
// What is the one-level element type of this array?
ciKlass* ciValueArrayKlass::element_klass() {
@@ -146,13 +154,20 @@
return NULL;
}
return CURRENT_THREAD_ENV->get_value_array_klass(array);
}
- // TODO handle this
- guarantee(false, "klass not loaded");
- return NULL;
+ // The array klass was unable to be made or the element klass was
+ // not loaded.
+ ciSymbol* array_name = construct_array_name(element_klass->name(), 1);
+ if (array_name == ciEnv::unloaded_cisymbol()) {
+ //return ciEnv::unloaded_ciobjarrayklass();
+ assert(0, "FIXME");
+ }
+ return
+ CURRENT_ENV->get_unloaded_klass(element_klass, array_name, false)
+ ->as_value_array_klass();
}
// ------------------------------------------------------------------
// ciValueArrayKlass::make
//
< prev index next >