< prev index next >

src/hotspot/share/memory/metaspace/testHelpers.hpp

Print this page

 26 #ifndef SHARE_MEMORY_METASPACE_TESTHELPERS_HPP
 27 #define SHARE_MEMORY_METASPACE_TESTHELPERS_HPP
 28 
 29 #include "memory/allocation.hpp"
 30 #include "memory/metaspace.hpp"
 31 #include "memory/metaspace/commitLimiter.hpp"
 32 #include "memory/metaspace/counters.hpp"
 33 #include "memory/metaspace/metaspaceContext.hpp"
 34 #include "memory/virtualspace.hpp"
 35 #include "utilities/globalDefinitions.hpp"
 36 
 37 // This is just convenience classes for metaspace-related tests
 38 //  (jtreg, via whitebox API, and gtests)
 39 
 40 class ReservedSpace;
 41 class Mutex;
 42 class outputStream;
 43 
 44 namespace metaspace {
 45 

 46 class MetaspaceContext;
 47 class MetaspaceArena;
 48 
 49 // Wraps a MetaspaceTestArena with its own lock for testing purposes.
 50 class MetaspaceTestArena : public CHeapObj<mtInternal> {
 51 
 52   Mutex* const _lock;
 53   MetaspaceArena* const _arena;
 54 
 55 public:
 56 
 57   const MetaspaceArena* arena() const {
 58     return _arena;
 59   }
 60 
 61   MetaspaceTestArena(Mutex* lock, MetaspaceArena* arena);
 62   ~MetaspaceTestArena();
 63 
 64   MetaWord* allocate(size_t word_size);


 65   void deallocate(MetaWord* p, size_t word_size);
 66 
 67 };
 68 
 69 // Wraps an instance of a MetaspaceContext together with some side objects for easy use in test beds (whitebox, gtests)
 70 class MetaspaceTestContext : public CHeapObj<mtInternal> {
 71 
 72   const char* const _name;
 73   const size_t _reserve_limit;
 74   const size_t _commit_limit;
 75 
 76   MetaspaceContext* _context;
 77   CommitLimiter _commit_limiter;
 78   SizeAtomicCounter _used_words_counter;
 79 
 80   // For non-expandable contexts we keep track of the space
 81   // and delete it at destruction time.
 82   ReservedSpace _rs;
 83 
 84 public:
 85 
 86   // Note: limit == 0 means unlimited

 26 #ifndef SHARE_MEMORY_METASPACE_TESTHELPERS_HPP
 27 #define SHARE_MEMORY_METASPACE_TESTHELPERS_HPP
 28 
 29 #include "memory/allocation.hpp"
 30 #include "memory/metaspace.hpp"
 31 #include "memory/metaspace/commitLimiter.hpp"
 32 #include "memory/metaspace/counters.hpp"
 33 #include "memory/metaspace/metaspaceContext.hpp"
 34 #include "memory/virtualspace.hpp"
 35 #include "utilities/globalDefinitions.hpp"
 36 
 37 // This is just convenience classes for metaspace-related tests
 38 //  (jtreg, via whitebox API, and gtests)
 39 
 40 class ReservedSpace;
 41 class Mutex;
 42 class outputStream;
 43 
 44 namespace metaspace {
 45 
 46 struct ArenaStats;
 47 class MetaspaceContext;
 48 class MetaspaceArena;
 49 
 50 // Wraps a MetaspaceTestArena with its own lock for testing purposes.
 51 class MetaspaceTestArena : public CHeapObj<mtInternal> {
 52 
 53   Mutex* const _lock;
 54   MetaspaceArena* const _arena;
 55 
 56 public:
 57 
 58   const MetaspaceArena* arena() const {
 59     return _arena;
 60   }
 61 
 62   MetaspaceTestArena(Mutex* lock, MetaspaceArena* arena);
 63   ~MetaspaceTestArena();
 64 
 65   MetaWord* allocate(size_t word_size);
 66   MetaWord* allocate_for_klass(size_t word_size);
 67   MetaWord* allocate_from_freeblocks_only(size_t word_size);
 68   void deallocate(MetaWord* p, size_t word_size);
 69   void add_to_statistics(ArenaStats* out) const;
 70 };
 71 
 72 // Wraps an instance of a MetaspaceContext together with some side objects for easy use in test beds (whitebox, gtests)
 73 class MetaspaceTestContext : public CHeapObj<mtInternal> {
 74 
 75   const char* const _name;
 76   const size_t _reserve_limit;
 77   const size_t _commit_limit;
 78 
 79   MetaspaceContext* _context;
 80   CommitLimiter _commit_limiter;
 81   SizeAtomicCounter _used_words_counter;
 82 
 83   // For non-expandable contexts we keep track of the space
 84   // and delete it at destruction time.
 85   ReservedSpace _rs;
 86 
 87 public:
 88 
 89   // Note: limit == 0 means unlimited
< prev index next >