src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
Print this page
rev 6719 : imported patch fast-reclaim-main-patch
rev 6720 : imported patch fast-reclaim-alt1
rev 6721 : [mq]: fixes1
rev 6722 : [mq]: fixes-mikael2
*** 4667,4679 ****
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
assert(_worker_id == _par_scan_state->queue_num(), "sanity");
! G1FastCSetBiasedMappedArray::in_cset_state_t state = _g1->in_cset_state(obj);
! if (state == G1FastCSetBiasedMappedArray::InCSet) {
oop forwardee;
if (obj->is_forwarded()) {
forwardee = obj->forwardee();
} else {
forwardee = _par_scan_state->copy_to_survivor_space(obj);
--- 4667,4679 ----
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
assert(_worker_id == _par_scan_state->queue_num(), "sanity");
! G1CollectedHeap::in_cset_state_t state = _g1->in_cset_state(obj);
! if (state == G1CollectedHeap::InCSet) {
oop forwardee;
if (obj->is_forwarded()) {
forwardee = obj->forwardee();
} else {
forwardee = _par_scan_state->copy_to_survivor_space(obj);
*** 4688,4698 ****
if (barrier == G1BarrierKlass) {
do_klass_barrier(p, forwardee);
}
} else {
! if (state == G1FastCSetBiasedMappedArray::IsHumongous) {
_g1->set_humongous_is_live(obj);
}
// The object is not in collection set. If we're a root scanning
// closure during an initial mark pause then attempt to mark the object.
if (do_mark_object == G1MarkFromRoot) {
--- 4688,4698 ----
if (barrier == G1BarrierKlass) {
do_klass_barrier(p, forwardee);
}
} else {
! if (state == G1CollectedHeap::IsHumongous) {
_g1->set_humongous_is_live(obj);
}
// The object is not in collection set. If we're a root scanning
// closure during an initial mark pause then attempt to mark the object.
if (do_mark_object == G1MarkFromRoot) {
*** 5517,5536 ****
G1KeepAliveClosure(G1CollectedHeap* g1) : _g1(g1) {}
void do_oop(narrowOop* p) { guarantee(false, "Not needed"); }
void do_oop(oop* p) {
oop obj = *p;
! G1FastCSetBiasedMappedArray::in_cset_state_t cset_state = _g1->in_cset_state(obj);
! if (obj == NULL || cset_state == G1FastCSetBiasedMappedArray::InNeither) {
return;
}
! if (cset_state == G1FastCSetBiasedMappedArray::InCSet) {
assert( obj->is_forwarded(), "invariant" );
*p = obj->forwardee();
} else {
assert(!obj->is_forwarded(), "invariant" );
! assert(cset_state == G1FastCSetBiasedMappedArray::IsHumongous,
err_msg("Only allowed InCSet state is IsHumongous, but is %d", cset_state));
_g1->set_humongous_is_live(obj);
}
}
};
--- 5517,5536 ----
G1KeepAliveClosure(G1CollectedHeap* g1) : _g1(g1) {}
void do_oop(narrowOop* p) { guarantee(false, "Not needed"); }
void do_oop(oop* p) {
oop obj = *p;
! G1CollectedHeap::in_cset_state_t cset_state = _g1->in_cset_state(obj);
! if (obj == NULL || cset_state == G1CollectedHeap::InNeither) {
return;
}
! if (cset_state == G1CollectedHeap::InCSet) {
assert( obj->is_forwarded(), "invariant" );
*p = obj->forwardee();
} else {
assert(!obj->is_forwarded(), "invariant" );
! assert(cset_state == G1CollectedHeap::IsHumongous,
err_msg("Only allowed InCSet state is IsHumongous, but is %d", cset_state));
_g1->set_humongous_is_live(obj);
}
}
};