8016556: G1: Use ArrayAllocator for BitMaps

Reviewed-by: tschatzl, dholmes, coleenp, johnc
This commit is contained in:
Bengt Rutisson 2013-06-18 22:45:32 +02:00
parent 5382e0759e
commit 3cc79df807
3 changed files with 19 additions and 8 deletions

View file

@ -713,13 +713,21 @@ public:
// is set so that we always use malloc except for Solaris where we set the
// limit to get mapped memory.
template <class E, MEMFLAGS F>
class ArrayAllocator : StackObj {
class ArrayAllocator VALUE_OBJ_CLASS_SPEC {
char* _addr;
bool _use_malloc;
size_t _size;
bool _free_in_destructor;
public:
ArrayAllocator() : _addr(NULL), _use_malloc(false), _size(0) { }
~ArrayAllocator() { free(); }
ArrayAllocator(bool free_in_destructor = true) :
_addr(NULL), _use_malloc(false), _size(0), _free_in_destructor(free_in_destructor) { }
~ArrayAllocator() {
if (_free_in_destructor) {
free();
}
}
E* allocate(size_t length);
void free();
};