src/share/vm/memory/allocation.hpp

changeset 5280
9f9c0a163cc5
parent 5269
abbd5c660b48
parent 5278
b9d151496930
child 5295
9f3e3245b50f
child 5307
e0c9a1d29eb4
     1.1 --- a/src/share/vm/memory/allocation.hpp	Wed Jun 19 18:13:52 2013 +0200
     1.2 +++ b/src/share/vm/memory/allocation.hpp	Thu Jun 20 10:03:58 2013 +0200
     1.3 @@ -732,13 +732,21 @@
     1.4  // is set so that we always use malloc except for Solaris where we set the
     1.5  // limit to get mapped memory.
     1.6  template <class E, MEMFLAGS F>
     1.7 -class ArrayAllocator : StackObj {
     1.8 +class ArrayAllocator VALUE_OBJ_CLASS_SPEC {
     1.9    char* _addr;
    1.10    bool _use_malloc;
    1.11    size_t _size;
    1.12 +  bool _free_in_destructor;
    1.13   public:
    1.14 -  ArrayAllocator() : _addr(NULL), _use_malloc(false), _size(0) { }
    1.15 -  ~ArrayAllocator() { free(); }
    1.16 +  ArrayAllocator(bool free_in_destructor = true) :
    1.17 +    _addr(NULL), _use_malloc(false), _size(0), _free_in_destructor(free_in_destructor) { }
    1.18 +
    1.19 +  ~ArrayAllocator() {
    1.20 +    if (_free_in_destructor) {
    1.21 +      free();
    1.22 +    }
    1.23 +  }
    1.24 +
    1.25    E* allocate(size_t length);
    1.26    void free();
    1.27  };

mercurial