< prev index next > src/hotspot/share/opto/parse2.cpp
Print this page
Node* array = pop(); // the array itself
if (elemtype == TypeInt::BOOL) {
bt = T_BOOLEAN;
}
+
+ if (DoPartialEscapeAnalysis && bt == T_OBJECT) {
+ PartialEscapeAnalysis* pea = PEA();
+ PEAState& as = jvms()->alloc_state();
+ VirtualState* obj_vs = as.as_virtual(pea, val); // obj is tracked and Virtual
+ VirtualState* ary_vs = as.as_virtual(pea, array); // array is not-tracked or Escaped
+
+ if (ary_vs == nullptr && obj_vs != nullptr) {
+ val = as.materialize(this, val);
+ }
+ }
const TypeAryPtr* adr_type = TypeAryPtr::get_array_body_type(bt);
access_store_at(array, adr, adr_type, val, elemtype, bt, MO_UNORDERED | IN_HEAP | IS_ARRAY);
}
< prev index next >