# HG changeset patch # User jwha # Date 1430502660 25200 # Node ID 394471b86a836683b0f4d825f95af7535c7c0e83 # Parent 5208524ce05c2b56c2ac0f1f029aaad5cbf64862 8079091: Remove dictionary NULL check on common path of BlockFreeList methods Reviewed-by: kbarrett, stefank, dholmes, jmasa diff -r 5208524ce05c -r 394471b86a83 hotspot/src/share/vm/memory/metaspace.cpp --- a/hotspot/src/share/vm/memory/metaspace.cpp Mon May 04 17:10:50 2015 +0200 +++ b/hotspot/src/share/vm/memory/metaspace.cpp Fri May 01 10:51:00 2015 -0700 @@ -252,7 +252,7 @@ // Used to manage the free list of Metablocks (a block corresponds // to the allocation of a quantum of metadata). class BlockFreelist VALUE_OBJ_CLASS_SPEC { - BlockTreeDictionary* _dictionary; + BlockTreeDictionary* const _dictionary; // Only allocate and split from freelist if the size of the allocation // is at least 1/4th the size of the available block. @@ -269,13 +269,7 @@ MetaWord* get_block(size_t word_size); void return_block(MetaWord* p, size_t word_size); - size_t total_size() { - if (dictionary() == NULL) { - return 0; - } else { - return dictionary()->total_size(); - } -} + size_t total_size() { return dictionary()->total_size(); } void print_on(outputStream* st) const; }; @@ -814,30 +808,21 @@ // BlockFreelist methods -BlockFreelist::BlockFreelist() : _dictionary(NULL) {} +BlockFreelist::BlockFreelist() : _dictionary(new BlockTreeDictionary()) {} BlockFreelist::~BlockFreelist() { - if (_dictionary != NULL) { - if (Verbose && TraceMetadataChunkAllocation) { - _dictionary->print_free_lists(gclog_or_tty); - } - delete _dictionary; + if (Verbose && TraceMetadataChunkAllocation) { + dictionary()->print_free_lists(gclog_or_tty); } + delete _dictionary; } void BlockFreelist::return_block(MetaWord* p, size_t word_size) { Metablock* free_chunk = ::new (p) Metablock(word_size); - if (dictionary() == NULL) { - _dictionary = new BlockTreeDictionary(); - } dictionary()->return_chunk(free_chunk); } MetaWord* BlockFreelist::get_block(size_t word_size) { - if (dictionary() == NULL) { - return NULL; - } - if (word_size < TreeChunk >::min_size()) { // Dark matter. Too small for dictionary. return NULL; @@ -866,9 +851,6 @@ } void BlockFreelist::print_on(outputStream* st) const { - if (dictionary() == NULL) { - return; - } dictionary()->print_free_lists(st); }