summaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-07-29 07:38:32 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-07-29 07:38:32 +0000
commit60b75f462e1044a031fbd75a8dcb45cb3de29177 (patch)
tree45cfc3c88180efcc7fa71d1603547283532fec0c /lib/ExecutionEngine/JIT/JITMemoryManager.cpp
parent7ba145b0b4aefe6cae7788070a936cb9fc0aee14 (diff)
downloadllvm-60b75f462e1044a031fbd75a8dcb45cb3de29177.tar.gz
llvm-60b75f462e1044a031fbd75a8dcb45cb3de29177.tar.bz2
llvm-60b75f462e1044a031fbd75a8dcb45cb3de29177.tar.xz
Fix for PR2578. Do not split off a block whose size is less than FreeRangeHeader::getMinBlockSize(). Patch by Damien.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54152 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/JIT/JITMemoryManager.cpp')
-rw-r--r--lib/ExecutionEngine/JIT/JITMemoryManager.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/ExecutionEngine/JIT/JITMemoryManager.cpp b/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
index 4cbfcf9e51..248291634c 100644
--- a/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
+++ b/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
@@ -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);