--- old/src/share/vm/ci/ciArrayKlass.cpp 2017-01-09 14:53:18.578909277 +0100 +++ new/src/share/vm/ci/ciArrayKlass.cpp 2017-01-09 14:53:18.454909283 +0100 @@ -27,6 +27,7 @@ #include "ci/ciObjArrayKlass.hpp" #include "ci/ciTypeArrayKlass.hpp" #include "ci/ciUtilities.hpp" +#include "ci/ciValueArrayKlass.hpp" // ciArrayKlass // @@ -59,7 +60,7 @@ if (is_type_array_klass()) { return ciType::make(as_type_array_klass()->element_type()); } else { - return as_obj_array_klass()->element_klass()->as_klass(); + return element_klass()->as_klass(); } } @@ -99,6 +100,8 @@ ciArrayKlass* ciArrayKlass::make(ciType* element_type) { if (element_type->is_primitive_type()) { return ciTypeArrayKlass::make(element_type->basic_type()); + } else if (element_type->is_valuetype() && element_type->as_value_klass()->flatten_array()) { + return ciValueArrayKlass::make(element_type->as_klass()); } else { return ciObjArrayKlass::make(element_type->as_klass()); }