src/share/vm/opto/escape.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/escape.cpp Tue Jul 21 21:18:50 2015
--- new/src/share/vm/opto/escape.cpp Tue Jul 21 21:18:50 2015
*** 524,534 ****
--- 524,534 ----
} else {
// Ignore copy the displaced header to the BoxNode (OSR compilation).
if (adr->is_BoxLock())
break;
// Stored value escapes in unsafe access.
! if ((opcode == Op_StoreP) && (adr_type == TypeRawPtr::BOTTOM)) {
! if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
// Pointer stores in G1 barriers looks like unsafe access.
// Ignore such stores to be able scalar replace non-escaping
// allocations.
if (UseG1GC && adr->is_AddP()) {
Node* base = get_addp_base(adr);
*** 538,552 ****
--- 538,552 ----
Node* tls = get_addp_base(adr);
if (tls->Opcode() == Op_ThreadLocal) {
int offs = (int)igvn->find_intptr_t_con(adr->in(AddPNode::Offset), Type::OffsetBot);
if (offs == in_bytes(JavaThread::satb_mark_queue_offset() +
PtrQueue::byte_offset_of_buf())) {
! break; // G1 pre barier previous oop value store.
! break; // G1 pre barrier previous oop value store.
}
if (offs == in_bytes(JavaThread::dirty_card_queue_offset() +
PtrQueue::byte_offset_of_buf())) {
! break; // G1 post barier card address store.
! break; // G1 post barrier card address store.
}
}
}
}
delayed_worklist->push(n); // Process unsafe access later.
*** 723,733 ****
--- 723,733 ----
Node *val = n->in(MemNode::ValueIn);
PointsToNode* ptn = ptnode_adr(val->_idx);
assert(ptn != NULL, "node should be registered");
add_edge(adr_ptn, ptn);
break;
! } else if ((opcode == Op_StoreP) && (adr_type == TypeRawPtr::BOTTOM)) {
! } else if ((opcode == Op_StoreP) && adr_type->isa_rawptr()) {
// Stored value escapes in unsafe access.
Node *val = n->in(MemNode::ValueIn);
PointsToNode* ptn = ptnode_adr(val->_idx);
assert(ptn != NULL, "node should be registered");
set_escape_state(ptn, PointsToNode::GlobalEscape);
src/share/vm/opto/escape.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File