[llvm-commits] [poolalloc] r106554 - /poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp
John Criswell
criswell at uiuc.edu
Tue Jun 22 10:15:17 PDT 2010
Author: criswell
Date: Tue Jun 22 12:15:17 2010
New Revision: 106554
URL: http://llvm.org/viewvc/llvm-project?rev=106554&view=rev
Log:
Pool handles can be NULL. Check for NULL pool handles before trying to lock
or unlock the pool.
Modified:
poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp
Modified: poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp?rev=106554&r1=106553&r2=106554&view=diff
==============================================================================
--- poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp (original)
+++ poolalloc/trunk/runtime/FL2Allocator/PoolAllocator.cpp Tue Jun 22 12:15:17 2010
@@ -867,9 +867,9 @@
void *poolalloc(PoolTy<NormalPoolTraits> *Pool, unsigned NumBytes) {
DO_IF_FORCE_MALLOCFREE(return malloc(NumBytes));
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void* to_return = poolalloc_internal(Pool, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return to_return;
}
@@ -877,25 +877,25 @@
unsigned Alignment, unsigned NumBytes) {
//punt and use pool alloc.
//I don't know if this is safe or breaks any assumptions in the runtime
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
intptr_t base = (intptr_t)poolalloc_internal(Pool, NumBytes + Alignment - 1);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return (void*)((base + (Alignment - 1)) & ~((intptr_t)Alignment -1));
}
void poolfree(PoolTy<NormalPoolTraits> *Pool, void *Node) {
DO_IF_FORCE_MALLOCFREE(free(Node); return);
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
poolfree_internal(Pool, Node);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
}
void *poolrealloc(PoolTy<NormalPoolTraits> *Pool, void *Node,
unsigned NumBytes) {
DO_IF_FORCE_MALLOCFREE(return realloc(Node, NumBytes));
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void* to_return = poolrealloc_internal(Pool, Node, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return to_return;
}
@@ -1026,23 +1026,23 @@
unsigned long long poolalloc_pc(PoolTy<CompressedPoolTraits> *Pool,
unsigned NumBytes) {
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void *Result = poolalloc_internal(Pool, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return (char*)Result-(char*)Pool->Slabs;
}
void poolfree_pc(PoolTy<CompressedPoolTraits> *Pool, unsigned long long Node) {
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
poolfree_internal(Pool, (char*)Pool->Slabs+Node);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
}
unsigned long long poolrealloc_pc(PoolTy<CompressedPoolTraits> *Pool,
unsigned long long Node, unsigned NumBytes) {
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void *Result = poolrealloc_internal(Pool, (char*)Pool->Slabs+Node, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return (char*)Result-(char*)Pool->Slabs;
}
@@ -1060,25 +1060,25 @@
void* poolalloc_pca(PoolTy<CompressedPoolTraits> *Pool, unsigned NumBytes)
{
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void* to_return = poolalloc_internal(Pool, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return to_return;
}
void poolfree_pca(PoolTy<CompressedPoolTraits> *Pool, void* Node)
{
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
poolfree_internal(Pool, Node);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
}
void* poolrealloc_pca(PoolTy<CompressedPoolTraits> *Pool, void* Node,
unsigned NumBytes)
{
- pthread_mutex_lock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_lock(&Pool->pool_lock);
void* to_return = poolrealloc_internal(Pool, Node, NumBytes);
- pthread_mutex_unlock(&Pool->pool_lock);
+ if (Pool) pthread_mutex_unlock(&Pool->pool_lock);
return to_return;
}
More information about the llvm-commits
mailing list