Fix for PR2578. Do not split off a block whose size is less than FreeRangeHeader...
authorEvan Cheng <evan.cheng@apple.com>
Tue, 29 Jul 2008 07:38:32 +0000 (07:38 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 29 Jul 2008 07:38:32 +0000 (07:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54152 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JIT/JITMemoryManager.cpp

index 4cbfcf9e5184806e63653b957e18059f08348048..248291634cc4c92cf30e28b02faba2ff63aaf68d 100644 (file)
@@ -202,6 +202,9 @@ TrimAllocationToSize(FreeRangeHeader *FreeList, uint64_t NewSize) {
   assert(ThisAllocated && getBlockAfter().PrevAllocated &&
          "Cannot deallocate part of an allocated block!");
 
+  // Don't allow blocks to be trimmed below minimum required size
+  NewSize = std::max<uint64_t>(FreeRangeHeader::getMinBlockSize(), NewSize);
+
   // Round up size for alignment of header.
   unsigned HeaderAlign = __alignof(FreeRangeHeader);
   NewSize = (NewSize+ (HeaderAlign-1)) & ~(HeaderAlign-1);