Browse Source

Remove unnecessary field

rdb 11 năm trước cách đây
mục cha
commit
98cbf5c309

+ 2 - 27
dtool/src/dtoolbase/deletedBufferChain.I

@@ -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
dtool/src/dtoolbase/deletedBufferChain.cxx

@@ -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
dtool/src/dtoolbase/deletedBufferChain.h

@@ -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;
 };