< prev index next >

src/share/vm/gc/shared/collectedHeap.hpp

Print this page
rev 12906 : [mq]: gc_interface

*** 91,104 **** static int _fire_out_of_memory_count; #endif GCHeapLog* _gc_heap_log; - // Used in support of ReduceInitialCardMarks; only consulted if COMPILER2 - // or INCLUDE_JVMCI is being used - bool _defer_initial_card_mark; - MemRegion _reserved; protected: BarrierSet* _barrier_set; bool _is_gc_active; --- 91,100 ----
*** 214,223 **** --- 210,223 ---- virtual void post_initialize() = 0; // Stop any onging concurrent work and prepare for exit. virtual void stop() {} + // Stop and resume concurrent GC threads interfering with safepoint operations + virtual void safepoint_synchronize_begin() {} + virtual void safepoint_synchronize_end() {} + void initialize_reserved_region(HeapWord *start, HeapWord *end); MemRegion reserved_region() const { return _reserved; } address base() const { return (address)reserved_region().start(); } virtual size_t capacity() const = 0;
*** 389,445 **** // The amount of used space for thread-local allocation buffers for the given thread. virtual size_t tlab_used(Thread *thr) const = 0; virtual size_t max_tlab_size() const; // An estimate of the maximum allocation that could be performed // for thread-local allocation buffers without triggering any // collection or expansion activity. virtual size_t unsafe_max_tlab_alloc(Thread *thr) const { guarantee(false, "thread-local allocation buffers not supported"); return 0; } - // 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. If such permission - // is granted for this heap type, the compiler promises to call - // defer_store_barrier() below on any slow path allocation of - // a new object for which such initializing store barriers will - // have been elided. - virtual bool can_elide_tlab_store_barriers() const = 0; - - // If a compiler is eliding store barriers for TLAB-allocated objects, - // there is probably a corresponding slow path which can produce - // an object allocated anywhere. The compiler's runtime support - // promises to call this function on such a slow-path-allocated - // object before performing initializations that have elided - // store barriers. Returns new_obj, or maybe a safer copy thereof. - virtual oop new_store_pre_barrier(JavaThread* thread, oop new_obj); - - // Answers whether an initializing store to a new object currently - // allocated at the given address doesn't need a store - // barrier. Returns "true" if it doesn't need an initializing - // store barrier; answers "false" if it does. - virtual bool can_elide_initializing_store_barrier(oop new_obj) = 0; - - // If a compiler is eliding store barriers for TLAB-allocated objects, - // we will be informed of a slow-path allocation by a call - // to new_store_pre_barrier() above. Such a call precedes the - // initialization of the object itself, and no post-store-barriers will - // be issued. Some heap types require that the barrier strictly follows - // the initializing stores. (This is currently implemented by deferring the - // barrier until the next slow-path allocation or gc-related safepoint.) - // This interface answers whether a particular heap type needs the card - // mark to be thus strictly sequenced after the stores. - virtual bool card_mark_must_follow_store() const = 0; - - // If the CollectedHeap was asked to defer a store barrier above, - // this informs it to flush such a deferred store barrier to the - // remembered set. - virtual void flush_deferred_store_barrier(JavaThread* thread); - // Perform a collection of the heap; intended for use in implementing // "System.gc". This probably implies as full a collection as the // "CollectedHeap" supports. virtual void collect(GCCause::Cause cause) = 0; --- 389,408 ---- // The amount of used space for thread-local allocation buffers for the given thread. virtual size_t tlab_used(Thread *thr) const = 0; virtual size_t max_tlab_size() const; + virtual void verify_nmethod_roots(nmethod* nmethod); + // An estimate of the maximum allocation that could be performed // for thread-local allocation buffers without triggering any // collection or expansion activity. virtual size_t unsafe_max_tlab_alloc(Thread *thr) const { guarantee(false, "thread-local allocation buffers not supported"); return 0; } // Perform a collection of the heap; intended for use in implementing // "System.gc". This probably implies as full a collection as the // "CollectedHeap" supports. virtual void collect(GCCause::Cause cause) = 0;
< prev index next >