< prev index next >

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

Print this page
rev 55609 : Eliminate extra forwarding pointer per object


 502 
 503 public:
 504   void set_unload_classes(bool uc);
 505   bool unload_classes() const;
 506 
 507   // Delete entries for dead interned string and clean up unreferenced symbols
 508   // in symbol table, possibly in parallel.
 509   void unload_classes_and_cleanup_tables(bool full_gc);
 510 
 511 // ---------- Generic interface hooks
 512 // Minor things that super-interface expects us to implement to play nice with
 513 // the rest of runtime. Some of the things here are not required to be implemented,
 514 // and can be stubbed out.
 515 //
 516 public:
 517   AdaptiveSizePolicy* size_policy() shenandoah_not_implemented_return(NULL);
 518   bool is_maximal_no_gc() const shenandoah_not_implemented_return(false);
 519 
 520   bool is_in(const void* p) const;
 521 
 522   size_t obj_size(oop obj) const;
 523   virtual ptrdiff_t cell_header_size() const;
 524 
 525   void collect(GCCause::Cause cause);
 526   void do_full_collection(bool clear_all_soft_refs);
 527 
 528   // Used for parsing heap during error printing
 529   HeapWord* block_start(const void* addr) const;
 530   bool block_is_obj(const HeapWord* addr) const;
 531 
 532   // Used for native heap walkers: heap dumpers, mostly
 533   void object_iterate(ObjectClosure* cl);
 534   void safe_object_iterate(ObjectClosure* cl);
 535 
 536   // Used by RMI
 537   jlong millis_since_last_gc();
 538 
 539 // ---------- Safepoint interface hooks
 540 //
 541 public:
 542   void safepoint_synchronize_begin();
 543   void safepoint_synchronize_end();
 544 


 558 
 559   oop pin_object(JavaThread* thread, oop obj);
 560   void unpin_object(JavaThread* thread, oop obj);
 561 
 562 // ---------- Allocation support
 563 //
 564 private:
 565   HeapWord* allocate_memory_under_lock(ShenandoahAllocRequest& request, bool& in_new_region);
 566   inline HeapWord* allocate_from_gclab(Thread* thread, size_t size);
 567   HeapWord* allocate_from_gclab_slow(Thread* thread, size_t size);
 568   HeapWord* allocate_new_gclab(size_t min_size, size_t word_size, size_t* actual_size);
 569   void retire_and_reset_gclabs();
 570 
 571 public:
 572   HeapWord* allocate_memory(ShenandoahAllocRequest& request);
 573   HeapWord* mem_allocate(size_t size, bool* what);
 574   MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
 575                                                size_t size,
 576                                                Metaspace::MetadataType mdtype);
 577 
 578   oop obj_allocate(Klass* klass, int size, TRAPS);
 579   oop array_allocate(Klass* klass, int size, int length, bool do_zero, TRAPS);
 580   oop class_allocate(Klass* klass, int size, TRAPS);
 581 
 582   void notify_mutator_alloc_words(size_t words, bool waste);
 583 
 584   // Shenandoah supports TLAB allocation
 585   bool supports_tlab_allocation() const { return true; }
 586 
 587   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size);
 588   size_t tlab_capacity(Thread *thr) const;
 589   size_t unsafe_max_tlab_alloc(Thread *thread) const;
 590   size_t max_tlab_size() const;
 591   size_t tlab_used(Thread* ignored) const;
 592 
 593   HeapWord* tlab_post_allocation_setup(HeapWord* obj);
 594   void fill_with_dummy_object(HeapWord* start, HeapWord* end, bool zap);
 595   size_t min_dummy_object_size() 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:
 605   ShenandoahMarkingContext* _marking_context;
 606   MemRegion  _bitmap_region;
 607   MemRegion  _aux_bitmap_region;
 608   MarkBitMap _verification_bit_map;
 609   MarkBitMap _aux_bit_map;
 610 
 611   size_t _bitmap_size;
 612   size_t _bitmap_regions_per_slice;
 613   size_t _bitmap_bytes_per_slice;
 614 
 615   bool _bitmap_region_special;




 502 
 503 public:
 504   void set_unload_classes(bool uc);
 505   bool unload_classes() const;
 506 
 507   // Delete entries for dead interned string and clean up unreferenced symbols
 508   // in symbol table, possibly in parallel.
 509   void unload_classes_and_cleanup_tables(bool full_gc);
 510 
 511 // ---------- Generic interface hooks
 512 // Minor things that super-interface expects us to implement to play nice with
 513 // the rest of runtime. Some of the things here are not required to be implemented,
 514 // and can be stubbed out.
 515 //
 516 public:
 517   AdaptiveSizePolicy* size_policy() shenandoah_not_implemented_return(NULL);
 518   bool is_maximal_no_gc() const shenandoah_not_implemented_return(false);
 519 
 520   bool is_in(const void* p) const;
 521 



 522   void collect(GCCause::Cause cause);
 523   void do_full_collection(bool clear_all_soft_refs);
 524 
 525   // Used for parsing heap during error printing
 526   HeapWord* block_start(const void* addr) const;
 527   bool block_is_obj(const HeapWord* addr) const;
 528 
 529   // Used for native heap walkers: heap dumpers, mostly
 530   void object_iterate(ObjectClosure* cl);
 531   void safe_object_iterate(ObjectClosure* cl);
 532 
 533   // Used by RMI
 534   jlong millis_since_last_gc();
 535 
 536 // ---------- Safepoint interface hooks
 537 //
 538 public:
 539   void safepoint_synchronize_begin();
 540   void safepoint_synchronize_end();
 541 


 555 
 556   oop pin_object(JavaThread* thread, oop obj);
 557   void unpin_object(JavaThread* thread, oop obj);
 558 
 559 // ---------- Allocation support
 560 //
 561 private:
 562   HeapWord* allocate_memory_under_lock(ShenandoahAllocRequest& request, bool& in_new_region);
 563   inline HeapWord* allocate_from_gclab(Thread* thread, size_t size);
 564   HeapWord* allocate_from_gclab_slow(Thread* thread, size_t size);
 565   HeapWord* allocate_new_gclab(size_t min_size, size_t word_size, size_t* actual_size);
 566   void retire_and_reset_gclabs();
 567 
 568 public:
 569   HeapWord* allocate_memory(ShenandoahAllocRequest& request);
 570   HeapWord* mem_allocate(size_t size, bool* what);
 571   MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
 572                                                size_t size,
 573                                                Metaspace::MetadataType mdtype);
 574 




 575   void notify_mutator_alloc_words(size_t words, bool waste);
 576 
 577   // Shenandoah supports TLAB allocation
 578   bool supports_tlab_allocation() const { return true; }
 579 
 580   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size);
 581   size_t tlab_capacity(Thread *thr) const;
 582   size_t unsafe_max_tlab_alloc(Thread *thread) const;
 583   size_t max_tlab_size() const;
 584   size_t tlab_used(Thread* ignored) const;




 585 
 586   void resize_tlabs();
 587 
 588   void ensure_parsability(bool retire_tlabs);
 589   void make_parsable(bool retire_tlabs);
 590 
 591 // ---------- Marking support
 592 //
 593 private:
 594   ShenandoahMarkingContext* _marking_context;
 595   MemRegion  _bitmap_region;
 596   MemRegion  _aux_bitmap_region;
 597   MarkBitMap _verification_bit_map;
 598   MarkBitMap _aux_bit_map;
 599 
 600   size_t _bitmap_size;
 601   size_t _bitmap_regions_per_slice;
 602   size_t _bitmap_bytes_per_slice;
 603 
 604   bool _bitmap_region_special;


< prev index next >