< prev index next >
src/share/vm/gc/g1/g1CollectedHeap.hpp
Print this page
rev 12906 : [mq]: gc_interface
*** 26,46 ****
#define SHARE_VM_GC_G1_G1COLLECTEDHEAP_HPP
#include "gc/g1/evacuationInfo.hpp"
#include "gc/g1/g1AllocationContext.hpp"
#include "gc/g1/g1BiasedArray.hpp"
#include "gc/g1/g1CollectionSet.hpp"
#include "gc/g1/g1CollectorState.hpp"
#include "gc/g1/g1ConcurrentMark.hpp"
#include "gc/g1/g1EdenRegions.hpp"
#include "gc/g1/g1EvacFailure.hpp"
#include "gc/g1/g1EvacStats.hpp"
#include "gc/g1/g1HeapVerifier.hpp"
#include "gc/g1/g1HRPrinter.hpp"
#include "gc/g1/g1InCSetState.hpp"
#include "gc/g1/g1MonitoringSupport.hpp"
! #include "gc/g1/g1SATBCardTableModRefBS.hpp"
#include "gc/g1/g1SurvivorRegions.hpp"
#include "gc/g1/g1YCTypes.hpp"
#include "gc/g1/hSpaceCounters.hpp"
#include "gc/g1/heapRegionManager.hpp"
#include "gc/g1/heapRegionSet.hpp"
--- 26,47 ----
#define SHARE_VM_GC_G1_G1COLLECTEDHEAP_HPP
#include "gc/g1/evacuationInfo.hpp"
#include "gc/g1/g1AllocationContext.hpp"
#include "gc/g1/g1BiasedArray.hpp"
+ #include "gc/g1/g1CardTable.hpp"
#include "gc/g1/g1CollectionSet.hpp"
#include "gc/g1/g1CollectorState.hpp"
#include "gc/g1/g1ConcurrentMark.hpp"
#include "gc/g1/g1EdenRegions.hpp"
#include "gc/g1/g1EvacFailure.hpp"
#include "gc/g1/g1EvacStats.hpp"
#include "gc/g1/g1HeapVerifier.hpp"
#include "gc/g1/g1HRPrinter.hpp"
#include "gc/g1/g1InCSetState.hpp"
#include "gc/g1/g1MonitoringSupport.hpp"
! #include "gc/g1/g1BarrierSet.hpp"
#include "gc/g1/g1SurvivorRegions.hpp"
#include "gc/g1/g1YCTypes.hpp"
#include "gc/g1/hSpaceCounters.hpp"
#include "gc/g1/heapRegionManager.hpp"
#include "gc/g1/heapRegionSet.hpp"
*** 957,966 ****
--- 958,969 ----
// maximum sizes and remembered and barrier sets
// specified by the policy object.
jint initialize();
virtual void stop();
+ virtual void safepoint_synchronize_begin();
+ virtual void safepoint_synchronize_end();
// Return the (conservative) maximum heap alignment for any G1 heap
static size_t conservative_max_heap_alignment();
// Does operations required after initialization has been done.
*** 1159,1170 ****
return _hrm.reserved();
}
virtual bool is_in_closed_subset(const void* p) const;
! G1SATBCardTableLoggingModRefBS* g1_barrier_set() {
! return barrier_set_cast<G1SATBCardTableLoggingModRefBS>(barrier_set());
}
// Iteration functions.
// Iterate over all objects, calling "cl.do_object" on each.
--- 1162,1177 ----
return _hrm.reserved();
}
virtual bool is_in_closed_subset(const void* p) const;
! G1BarrierSet* g1_barrier_set() {
! return barrier_set_cast<G1BarrierSet>(barrier_set());
! }
!
! G1CardTable* g1_card_table() {
! return static_cast<G1CardTable*>(g1_barrier_set()->card_table());
}
// Iteration functions.
// Iterate over all objects, calling "cl.do_object" on each.
*** 1250,1291 ****
size_t tlab_capacity(Thread* ignored) const;
size_t tlab_used(Thread* ignored) const;
size_t max_tlab_size() const;
size_t unsafe_max_tlab_alloc(Thread* ignored) const;
- // 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. G1, like CMS, allows this, but should be
- // ready to provide a compensating write barrier as necessary
- // if that storage came out of a non-young region. The efficiency
- // of this implementation depends crucially on being able to
- // answer very efficiently in constant time whether a piece of
- // storage in the heap comes from a young region or not.
- // See ReduceInitialCardMarks.
- virtual bool can_elide_tlab_store_barriers() const {
- return true;
- }
-
- virtual bool card_mark_must_follow_store() const {
- return true;
- }
-
inline bool is_in_young(const oop obj);
virtual bool is_scavengable(const void* addr);
- // We don't need barriers for initializing stores to objects
- // in the young gen: for the SATB pre-barrier, there is no
- // pre-value that needs to be remembered; for the remembered-set
- // update logging post-barrier, we don't maintain remembered set
- // information for young gen objects.
- virtual inline bool can_elide_initializing_store_barrier(oop new_obj);
-
// Returns "true" iff the given word_size is "very large".
static bool is_humongous(size_t word_size) {
// Note this has to be strictly greater-than as the TLABs
// are capped at the humongous threshold and we want to
// ensure that we don't try to allocate a TLAB as
--- 1257,1270 ----
*** 1441,1450 ****
--- 1420,1431 ----
// WhiteBox testing support.
virtual bool supports_concurrent_phase_control() const;
virtual const char* const* concurrent_phases() const;
virtual bool request_concurrent_phase(const char* phase);
+ void verify_nmethod_roots(nmethod* nmethod);
+
// The methods below are here for convenience and dispatch the
// appropriate method depending on value of the given VerifyOption
// parameter. The values for that parameter, and their meanings,
// are the same as those above.
< prev index next >