< prev index next >
src/hotspot/share/opto/shenandoahSupport.cpp
Print this page
rev 50076 : Fold Partial GC into Traversal GC
*** 579,589 ****
}
if (in1->Opcode() != Op_AndI) {
return false;
}
in2 = in1->in(2);
! if (in2->find_int_con(-1) != (ShenandoahHeap::EVACUATION | ShenandoahHeap::PARTIAL | ShenandoahHeap::TRAVERSAL)) {
return false;
}
in1 = in1->in(1);
return is_gc_state_load(in1);
--- 579,589 ----
}
if (in1->Opcode() != Op_AndI) {
return false;
}
in2 = in1->in(2);
! if (in2->find_int_con(-1) != (ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL)) {
return false;
}
in1 = in1->in(1);
return is_gc_state_load(in1);
*** 3606,3616 ****
debug_only(gc_state_adr_type = phase->C->get_adr_type(gc_state_idx));
Node* gc_state = new LoadUBNode(ctrl, raw_mem, gc_state_addr, gc_state_adr_type, TypeInt::BYTE, MemNode::unordered);
phase->register_new_node(gc_state, ctrl);
! Node* evacuation_in_progress = new AndINode(gc_state, phase->igvn().intcon(ShenandoahHeap::EVACUATION | ShenandoahHeap::PARTIAL | ShenandoahHeap::TRAVERSAL));
phase->register_new_node(evacuation_in_progress, ctrl);
Node* evacuation_in_progress_cmp = new CmpINode(evacuation_in_progress, phase->igvn().zerocon(T_INT));
phase->register_new_node(evacuation_in_progress_cmp, ctrl);
Node* evacuation_in_progress_test = new BoolNode(evacuation_in_progress_cmp, BoolTest::ne);
phase->register_new_node(evacuation_in_progress_test, ctrl);
--- 3606,3616 ----
debug_only(gc_state_adr_type = phase->C->get_adr_type(gc_state_idx));
Node* gc_state = new LoadUBNode(ctrl, raw_mem, gc_state_addr, gc_state_adr_type, TypeInt::BYTE, MemNode::unordered);
phase->register_new_node(gc_state, ctrl);
! Node* evacuation_in_progress = new AndINode(gc_state, phase->igvn().intcon(ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL));
phase->register_new_node(evacuation_in_progress, ctrl);
Node* evacuation_in_progress_cmp = new CmpINode(evacuation_in_progress, phase->igvn().zerocon(T_INT));
phase->register_new_node(evacuation_in_progress_cmp, ctrl);
Node* evacuation_in_progress_test = new BoolNode(evacuation_in_progress_cmp, BoolTest::ne);
phase->register_new_node(evacuation_in_progress_test, ctrl);
< prev index next >