< prev index next >

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

Print this page
rev 53608 : Epsilon + Mark-Compact

@@ -88,20 +88,22 @@
     return _space->is_in(p);
   }
 
   virtual bool is_scavengable(oop obj) {
     // No GC is going to happen, therefore no objects ever move.
-    return false;
+    // 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,11 +122,12 @@
   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; }
+  // 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,12 +148,21 @@
   }
 
   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 >