Remove unnecessary field

This commit is contained in:
rdb
2015-01-19 00:08:10 +01:00
parent 9a50d3bf61
commit 98cbf5c309
3 changed files with 26 additions and 42 deletions
+2 -27
View File
@@ -59,7 +59,7 @@ node_to_buffer(DeletedBufferChain::ObjectNode *node) {
#if defined(USE_DELETEDCHAINFLAG) && defined(USE_DELETED_CHAIN)
// In development mode, we increment the pointer so that the
// returned data does not overlap our _flag member.
return (void *)(((char *)node) + get_flag_reserved_bytes());
return (void *)(((char *)node) + flag_reserved_bytes);
#else
return (void *)node;
#endif // NDEBUG
@@ -75,33 +75,8 @@ buffer_to_node(void *ptr) {
#if defined(USE_DELETEDCHAINFLAG) && defined(USE_DELETED_CHAIN)
// In development mode, we decrement the pointer to undo the
// increment we did above.
return (ObjectNode *)(((char *)ptr) - get_flag_reserved_bytes());
return (ObjectNode *)(((char *)ptr) - flag_reserved_bytes);
#else
return (ObjectNode *)ptr;
#endif // NDEBUG
}
////////////////////////////////////////////////////////////////////
// Function: DeletedBufferChain::get_flag_reserved_bytes
// Access: Private, Static
// Description: Returns the number of extra bytes reserved at the
// beginning of each buffer for the _flag member.
////////////////////////////////////////////////////////////////////
INLINE size_t DeletedBufferChain::
get_flag_reserved_bytes() {
#ifndef USE_DELETEDCHAINFLAG
// Without DELETEDCHAINFLAG, we don't even store the _flag member at
// all, and this method is never called.
static const size_t flag_reserved_bytes = 0;
#elif defined(LINMATH_ALIGN)
// With SSE2 alignment, we need all 16 bytes to preserve alignment.
static const size_t flag_reserved_bytes = 16;
#else
// Otherwise, we only need enough space for the Integer itself.
static const size_t flag_reserved_bytes = sizeof(AtomicAdjust::Integer);
#endif // USE_DELETEDCHAINFLAG
return flag_reserved_bytes;
}
+11 -13
View File
@@ -25,17 +25,10 @@ DeletedBufferChain::
DeletedBufferChain(size_t buffer_size) {
_deleted_chain = NULL;
_buffer_size = buffer_size;
_alloc_size = _buffer_size;
#ifdef USE_DELETEDCHAINFLAG
// In development mode, we also need to reserve space for _flag.
_alloc_size += get_flag_reserved_bytes();
#endif // USE_DELETEDCHAINFLAG
// We must allocate at least this much space for bookkeeping
// reasons.
_buffer_size = max(_buffer_size, sizeof(ObjectNode));
_alloc_size = max(_alloc_size, sizeof(ObjectNode));
}
////////////////////////////////////////////////////////////////////
@@ -51,6 +44,9 @@ allocate(size_t size, TypeHandle type_handle) {
//TAU_PROFILE("void *DeletedBufferChain::allocate(size_t, TypeHandle)", " ", TAU_USER);
assert(size <= _buffer_size);
// Determine how much space to allocate.
const size_t alloc_size = _buffer_size + flag_reserved_bytes;
ObjectNode *obj;
_lock.acquire();
@@ -67,8 +63,8 @@ allocate(size_t size, TypeHandle type_handle) {
void *ptr = node_to_buffer(obj);
#ifdef DO_MEMORY_USAGE
// type_handle.dec_memory_usage(TypeHandle::MC_deleted_chain_inactive, _alloc_size);
type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_active, _alloc_size);
// type_handle.dec_memory_usage(TypeHandle::MC_deleted_chain_inactive, alloc_size);
type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_active, alloc_size);
#endif // DO_MEMORY_USAGE
return ptr;
@@ -78,7 +74,7 @@ allocate(size_t size, TypeHandle type_handle) {
// If we get here, the deleted_chain is empty; we have to allocate a
// new object from the system pool.
obj = (ObjectNode *)NeverFreeMemory::alloc(_alloc_size);
obj = (ObjectNode *)NeverFreeMemory::alloc(alloc_size);
#ifdef USE_DELETEDCHAINFLAG
obj->_flag = DCF_alive;
@@ -87,7 +83,7 @@ allocate(size_t size, TypeHandle type_handle) {
void *ptr = node_to_buffer(obj);
#ifdef DO_MEMORY_USAGE
type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_active, _alloc_size);
type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_active, alloc_size);
#endif // DO_MEMORY_USAGE
return ptr;
@@ -110,8 +106,10 @@ deallocate(void *ptr, TypeHandle type_handle) {
assert(ptr != (void *)NULL);
#ifdef DO_MEMORY_USAGE
type_handle.dec_memory_usage(TypeHandle::MC_deleted_chain_active, _alloc_size);
// type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_inactive, _alloc_size);
type_handle.dec_memory_usage(TypeHandle::MC_deleted_chain_active,
_buffer_size + flag_reserved_bytes);
// type_handle.inc_memory_usage(TypeHandle::MC_deleted_chain_inactive,
// _buffer_size + flag_reserved_bytes);
#endif // DO_MEMORY_USAGE
+13 -2
View File
@@ -93,13 +93,24 @@ private:
static INLINE void *node_to_buffer(ObjectNode *node);
static INLINE ObjectNode *buffer_to_node(void *buffer);
static INLINE size_t get_flag_reserved_bytes();
ObjectNode *_deleted_chain;
MutexImpl _lock;
size_t _buffer_size;
size_t _alloc_size;
#ifndef USE_DELETEDCHAINFLAG
// Without DELETEDCHAINFLAG, we don't even store the _flag member at all.
static const size_t flag_reserved_bytes = 0;
#elif defined(LINMATH_ALIGN)
// With SSE2 alignment, we need all 16 bytes to preserve alignment.
static const size_t flag_reserved_bytes = 16;
#else
// Otherwise, we only need enough space for the Integer itself.
static const size_t flag_reserved_bytes = sizeof(AtomicAdjust::Integer);
#endif // USE_DELETEDCHAINFLAG
friend class MemoryHook;
};