src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp
branchstuefe-new-metaspace-branch
changeset 58646 bcdba1c9f1fe
parent 58333 78b2e8f46dd4
child 58883 08102295011d
equal deleted inserted replaced
58645:28c7e6711871 58646:bcdba1c9f1fe
    46     return true;
    46     return true;
    47   }
    47   }
    48   return false;
    48   return false;
    49 }
    49 }
    50 
    50 
    51 static bool is_micro_cld(MetaspaceType space_type) {
       
    52   return space_type == metaspace::UnsafeAnonymousMetaspaceType ||
       
    53          space_type == metaspace::ReflectionMetaspaceType;
       
    54 }
       
    55 
       
    56 static bool use_class_space(MetadataType mdType) {
    51 static bool use_class_space(MetadataType mdType) {
    57   return use_class_space(is_class(mdType));
    52   return use_class_space(is_class(mdType));
    58 }
    53 }
    59 
    54 
    60 ClassLoaderMetaspace::ClassLoaderMetaspace(Mutex* lock, MetaspaceType space_type)
    55 ClassLoaderMetaspace::ClassLoaderMetaspace(Mutex* lock, MetaspaceType space_type)
    62   , _space_type(space_type)
    57   , _space_type(space_type)
    63   , _non_class_space_manager(NULL)
    58   , _non_class_space_manager(NULL)
    64   , _class_space_manager(NULL)
    59   , _class_space_manager(NULL)
    65 {
    60 {
    66   ChunkManager* const non_class_cm =
    61   ChunkManager* const non_class_cm =
    67       is_micro_cld(_space_type) && Settings::separate_micro_cld_allocations() ?
       
    68           ChunkManager::chunkmanager_microclds_nonclass() :
       
    69           ChunkManager::chunkmanager_nonclass();
    62           ChunkManager::chunkmanager_nonclass();
    70 
    63 
    71   // Initialize non-class spacemanager
    64   // Initialize non-class spacemanager
    72   _non_class_space_manager = new SpaceManager(
    65   _non_class_space_manager = new SpaceManager(
    73       non_class_cm,
    66       non_class_cm,
    77       "non-class sm");
    70       "non-class sm");
    78 
    71 
    79   // If needed, initialize class spacemanager
    72   // If needed, initialize class spacemanager
    80   if (Metaspace::using_class_space()) {
    73   if (Metaspace::using_class_space()) {
    81     ChunkManager* const class_cm =
    74     ChunkManager* const class_cm =
    82         is_micro_cld(_space_type) && Settings::separate_micro_cld_allocations() ?
       
    83             ChunkManager::chunkmanager_microclds_class() :
       
    84             ChunkManager::chunkmanager_class();
    75             ChunkManager::chunkmanager_class();
    85     _class_space_manager = new SpaceManager(
    76     _class_space_manager = new SpaceManager(
    86         class_cm,
    77         class_cm,
    87         ChunkAllocSequence::alloc_sequence_by_space_type(space_type, true),
    78         ChunkAllocSequence::alloc_sequence_by_space_type(space_type, true),
    88         lock,
    79         lock,