< prev index next >

src/hotspot/share/gc/epsilon/epsilonHeap.hpp

Print this page
*** 27,10 ***
--- 27,11 ---
  #define SHARE_GC_EPSILON_EPSILONHEAP_HPP
  
  #include "gc/epsilon/epsilonBarrierSet.hpp"
  #include "gc/epsilon/epsilonMonitoringSupport.hpp"
  #include "gc/shared/collectedHeap.hpp"
+ #include "gc/shared/markBitMap.hpp"
  #include "gc/shared/space.hpp"
  #include "memory/virtualspace.hpp"
  #include "services/memoryManager.hpp"
  
  class EpsilonHeap : public CollectedHeap {

*** 45,10 ***
--- 46,12 ---
    size_t _step_counter_update;
    size_t _step_heap_print;
    int64_t _decay_time_ns;
    volatile size_t _last_counter_update;
    volatile size_t _last_heap_print;
+   MemRegion  _bitmap_region;
+   MarkBitMap _bitmap;
  
    void print_tracing_info() const override;
    void stop() override {};
  
  public:

*** 82,10 ***
--- 85,11 ---
  
    bool requires_barriers(stackChunkOop obj) const override { return false; }
  
    // Allocation
    HeapWord* allocate_work(size_t size, bool verbose = true);
+   HeapWord* allocate_or_collect_work(size_t size, bool verbose = true);
    HeapWord* mem_allocate(size_t size) override;
    HeapWord* allocate_new_tlab(size_t min_size,
                                size_t requested_size,
                                size_t* actual_size) override;
  

*** 100,12 ***
  
    // Heap walking support
    void object_iterate(ObjectClosure* cl) override;
  
    // Object pinning support: every object is implicitly pinned
!   void pin_object(JavaThread* thread, oop obj) override { }
!   void unpin_object(JavaThread* thread, oop obj) override { }
  
    // No support for block parsing.
    HeapWord* block_start(const void* addr) const { return nullptr;  }
    bool block_is_obj(const HeapWord* addr) const { return false; }
  
--- 104,12 ---
  
    // Heap walking support
    void object_iterate(ObjectClosure* cl) override;
  
    // Object pinning support: every object is implicitly pinned
!   void pin_object(JavaThread* thread, oop obj) override;
!   void unpin_object(JavaThread* thread, oop obj) override;
  
    // No support for block parsing.
    HeapWord* block_start(const void* addr) const { return nullptr;  }
    bool block_is_obj(const HeapWord* addr) const { return false; }
  

*** 130,12 ***
--- 134,19 ---
  
    void print_heap_on(outputStream* st) const override;
    void print_gc_on(outputStream* st) const override {}
    bool print_location(outputStream* st, void* addr) const override;
  
+   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 process_roots(OopClosure* cl, bool update);
+   void walk_bitmap(ObjectClosure* cl);
+ 
  };
  
  #endif // SHARE_GC_EPSILON_EPSILONHEAP_HPP
< prev index next >