673 // The space that this buffer allocates into. 674 CompactibleFreeListSpace* _cfls; 675 676 // Our local free lists. 677 AdaptiveFreeList<FreeChunk> _indexedFreeList[CompactibleFreeListSpace::IndexSetSize]; 678 679 // Initialized from a command-line arg. 680 681 // Allocation statistics in support of dynamic adjustment of 682 // #blocks to claim per get_from_global_pool() call below. 683 static AdaptiveWeightedAverage 684 _blocks_to_claim [CompactibleFreeListSpace::IndexSetSize]; 685 static size_t _global_num_blocks [CompactibleFreeListSpace::IndexSetSize]; 686 static uint _global_num_workers[CompactibleFreeListSpace::IndexSetSize]; 687 size_t _num_blocks [CompactibleFreeListSpace::IndexSetSize]; 688 689 // Internal work method 690 void get_from_global_pool(size_t word_sz, AdaptiveFreeList<FreeChunk>* fl); 691 692 public: 693 CFLS_LAB(CompactibleFreeListSpace* cfls); 694 695 // Allocate and return a block of the given size, or else return NULL. 696 HeapWord* alloc(size_t word_sz); 697 698 // Return any unused portions of the buffer to the global pool. 699 void retire(int tid); 700 701 // Dynamic OldPLABSize sizing 702 static void compute_desired_plab_size(); 703 // When the settings are modified from default static initialization 704 static void modify_initialization(size_t n, unsigned wt); 705 }; 706 707 size_t PromotionInfo::refillSize() const { 708 const size_t CMSSpoolBlockSize = 256; 709 const size_t sz = heap_word_size(sizeof(SpoolBlock) + sizeof(markOop) 710 * CMSSpoolBlockSize); 711 return CompactibleFreeListSpace::adjustObjectSize(sz); 712 } | 673 // The space that this buffer allocates into. 674 CompactibleFreeListSpace* _cfls; 675 676 // Our local free lists. 677 AdaptiveFreeList<FreeChunk> _indexedFreeList[CompactibleFreeListSpace::IndexSetSize]; 678 679 // Initialized from a command-line arg. 680 681 // Allocation statistics in support of dynamic adjustment of 682 // #blocks to claim per get_from_global_pool() call below. 683 static AdaptiveWeightedAverage 684 _blocks_to_claim [CompactibleFreeListSpace::IndexSetSize]; 685 static size_t _global_num_blocks [CompactibleFreeListSpace::IndexSetSize]; 686 static uint _global_num_workers[CompactibleFreeListSpace::IndexSetSize]; 687 size_t _num_blocks [CompactibleFreeListSpace::IndexSetSize]; 688 689 // Internal work method 690 void get_from_global_pool(size_t word_sz, AdaptiveFreeList<FreeChunk>* fl); 691 692 public: 693 static const int _default_dynamic_old_plab_size = 16; 694 static const int _default_static_old_plab_size = 50; 695 696 CFLS_LAB(CompactibleFreeListSpace* cfls); 697 698 // Allocate and return a block of the given size, or else return NULL. 699 HeapWord* alloc(size_t word_sz); 700 701 // Return any unused portions of the buffer to the global pool. 702 void retire(int tid); 703 704 // Dynamic OldPLABSize sizing 705 static void compute_desired_plab_size(); 706 // When the settings are modified from default static initialization 707 static void modify_initialization(size_t n, unsigned wt); 708 }; 709 710 size_t PromotionInfo::refillSize() const { 711 const size_t CMSSpoolBlockSize = 256; 712 const size_t sz = heap_word_size(sizeof(SpoolBlock) + sizeof(markOop) 713 * CMSSpoolBlockSize); 714 return CompactibleFreeListSpace::adjustObjectSize(sz); 715 } |