< prev index next >

src/share/vm/gc/serial/markSweep.inline.hpp

Print this page
rev 13365 : [mq]: review_update_1

*** 24,40 **** --- 24,57 ---- #ifndef SHARE_VM_GC_SERIAL_MARKSWEEP_INLINE_HPP #define SHARE_VM_GC_SERIAL_MARKSWEEP_INLINE_HPP #include "gc/serial/markSweep.hpp" + #include "memory/metaspaceShared.hpp" #include "memory/universe.hpp" #include "oops/markOop.inline.hpp" #include "oops/oop.inline.hpp" #if INCLUDE_ALL_GCS #include "gc/g1/g1Allocator.inline.hpp" #endif // INCLUDE_ALL_GCS + inline bool MarkSweep::is_closed_archive_object(oop object) { + #if INCLUDE_ALL_GCS + return G1ArchiveAllocator::is_closed_archive_object(object); + #else + return false; + #endif + } + + inline bool MarkSweep::is_open_archive_object(oop object) { + #if INCLUDE_ALL_GCS + return G1ArchiveAllocator::is_open_archive_object(object); + #else + return false; + #endif + } + inline bool MarkSweep::is_archive_object(oop object) { #if INCLUDE_ALL_GCS return G1ArchiveAllocator::is_archive_object(object); #else return false;
*** 50,67 **** if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); assert(Universe::heap()->is_in(obj), "should be in heap"); oop new_obj = oop(obj->mark()->decode_pointer()); assert(is_archive_object(obj) || // no forwarding of archive objects new_obj != NULL || // is forwarding ptr? obj->mark() == markOopDesc::prototype() || // not gc marked? (UseBiasedLocking && obj->mark()->has_bias_pattern()), // not gc marked? "should be forwarded"); if (new_obj != NULL) { ! if (!is_archive_object(obj)) { assert(Universe::heap()->is_in_reserved(new_obj), "should be in object space"); oopDesc::encode_store_heap_oop_not_null(p, new_obj); } } --- 67,94 ---- if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); assert(Universe::heap()->is_in(obj), "should be in heap"); oop new_obj = oop(obj->mark()->decode_pointer()); + assert(is_archive_object(obj) || // no forwarding of archive objects new_obj != NULL || // is forwarding ptr? obj->mark() == markOopDesc::prototype() || // not gc marked? (UseBiasedLocking && obj->mark()->has_bias_pattern()), // not gc marked? "should be forwarded"); + + #ifndef PRODUCT + // open_archive objects are marked by GC. Their mark should + // not have forwarding ptr. + if (is_open_archive_object(obj)) { + assert(new_obj == NULL, "archive heap object has forwarding ptr"); + } + #endif + if (new_obj != NULL) { ! if (!is_closed_archive_object(obj)) { assert(Universe::heap()->is_in_reserved(new_obj), "should be in object space"); oopDesc::encode_store_heap_oop_not_null(p, new_obj); } }
< prev index next >