Space::is_in is implemented the same by all Space subclasses, move it to Space and make it non-virtual. Space::used_region has a bogus implementation that is never useful, remove it. Consolidate more code related to saved_marks in the Space base class Make CompactibleSpace::reset_after_compaction a pure virtual. Give Space::minimum_free_block_size a default implementation since only CMS needs to override it. This is useful in order to reduce the amount of code needed to disconnect G1 from ContiguousSpace.