< prev index next >

src/hotspot/share/c1/c1_Instruction.cpp

Print this page

*** 27,36 **** --- 27,38 ---- #include "c1/c1_Instruction.hpp" #include "c1/c1_InstructionPrinter.hpp" #include "c1/c1_ValueStack.hpp" #include "ci/ciObjArrayKlass.hpp" #include "ci/ciTypeArrayKlass.hpp" + #include "ci/ciValueArrayKlass.hpp" + #include "ci/ciValueKlass.hpp" // Implementation of Instruction
*** 110,119 **** --- 112,133 ---- return t->as_klass()->exact_klass(); } return NULL; } + bool Instruction::is_flattened_array() const { + if (ValueArrayFlatten) { + ciType* type = declared_type(); + if (type != NULL && + type->is_value_array_klass() && + type->as_value_array_klass()->element_klass()->as_value_klass()->flatten_array()) { + return true; + } + } + + return false; + } #ifndef PRODUCT void Instruction::check_state(ValueStack* state) { if (state != NULL) { state->verify();
*** 221,230 **** --- 235,261 ---- ciType* NewInstance::declared_type() const { return exact_type(); } + Value NewValueTypeInstance::depends_on() { + if (_depends_on != this) { + if (_depends_on->as_NewValueTypeInstance() != NULL) { + return _depends_on->as_NewValueTypeInstance()->depends_on(); + } + } + return _depends_on; + } + + ciType* NewValueTypeInstance::exact_type() const { + return klass(); + } + + ciType* NewValueTypeInstance::declared_type() const { + return exact_type(); + } + ciType* CheckCast::declared_type() const { return klass(); } // Implementation of ArithmeticOp
< prev index next >