102 virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; 103 104 virtual void collect(GCCause::Cause cause); 105 virtual void do_full_collection(bool clear_all_soft_refs); 106 107 // Heap walking support 108 virtual void object_iterate(ObjectClosure* cl); 109 110 // Object pinning support: every object is implicitly pinned 111 virtual bool supports_object_pinning() const { return true; } 112 virtual oop pin_object(JavaThread* thread, oop obj) { return obj; } 113 virtual void unpin_object(JavaThread* thread, oop obj) { } 114 115 // No support for block parsing. 116 HeapWord* block_start(const void* addr) const { return NULL; } 117 bool block_is_obj(const HeapWord* addr) const { return false; } 118 119 // No GC threads 120 virtual void gc_threads_do(ThreadClosure* tc) const {} 121 122 // No nmethod handling 123 virtual void register_nmethod(nmethod* nm) {} 124 virtual void unregister_nmethod(nmethod* nm) {} 125 virtual void flush_nmethod(nmethod* nm) {} 126 virtual void verify_nmethod(nmethod* nm) {} 127 128 // No heap verification 129 virtual void prepare_for_verify() {} 130 virtual void verify(VerifyOption option) {} 131 132 virtual jlong millis_since_last_gc() { 133 // Report time since the VM start 134 return os::elapsed_counter() / NANOSECS_PER_MILLISEC; 135 } 136 137 MemRegion reserved_region() const { return _reserved; } 138 bool is_in_reserved(const void* addr) const { return _reserved.contains(addr); } 139 140 virtual void print_on(outputStream* st) const; 141 virtual void print_tracing_info() const; 142 virtual bool print_location(outputStream* st, void* addr) const; 143 144 private: 145 void print_heap_info(size_t used) const; 146 void print_metaspace_info() const; 147 148 }; 149 150 #endif // SHARE_GC_EPSILON_EPSILONHEAP_HPP | 102 virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; 103 104 virtual void collect(GCCause::Cause cause); 105 virtual void do_full_collection(bool clear_all_soft_refs); 106 107 // Heap walking support 108 virtual void object_iterate(ObjectClosure* cl); 109 110 // Object pinning support: every object is implicitly pinned 111 virtual bool supports_object_pinning() const { return true; } 112 virtual oop pin_object(JavaThread* thread, oop obj) { return obj; } 113 virtual void unpin_object(JavaThread* thread, oop obj) { } 114 115 // No support for block parsing. 116 HeapWord* block_start(const void* addr) const { return NULL; } 117 bool block_is_obj(const HeapWord* addr) const { return false; } 118 119 // No GC threads 120 virtual void gc_threads_do(ThreadClosure* tc) const {} 121 122 // Runs the given AbstractGangTask with the current active workers 123 // No workGang for EpsilonHeap, work serially with thread 0 124 virtual void run_task(AbstractGangTask* task) { task->work(0); } 125 126 // No nmethod handling 127 virtual void register_nmethod(nmethod* nm) {} 128 virtual void unregister_nmethod(nmethod* nm) {} 129 virtual void flush_nmethod(nmethod* nm) {} 130 virtual void verify_nmethod(nmethod* nm) {} 131 132 // No heap verification 133 virtual void prepare_for_verify() {} 134 virtual void verify(VerifyOption option) {} 135 136 virtual jlong millis_since_last_gc() { 137 // Report time since the VM start 138 return os::elapsed_counter() / NANOSECS_PER_MILLISEC; 139 } 140 141 MemRegion reserved_region() const { return _reserved; } 142 bool is_in_reserved(const void* addr) const { return _reserved.contains(addr); } 143 144 virtual void print_on(outputStream* st) const; 145 virtual void print_tracing_info() const; 146 virtual bool print_location(outputStream* st, void* addr) const; 147 148 149 private: 150 void print_heap_info(size_t used) const; 151 void print_metaspace_info() const; 152 153 }; 154 155 #endif // SHARE_GC_EPSILON_EPSILONHEAP_HPP |