extern char *xbt_binary_name;
-xbt_dynar_t mmalloc_ignore;
+xbt_dynar_t mc_comparison_ignore;
xbt_dynar_t stacks_areas;
static void heap_area_pair_free(heap_area_pair_t pair);
static int compare_area(void *area1, void* area2, size_t size, xbt_dynar_t previous, int check_ignore);
static void match_equals(xbt_dynar_t list, xbt_dynar_t *equals);
-static int in_mmalloc_ignore(int block, int fragment);
+static int in_mc_comparison_ignore(int block, int fragment);
static size_t heap_comparison_ignore(void *address);
static void add_heap_equality(xbt_dynar_t *equals, void *a1, void *a2);
static void remove_heap_equality(xbt_dynar_t *equals, int address, void *a);
continue;
}
- if(heapinfo1[i1].busy_block.equal_to != NULL){
+ if(heapinfo1[i1].busy_block.equal_to != NULL){
i1++;
continue;
}
-
+
i2 = 1;
equal = 0;
if(heapinfo1[current_block].busy_block.busy_size == heapinfo2[current_block].busy_block.busy_size){
addr_block2 = ((void*) (((ADDR2UINT(current_block)) - 1) * BLOCKSIZE + (char*)heapbase2));
-
real_addr_block2 = (char*)((xbt_mheap_t)s_heap)->heapbase + (((char *)addr_block2) - (char *)heapbase2);
if((stack_name = is_stack(real_addr_block2)) != NULL){
add_heap_area_pair(previous, current_block, -1, current_block, -1);
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore((int)current_block, -1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore((int)current_block, -1))
res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 1);
else
res_compare = compare_area(addr_block1, addr_block2, heapinfo1[current_block].busy_block.busy_size, previous, 0);
while(i2 <= heaplimit && !equal){
- addr_block2 = ((void*) (((ADDR2UINT(i2)) - 1) * BLOCKSIZE + (char*)heapbase2));
-
+ addr_block2 = ((void*) (((ADDR2UINT(i2)) - 1) * BLOCKSIZE + (char*)heapbase2));
real_addr_block2 = (char*)((xbt_mheap_t)s_heap)->heapbase + (((char *)addr_block2) - (char *)heapbase2);
if((stack_name = is_stack(real_addr_block2)) != NULL){
/* Comparison */
add_heap_area_pair(previous, i1, -1, i2, -1);
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore((int)i1, -1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore((int)i1, -1))
res_compare = compare_area(addr_block1, addr_block2, heapinfo1[i1].busy_block.busy_size, previous, 1);
else
res_compare = compare_area(addr_block1, addr_block2, heapinfo1[i1].busy_block.busy_size, previous, 0);
current_fragment = j1;
- if(heapinfo1[i1].busy_frag.frag_size[j1] == 0) /* Free fragment */
+ if(heapinfo1[i1].busy_frag.frag_size[j1] == -1) /* Free fragment */
continue;
-
- if(heapinfo1[i1].busy_frag.equal_to[j1] != NULL)
+
+ if(heapinfo1[i1].busy_frag.equal_to[j1] != NULL)
continue;
addr_frag1 = (void*) ((char *)addr_block1 + (j1 << heapinfo1[i1].type));
add_heap_area_pair(previous, current_block, current_fragment, current_block, current_fragment);
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore((int)current_block, (int)current_fragment))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore((int)current_block, (int)current_fragment))
res_compare = compare_area(addr_frag1, addr_frag2, heapinfo1[current_block].busy_frag.frag_size[current_fragment], previous, 1);
else
res_compare = compare_area(addr_frag1, addr_frag2, heapinfo1[current_block].busy_frag.frag_size[current_fragment], previous, 0);
/* Comparison */
add_heap_area_pair(previous, i1, j1, i2, j2);
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore((int)i1, (int)j1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore((int)i1, (int)j1))
res_compare = compare_area(addr_frag1, addr_frag2, heapinfo1[i1].busy_frag.frag_size[j1], previous, 1);
else
res_compare = compare_area(addr_frag1, addr_frag2, heapinfo1[i1].busy_frag.frag_size[j1], previous, 0);
return area;
}
-static int in_mmalloc_ignore(int block, int fragment){
+static int in_mc_comparison_ignore(int block, int fragment){
unsigned int cursor = 0;
int start = 0;
- int end = xbt_dynar_length(mmalloc_ignore) - 1;
+ int end = xbt_dynar_length(mc_comparison_ignore) - 1;
mc_ignore_region_t region;
while(start <= end){
cursor = (start + end) / 2;
- region = (mc_ignore_region_t)xbt_dynar_get_as(mmalloc_ignore, cursor, mc_ignore_region_t);
+ region = (mc_ignore_region_t)xbt_dynar_get_as(mc_comparison_ignore, cursor, mc_ignore_region_t);
if(region->block == block){
if(region->fragment == fragment)
return 1;
static size_t heap_comparison_ignore(void *address){
unsigned int cursor = 0;
int start = 0;
- int end = xbt_dynar_length(mmalloc_ignore) - 1;
+ int end = xbt_dynar_length(mc_comparison_ignore) - 1;
mc_ignore_region_t region;
while(start <= end){
cursor = (start + end) / 2;
- region = (mc_ignore_region_t)xbt_dynar_get_as(mmalloc_ignore, cursor, mc_ignore_region_t);
+ region = (mc_ignore_region_t)xbt_dynar_get_as(mc_comparison_ignore, cursor, mc_ignore_region_t);
if(region->address == address)
return region->size;
if(region->address < address)
if(add_heap_area_pair(previous, block_pointed1, -1, block_pointed2, -1)){
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore(block_pointed1, -1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore(block_pointed1, -1))
res_compare = compare_area(addr_block_pointed1, addr_block_pointed2, heapinfo1[block_pointed1].busy_block.busy_size, previous, 1);
else
res_compare = compare_area(addr_block_pointed1, addr_block_pointed2, heapinfo1[block_pointed1].busy_block.busy_size, previous, 0);
if(add_heap_area_pair(previous, block_pointed1, frag_pointed1, block_pointed2, frag_pointed2)){
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore(block_pointed1, frag_pointed1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore(block_pointed1, frag_pointed1))
res_compare = compare_area(addr_frag_pointed1, addr_frag_pointed2, heapinfo1[block_pointed1].busy_frag.frag_size[frag_pointed1], previous, 1);
else
res_compare = compare_area(addr_frag_pointed1, addr_frag_pointed2, heapinfo1[block_pointed1].busy_frag.frag_size[frag_pointed1], previous, 0);
if(add_heap_area_pair(previous, block_pointed1, frag_pointed1, block_pointed2, frag_pointed2)){
- if(ignore_done < xbt_dynar_length(mmalloc_ignore)){
- if(in_mmalloc_ignore(block_pointed1, frag_pointed1))
+ if(ignore_done < xbt_dynar_length(mc_comparison_ignore)){
+ if(in_mc_comparison_ignore(block_pointed1, frag_pointed1))
res_compare = compare_area(addr_frag_pointed1, addr_frag_pointed2, heapinfo1[block_pointed1].busy_frag.frag_size[frag_pointed1], previous, 1);
else
res_compare = compare_area(addr_frag_pointed1, addr_frag_pointed2, heapinfo1[block_pointed1].busy_frag.frag_size[frag_pointed1], previous, 0);