diff a/src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp --- a/src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.inline.hpp @@ -39,10 +39,11 @@ #include "gc/g1/g1RegionPinCache.inline.hpp" #include "gc/g1/g1RemSet.hpp" #include "gc/shared/collectedHeap.inline.hpp" #include "gc/shared/markBitMap.inline.hpp" #include "gc/shared/taskqueue.inline.hpp" +#include "oops/oop.inline.hpp" #include "oops/stackChunkOop.hpp" #include "runtime/threadSMR.inline.hpp" #include "utilities/bitMap.inline.hpp" inline bool G1STWIsAliveClosure::do_object_b(oop p) { @@ -73,10 +74,14 @@ cl->do_thread(list[i]); } } } +bool G1CollectedHeap::can_be_marked_through_immediately(oop obj) const { + return obj->is_array() && !obj->is_array_with_oops(); +} + G1GCPhaseTimes* G1CollectedHeap::phase_times() const { return _policy->phase_times(); } G1EvacStats* G1CollectedHeap::alloc_buffer_stats(G1HeapRegionAttr dest) {