< prev index next >
src/share/vm/gc/shared/collectedHeap.hpp
Print this page
@@ -75,10 +75,11 @@
//
// CollectedHeap
// GenCollectedHeap
// G1CollectedHeap
+// ShenandoahHeap
// ParallelScavengeHeap
//
class CollectedHeap : public CHeapObj<mtInternal> {
friend class VMStructs;
friend class IsGCActiveMark; // Block structured external access to _is_gc_active
@@ -183,19 +184,22 @@
public:
enum Name {
GenCollectedHeap,
ParallelScavengeHeap,
- G1CollectedHeap
+ G1CollectedHeap,
+ ShenandoahHeap
};
static inline size_t filler_array_max_size() {
return _filler_array_max_size;
}
virtual Name kind() const = 0;
+ virtual HeapWord* tlab_post_allocation_setup(HeapWord* obj);
+
/**
* Returns JNI error code JNI_ENOMEM if memory could not be allocated,
* and JNI_OK on success.
*/
virtual jint initialize() = 0;
@@ -296,10 +300,16 @@
inline static oop array_allocate_nozero(KlassHandle klass, int size, int length, TRAPS);
inline static void post_allocation_install_obj_klass(KlassHandle klass,
oop obj);
+ virtual uint oop_extra_words();
+
+#ifndef CC_INTERP
+ virtual void compile_prepare_oop(MacroAssembler* masm, Register obj);
+#endif
+
// Raw memory allocation facilities
// The obj and array allocate methods are covers for these methods.
// mem_allocate() should never be
// called to allocate TLABs, only individual objects.
virtual HeapWord* mem_allocate(size_t size,
@@ -568,10 +578,16 @@
void trace_heap_after_gc(const GCTracer* gc_tracer);
// Heap verification
virtual void verify(bool silent, VerifyOption option) = 0;
+ // Shut down all GC workers and other GC related threads.
+ virtual void shutdown();
+
+ // Accumulate additional statistics from GCLABs.
+ virtual void accumulate_statistics_all_gclabs();
+
// Non product verification and debugging.
#ifndef PRODUCT
// Support for PromotionFailureALot. Return true if it's time to cause a
// promotion failure. The no-argument version uses
// this->_promotion_failure_alot_count as the counter.
@@ -601,10 +617,14 @@
jbyte* accuracy,
jint len) {
return false;
}
+ virtual bool is_obj_ill(const oop obj) const {
+ return true;
+ }
+
/////////////// Unit tests ///////////////
NOT_PRODUCT(static void test_is_in();)
};
< prev index next >