--- old/src/share/vm/gc/shared/genCollectedHeap.hpp 2017-04-25 16:45:10.559173954 +0200 +++ new/src/share/vm/gc/shared/genCollectedHeap.hpp 2017-04-25 16:45:10.415173959 +0200 @@ -26,6 +26,7 @@ #define SHARE_VM_GC_SHARED_GENCOLLECTEDHEAP_HPP #include "gc/shared/adaptiveSizePolicy.hpp" +#include "gc/shared/cardTableModRefBS.hpp" #include "gc/shared/collectedHeap.hpp" #include "gc/shared/collectorPolicy.hpp" #include "gc/shared/generation.hpp" @@ -270,26 +271,6 @@ virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; virtual HeapWord* allocate_new_tlab(size_t size); - // Can a compiler initialize a new object without store barriers? - // This permission only extends from the creation of a new object - // via a TLAB up to the first subsequent safepoint. - virtual bool can_elide_tlab_store_barriers() const { - return true; - } - - virtual bool card_mark_must_follow_store() const { - return UseConcMarkSweepGC; - } - - // We don't need barriers for stores to objects in the - // young gen and, a fortiori, for initializing stores to - // objects therein. This applies to DefNew+Tenured and ParNew+CMS - // only and may need to be re-examined in case other - // kinds of collectors are implemented in the future. - virtual bool can_elide_initializing_store_barrier(oop new_obj) { - return is_in_young(new_obj); - } - // The "requestor" generation is performing some garbage collection // action for which it would be useful to have scratch space. The // requestor promises to allocate no more than "max_alloc_words" in any @@ -515,6 +496,12 @@ public: void stop(); + void safepoint_synchronize_begin(); + void safepoint_synchronize_end(); + + CardTableModRefBS *barrier_set() { + return barrier_set_cast(CollectedHeap::barrier_set()); + } }; #endif // SHARE_VM_GC_SHARED_GENCOLLECTEDHEAP_HPP