//===-- MemoryManager.h -----------------------------------------*- C++ -*-===// // // The KLEE Symbolic Virtual Machine // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef KLEE_MEMORYMANAGER_H #define KLEE_MEMORYMANAGER_H #include #include namespace llvm { class Value; } namespace klee { class MemoryObject; class ArrayCache; class MemoryManager { private: typedef std::set objects_ty; objects_ty objects; ArrayCache *const arrayCache; public: MemoryManager(ArrayCache *arrayCache) : arrayCache(arrayCache) {} ~MemoryManager(); MemoryObject *allocate(uint64_t size, bool isLocal, bool isGlobal, const llvm::Value *allocSite); MemoryObject *allocateFixed(uint64_t address, uint64_t size, const llvm::Value *allocSite); void deallocate(const MemoryObject *mo); void markFreed(MemoryObject *mo); ArrayCache *getArrayCache() const { return arrayCache; } }; } // End klee namespace #endif