< 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 >