< prev index next >

src/hotspot/share/c1/c1_Instruction.cpp

Print this page

*** 145,155 **** } return false; } ! bool Instruction::maybe_flattened_array() const { if (ValueArrayFlatten) { ciType* type = declared_type(); if (type != NULL) { if (type->is_value_array_klass()) { ciValueKlass* element_klass = type->as_value_array_klass()->element_klass()->as_value_klass(); --- 145,155 ---- } return false; } ! bool Instruction::maybe_flattened_array() { if (ValueArrayFlatten) { ciType* type = declared_type(); if (type != NULL) { if (type->is_value_array_klass()) { ciValueKlass* element_klass = type->as_value_array_klass()->element_klass()->as_value_klass();
*** 165,174 **** --- 165,178 ---- // (ValueType[] <: <any interface>[]) // We will add a runtime check for flat-ness. return true; } } + } else if (as_Phi() != NULL) { + // Type info gets lost during Phi merging, but we might be storing into a + // flattened array, so we should do a runtime check. + return true; } } return false; }
< prev index next >