< prev index next >
src/hotspot/share/gc/epsilon/epsilonHeap.hpp
Print this page
rev 53608 : Epsilon + Mark-Compact
*** 88,107 ****
return _space->is_in(p);
}
virtual bool is_scavengable(oop obj) {
// No GC is going to happen, therefore no objects ever move.
! return false;
}
virtual bool is_maximal_no_gc() const {
// No GC is going to happen. Return "we are at max", when we are about to fail.
return used() == capacity();
}
// Allocation
HeapWord* allocate_work(size_t size);
virtual HeapWord* mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded);
virtual HeapWord* allocate_new_tlab(size_t min_size,
size_t requested_size,
size_t* actual_size);
--- 88,109 ----
return _space->is_in(p);
}
virtual bool is_scavengable(oop obj) {
// No GC is going to happen, therefore no objects ever move.
! // Or are they... (evil laugh).
! return EpsilonWhyNotGCAnyway;
}
virtual bool is_maximal_no_gc() const {
// No GC is going to happen. Return "we are at max", when we are about to fail.
return used() == capacity();
}
// Allocation
HeapWord* allocate_work(size_t size);
+ HeapWord* allocate_or_collect_work(size_t size);
virtual HeapWord* mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded);
virtual HeapWord* allocate_new_tlab(size_t min_size,
size_t requested_size,
size_t* actual_size);
*** 120,130 ****
virtual void object_iterate(ObjectClosure* cl) {
safe_object_iterate(cl);
}
// Object pinning support: every object is implicitly pinned
! virtual bool supports_object_pinning() const { return true; }
virtual oop pin_object(JavaThread* thread, oop obj) { return obj; }
virtual void unpin_object(JavaThread* thread, oop obj) { }
// No support for block parsing.
virtual HeapWord* block_start(const void* addr) const { return NULL; }
--- 122,133 ----
virtual void object_iterate(ObjectClosure* cl) {
safe_object_iterate(cl);
}
// Object pinning support: every object is implicitly pinned
! // Or is it... (evil laugh)
! virtual bool supports_object_pinning() const { return !EpsilonWhyNotGCAnyway; }
virtual oop pin_object(JavaThread* thread, oop obj) { return obj; }
virtual void unpin_object(JavaThread* thread, oop obj) { }
// No support for block parsing.
virtual HeapWord* block_start(const void* addr) const { return NULL; }
*** 145,156 ****
--- 148,168 ----
}
virtual void print_on(outputStream* st) const;
virtual void print_tracing_info() const;
+ void entry_collect(GCCause::Cause cause);
+
private:
void print_heap_info(size_t used) const;
void print_metaspace_info() const;
+ void vmentry_collect(GCCause::Cause cause);
+
+ void do_roots(OopClosure* cl, bool everything);
+ void process_roots(OopClosure* cl) { do_roots(cl, false); }
+ void process_all_roots(OopClosure* cl) { do_roots(cl, true); }
+ void walk_heap(ObjectClosure* cl, bool only_marked);
+
};
#endif // SHARE_GC_EPSILON_EPSILONHEAP_HPP
< prev index next >