< prev index next >
src/share/vm/opto/escape.cpp
Print this page
rev 10535 : incremental inlining fixes
@@ -2062,12 +2062,12 @@
if (find_second_addp(n, n->in(AddPNode::Base)) == NULL) {
bt = T_OBJECT;
}
}
} else if (offset != oopDesc::klass_offset_in_bytes()) {
- if (adr_type->isa_instptr()) {
- ciField* field = _compile->alias_type(adr_type->isa_instptr())->field();
+ if (adr_type->isa_instptr() || adr_type->isa_valuetypeptr()) {
+ ciField* field = _compile->alias_type(adr_type->is_ptr())->field();
if (field != NULL) {
bt = field->layout_type();
} else {
// Check for unsafe oop field access
if (n->has_out_with(Op_StoreP, Op_LoadP, Op_StoreN, Op_LoadN)) {
@@ -2992,11 +2992,11 @@
igvn->hash_delete(n);
igvn->set_type(n, tinst);
n->raise_bottom_type(tinst);
igvn->hash_insert(n);
record_for_optimizer(n);
- if (alloc->is_Allocate() && (t->isa_instptr() || t->isa_aryptr())) {
+ if (alloc->is_Allocate() && (t->isa_instptr() || t->isa_aryptr() || t->isa_valuetypeptr())) {
// First, put on the worklist all Field edges from Connection Graph
// which is more accurate than putting immediate users from Ideal Graph.
for (EdgeIterator e(ptn); e.has_next(); e.next()) {
PointsToNode* tgt = e.get();
< prev index next >