Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : minor changes for debug information in heap comparison algorithm
[simgrid.git] / src / xbt / mmalloc / mm_module.c
index b31daac..0dfd027 100644 (file)
@@ -344,39 +344,24 @@ void mmalloc_postexit(void)
   xbt_mheap_destroy_no_free(__mmalloc_default_mdp);
 }
 
-size_t mmalloc_get_chunks_used(xbt_mheap_t heap){
-  return ((struct mdesc *)heap)->heapstats.chunks_used;
-}
-
-void remove_ignore_heap(void *address, size_t size){
+size_t mmalloc_get_bytes_used(xbt_mheap_t heap){
+  int i = 0, j = 0;
+  int bytes = 0;
   
-  unsigned int cursor = 0;
-  int start = 0;
-  int end = xbt_dynar_length(mc_heap_comparison_ignore) - 1;
-  mc_heap_ignore_region_t region;
-  int ignore_found = 0;
-
-  while(start <= end){
-    cursor = (start + end) / 2;
-    region = (mc_heap_ignore_region_t)xbt_dynar_get_as(mc_heap_comparison_ignore, cursor, mc_heap_ignore_region_t);
-    if(region->address == address){
-      ignore_found = 1;
-      break;
-    }
-    if(region->address < address)
-      start = cursor + 1;
-    if(region->address > address){
-      if((char * )region->address <= ((char *)address + size)){
-        ignore_found = 1;
-        break;
-      }else
-        end = cursor - 1;   
+  while(i<=((struct mdesc *)heap)->heaplimit){
+    if(((struct mdesc *)heap)->heapinfo[i].type == 0){
+      if(((struct mdesc *)heap)->heapinfo[i].busy_block.busy_size > 0)
+        bytes += ((struct mdesc *)heap)->heapinfo[i].busy_block.busy_size;
+     
+    }else if(((struct mdesc *)heap)->heapinfo[i].type > 0){
+      for(j=0; j < (size_t) (BLOCKSIZE >> ((struct mdesc *)heap)->heapinfo[i].type); j++){
+        if(((struct mdesc *)heap)->heapinfo[i].busy_frag.frag_size[j] > 0)
+          bytes += ((struct mdesc *)heap)->heapinfo[i].busy_frag.frag_size[j];
+      }
     }
-  }
-  
-  if(ignore_found == 1){
-    xbt_dynar_remove_at(mc_heap_comparison_ignore, cursor, NULL);
-    remove_ignore_heap(address, size);
+    i++; 
   }
 
+  return bytes;
 }
+