#ifndef HOARD_RELEASEHEAP_H
#define HOARD_RELEASEHEAP_H
#if defined(_WIN32)
#include <windows.h>
#else
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#endif
#include "heaplayers.h"
namespace Hoard {
template <class SuperHeap>
class ReleaseHeap : public SuperHeap {
public:
enum { Alignment = SuperHeap::Alignment };
ReleaseHeap() {
sassert<(Alignment % 4096 == 0)> ObjectsMustBePageAligned;
}
inline void free (void * ptr) {
MmapWrapper::release (ptr, SuperHeap::getSize(ptr));
SuperHeap::free (ptr);
}
};
}
#endif