mirror of
https://github.com/panda3d/panda3d.git
synced 2026-04-22 14:41:36 -05:00
Remove unnecessary field
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user