瀏覽代碼

Enable ownership information on block header if required.

Ioannis Koutras 13 年之前
父節點
當前提交
e4f1e721cc
共有 2 個文件被更改,包括 12 次插入2 次删除
  1. 10 2
      DefineOptions.cmake
  2. 2 0
      src/split.c

+ 10 - 2
DefineOptions.cmake

@@ -11,6 +11,10 @@ option(WITH_DOC "Build with documentation" OFF)
 
 set(NUM_HEAPS 1)
 
+if (NUM_HEAPS GREATER 1)
+  set(MULTIPLE_HEAPS ON)
+endif (NUM_HEAPS GREATER 1)
+
 set(WITH_COALESCING "never" "Build with coalescing support")
 set(WITH_SPLITTING "never" "Build with splitting support")
 
@@ -67,11 +71,15 @@ else(BLOCKS_ORGANIZATION STREQUAL "dll")
 endif(BLOCKS_ORGANIZATION STREQUAL "dll")
 
 if(WITH_COALESCING STREQUAL "fixed")
-  set(WITH_OWNERSHIP ON)
+  if (MULTIPLE_HEAPS)
+    set(WITH_OWNERSHIP ON)
+  endif (MULTIPLE_HEAPS)
   set(COALESCING_FIXED ON)
 elseif(WITH_COALESCING STREQUAL "variable")
   set(WITH_KNOBS ON)
-  set(WITH_OWNERSHIP ON)
+  if (MULTIPLE_HEAPS)
+    set(WITH_OWNERSHIP ON)
+  endif (MULTIPLE_HEAPS)
   set(COALESCING_VARIABLE ON)
 endif(WITH_COALESCING STREQUAL "fixed")
 

+ 2 - 0
src/split.c

@@ -59,7 +59,9 @@ void split(allocator_t *allocator, heap_t *heap, void *ptr,
     }
 #endif /* WITH_FIXED_LISTS */
 
+#ifdef WITH_OWNERSHIP
     set_owner(new_block, heap);
+#endif /* WITH_OWNERSHIP */
 
     if(allocator->border_ptr == ptr) {
         allocator->border_ptr = new_block;