< prev index next >
src/share/vm/ci/ciTypeFlow.hpp
Print this page
@@ -339,18 +339,20 @@
void pop_array() {
assert(type_at_tos() == null_type() ||
type_at_tos()->is_array_klass(), "must be array type");
pop();
}
- // pop_objArray and pop_typeArray narrow the tos to ciObjArrayKlass
- // or ciTypeArrayKlass (resp.). In the rare case that an explicit
+ // pop_valueOrobjArray and pop_typeArray narrow the tos to ciObjArrayKlass,
+ // ciValueArrayKlass or ciTypeArrayKlass (resp.). In the rare case that an explicit
// null is popped from the stack, we return NULL. Caller beware.
- ciObjArrayKlass* pop_objArray() {
+ ciArrayKlass* pop_objOrValueArray() {
ciType* array = pop_value();
if (array == null_type()) return NULL;
- assert(array->is_obj_array_klass(), "must be object array type");
- return array->as_obj_array_klass();
+ // Value type arrays may contain oop or flattened representation
+ assert(array->is_obj_array_klass() || (ValueArrayFlatten && array->is_value_array_klass()),
+ "must be value or object array type");
+ return array->as_array_klass();
}
ciTypeArrayKlass* pop_typeArray() {
ciType* array = pop_value();
if (array == null_type()) return NULL;
assert(array->is_type_array_klass(), "must be prim array type");
@@ -360,11 +362,11 @@
push(null_type());
}
void do_null_assert(ciKlass* unloaded_klass);
// Helper convenience routines.
- void do_aaload(ciBytecodeStream* str);
+ void do_aload(ciBytecodeStream* str);
void do_checkcast(ciBytecodeStream* str);
void do_getfield(ciBytecodeStream* str);
void do_getstatic(ciBytecodeStream* str);
void do_invoke(ciBytecodeStream* str, bool has_receiver);
void do_jsr(ciBytecodeStream* str);
< prev index next >