< prev index next >
src/hotspot/share/opto/callnode.cpp
Print this page
*** 1675,1684 ****
--- 1675,1692 ----
}
if (projs->catchall_catchproj != NULL) {
igvn->replace_node(projs->catchall_catchproj, phase->C->top());
}
if (projs->resproj[0] != NULL) {
+ // Remove MemBarStoreStore user as well
+ for (DUIterator_Fast imax, i = projs->resproj[0]->fast_outs(imax); i < imax; i++) {
+ MemBarStoreStoreNode* mb = projs->resproj[0]->fast_out(i)->isa_MemBarStoreStore();
+ if (mb != NULL && mb->outcnt() == 2) {
+ mb->remove(igvn);
+ --i; --imax;
+ }
+ }
igvn->replace_node(projs->resproj[0], phase->C->top());
}
igvn->replace_node(this, phase->C->top());
if (init != NULL) {
Node* ctrl_proj = init->proj_out_or_null(TypeFunc::Control);
*** 1694,1704 ****
}
return CallNode::Ideal(phase, can_reshape);
}
! Node *AllocateNode::make_ideal_mark(PhaseGVN *phase, Node* obj, Node* control, Node* mem) {
Node* mark_node = NULL;
// For now only enable fast locking for non-array types
if ((EnableValhalla || UseBiasedLocking) && Opcode() == Op_Allocate) {
Node* klass_node = in(AllocateNode::KlassNode);
Node* proto_adr = phase->transform(new AddPNode(klass_node, klass_node, phase->MakeConX(in_bytes(Klass::prototype_header_offset()))));
--- 1702,1712 ----
}
return CallNode::Ideal(phase, can_reshape);
}
! Node* AllocateNode::make_ideal_mark(PhaseGVN* phase, Node* control, Node* mem) {
Node* mark_node = NULL;
// For now only enable fast locking for non-array types
if ((EnableValhalla || UseBiasedLocking) && Opcode() == Op_Allocate) {
Node* klass_node = in(AllocateNode::KlassNode);
Node* proto_adr = phase->transform(new AddPNode(klass_node, klass_node, phase->MakeConX(in_bytes(Klass::prototype_header_offset()))));
< prev index next >