equal
deleted
inserted
replaced
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, |