소스 검색

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;