< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp

Print this page
rev 57511 : [mq]: metaspace-improvement


  15  * 2 along with this work; if not, write to the Free Software Foundation,
  16  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17  *
  18  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19  * or visit www.oracle.com if you need additional information or have any
  20  * questions.
  21  *
  22  */
  23 
  24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHHEAP_HPP
  25 #define SHARE_GC_SHENANDOAH_SHENANDOAHHEAP_HPP
  26 
  27 #include "gc/shared/markBitMap.hpp"
  28 #include "gc/shared/softRefPolicy.hpp"
  29 #include "gc/shared/collectedHeap.hpp"
  30 #include "gc/shenandoah/shenandoahAsserts.hpp"
  31 #include "gc/shenandoah/shenandoahAllocRequest.hpp"
  32 #include "gc/shenandoah/shenandoahLock.hpp"
  33 #include "gc/shenandoah/shenandoahEvacOOMHandler.hpp"
  34 #include "gc/shenandoah/shenandoahSharedVariables.hpp"

  35 #include "services/memoryManager.hpp"
  36 
  37 class ConcurrentGCTimer;
  38 class ReferenceProcessor;
  39 class ShenandoahAllocTracker;
  40 class ShenandoahCollectorPolicy;
  41 class ShenandoahControlThread;
  42 class ShenandoahGCSession;
  43 class ShenandoahGCStateResetter;
  44 class ShenandoahHeuristics;
  45 class ShenandoahMarkingContext;
  46 class ShenandoahMode;
  47 class ShenandoahPhaseTimings;
  48 class ShenandoahHeap;
  49 class ShenandoahHeapRegion;
  50 class ShenandoahHeapRegionClosure;
  51 class ShenandoahCollectionSet;
  52 class ShenandoahFreeSet;
  53 class ShenandoahConcurrentMark;
  54 class ShenandoahMarkCompact;


 564   // Shenandoah supports per-object (per-region) pinning
 565   bool supports_object_pinning() const { return true; }
 566 
 567   oop pin_object(JavaThread* thread, oop obj);
 568   void unpin_object(JavaThread* thread, oop obj);
 569 
 570 // ---------- Allocation support
 571 //
 572 private:
 573   HeapWord* allocate_memory_under_lock(ShenandoahAllocRequest& request, bool& in_new_region);
 574   inline HeapWord* allocate_from_gclab(Thread* thread, size_t size);
 575   HeapWord* allocate_from_gclab_slow(Thread* thread, size_t size);
 576   HeapWord* allocate_new_gclab(size_t min_size, size_t word_size, size_t* actual_size);
 577   void retire_and_reset_gclabs();
 578 
 579 public:
 580   HeapWord* allocate_memory(ShenandoahAllocRequest& request);
 581   HeapWord* mem_allocate(size_t size, bool* what);
 582   MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
 583                                                size_t size,
 584                                                Metaspace::MetadataType mdtype);
 585 
 586   void notify_mutator_alloc_words(size_t words, bool waste);
 587 
 588   // Shenandoah supports TLAB allocation
 589   bool supports_tlab_allocation() const { return true; }
 590 
 591   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size);
 592   size_t tlab_capacity(Thread *thr) const;
 593   size_t unsafe_max_tlab_alloc(Thread *thread) const;
 594   size_t max_tlab_size() const;
 595   size_t tlab_used(Thread* ignored) const;
 596 
 597   void resize_tlabs();
 598 
 599   void ensure_parsability(bool retire_tlabs);
 600   void make_parsable(bool retire_tlabs);
 601 
 602 // ---------- Marking support
 603 //
 604 private:




  15  * 2 along with this work; if not, write to the Free Software Foundation,
  16  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  17  *
  18  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  19  * or visit www.oracle.com if you need additional information or have any
  20  * questions.
  21  *
  22  */
  23 
  24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHHEAP_HPP
  25 #define SHARE_GC_SHENANDOAH_SHENANDOAHHEAP_HPP
  26 
  27 #include "gc/shared/markBitMap.hpp"
  28 #include "gc/shared/softRefPolicy.hpp"
  29 #include "gc/shared/collectedHeap.hpp"
  30 #include "gc/shenandoah/shenandoahAsserts.hpp"
  31 #include "gc/shenandoah/shenandoahAllocRequest.hpp"
  32 #include "gc/shenandoah/shenandoahLock.hpp"
  33 #include "gc/shenandoah/shenandoahEvacOOMHandler.hpp"
  34 #include "gc/shenandoah/shenandoahSharedVariables.hpp"
  35 #include "memory/metaspace/metaspaceEnums.hpp"
  36 #include "services/memoryManager.hpp"
  37 
  38 class ConcurrentGCTimer;
  39 class ReferenceProcessor;
  40 class ShenandoahAllocTracker;
  41 class ShenandoahCollectorPolicy;
  42 class ShenandoahControlThread;
  43 class ShenandoahGCSession;
  44 class ShenandoahGCStateResetter;
  45 class ShenandoahHeuristics;
  46 class ShenandoahMarkingContext;
  47 class ShenandoahMode;
  48 class ShenandoahPhaseTimings;
  49 class ShenandoahHeap;
  50 class ShenandoahHeapRegion;
  51 class ShenandoahHeapRegionClosure;
  52 class ShenandoahCollectionSet;
  53 class ShenandoahFreeSet;
  54 class ShenandoahConcurrentMark;
  55 class ShenandoahMarkCompact;


 565   // Shenandoah supports per-object (per-region) pinning
 566   bool supports_object_pinning() const { return true; }
 567 
 568   oop pin_object(JavaThread* thread, oop obj);
 569   void unpin_object(JavaThread* thread, oop obj);
 570 
 571 // ---------- Allocation support
 572 //
 573 private:
 574   HeapWord* allocate_memory_under_lock(ShenandoahAllocRequest& request, bool& in_new_region);
 575   inline HeapWord* allocate_from_gclab(Thread* thread, size_t size);
 576   HeapWord* allocate_from_gclab_slow(Thread* thread, size_t size);
 577   HeapWord* allocate_new_gclab(size_t min_size, size_t word_size, size_t* actual_size);
 578   void retire_and_reset_gclabs();
 579 
 580 public:
 581   HeapWord* allocate_memory(ShenandoahAllocRequest& request);
 582   HeapWord* mem_allocate(size_t size, bool* what);
 583   MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
 584                                                size_t size,
 585                                                metaspace::MetadataType mdtype);
 586 
 587   void notify_mutator_alloc_words(size_t words, bool waste);
 588 
 589   // Shenandoah supports TLAB allocation
 590   bool supports_tlab_allocation() const { return true; }
 591 
 592   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size);
 593   size_t tlab_capacity(Thread *thr) const;
 594   size_t unsafe_max_tlab_alloc(Thread *thread) const;
 595   size_t max_tlab_size() const;
 596   size_t tlab_used(Thread* ignored) const;
 597 
 598   void resize_tlabs();
 599 
 600   void ensure_parsability(bool retire_tlabs);
 601   void make_parsable(bool retire_tlabs);
 602 
 603 // ---------- Marking support
 604 //
 605 private:


< prev index next >