heap_area_pair_free((heap_area_pair_t) * (void **) d);
}
+static void heap_area_free(heap_area_t area){
+ xbt_free(area);
+ area = NULL;
+}
+
/************************************************************************************/
static heap_area_t new_heap_area(int block, int fragment){
if(heapinfo1[current_pair->block1].busy_frag.equal_to[current_pair->fragment1] != NULL){
previous_area = heapinfo1[current_pair->block1].busy_frag.equal_to[current_pair->fragment1];
- xbt_free(heapinfo2[previous_area->block].busy_frag.equal_to[previous_area->fragment]);
+ heap_area_free(heapinfo2[previous_area->block].busy_frag.equal_to[previous_area->fragment]);
heapinfo2[previous_area->block].busy_frag.equal_to[previous_area->fragment] = NULL;
- xbt_free(previous_area);
+ heap_area_free(previous_area);
}
if(heapinfo2[current_pair->block2].busy_frag.equal_to[current_pair->fragment2] != NULL){
previous_area = heapinfo2[current_pair->block2].busy_frag.equal_to[current_pair->fragment2];
- xbt_free(heapinfo1[previous_area->block].busy_frag.equal_to[previous_area->fragment]);
+ heap_area_free(heapinfo1[previous_area->block].busy_frag.equal_to[previous_area->fragment]);
heapinfo1[previous_area->block].busy_frag.equal_to[previous_area->fragment] = NULL;
- xbt_free(previous_area);
+ heap_area_free(previous_area);
}
heapinfo1[current_pair->block1].busy_frag.equal_to[current_pair->fragment1] = new_heap_area(current_pair->block2, current_pair->fragment2);
if(heapinfo1[current_pair->block1].busy_block.equal_to != NULL){
previous_area = heapinfo1[current_pair->block1].busy_block.equal_to;
- xbt_free(heapinfo2[previous_area->block].busy_block.equal_to);
- heapinfo2[previous_area->block].busy_block.equal_to = NULL;
- xbt_free(previous_area);
+ heap_area_free(heapinfo2[previous_area->block].busy_block.equal_to);
+ heapinfo2[previous_area->block].busy_block.equal_to = NULL;
+ heap_area_free(previous_area);
}
if(heapinfo2[current_pair->block2].busy_block.equal_to != NULL){
previous_area = heapinfo2[current_pair->block2].busy_block.equal_to;
- xbt_free(heapinfo1[previous_area->block].busy_block.equal_to);
+ heap_area_free(heapinfo1[previous_area->block].busy_block.equal_to);
heapinfo1[previous_area->block].busy_block.equal_to = NULL;
- xbt_free(previous_area);
+ heap_area_free(previous_area);
}
heapinfo1[current_pair->block1].busy_block.equal_to = new_heap_area(current_pair->block2, current_pair->fragment2);
to_ignore2 = i2;
if(MC_is_active()){
- MC_ignore_global_variable("heaplimit", 1);
- MC_ignore_global_variable("s_heap", 1);
- MC_ignore_global_variable("heapbase1", 1);
- MC_ignore_global_variable("heapbase2", 1);
- MC_ignore_global_variable("heapinfo1", 1);
- MC_ignore_global_variable("heapinfo2", 1);
- MC_ignore_global_variable("heapsize1", 1);
- MC_ignore_global_variable("heapsize2", 1);
- MC_ignore_global_variable("to_ignore1", 1);
- MC_ignore_global_variable("to_ignore2", 1);
+ MC_ignore_global_variable("heaplimit");
+ MC_ignore_global_variable("s_heap");
+ MC_ignore_global_variable("heapbase1");
+ MC_ignore_global_variable("heapbase2");
+ MC_ignore_global_variable("heapinfo1");
+ MC_ignore_global_variable("heapinfo2");
+ MC_ignore_global_variable("heapsize1");
+ MC_ignore_global_variable("heapsize2");
+ MC_ignore_global_variable("to_ignore1");
+ MC_ignore_global_variable("to_ignore2");
}
}
while(i<=heaplimit){
if(heapinfo1[i].type == 0){
- xbt_free(heapinfo1[i].busy_block.equal_to);
+ heap_area_free(heapinfo1[i].busy_block.equal_to);
heapinfo1[i].busy_block.equal_to = NULL;
}
if(heapinfo1[i].type > 0){
for(j=0; j < (size_t) (BLOCKSIZE >> heapinfo1[i].type); j++){
- xbt_free(heapinfo1[i].busy_frag.equal_to[j]);
+ heap_area_free(heapinfo1[i].busy_frag.equal_to[j]);
heapinfo1[i].busy_frag.equal_to[j] = NULL;
}
}
while(i<=heaplimit){
if(heapinfo2[i].type == 0){
- xbt_free(heapinfo2[i].busy_block.equal_to);
+ heap_area_free(heapinfo2[i].busy_block.equal_to);
heapinfo2[i].busy_block.equal_to = NULL;
}
if(heapinfo2[i].type > 0){
for(j=0; j < (size_t) (BLOCKSIZE >> heapinfo2[i].type); j++){
- xbt_free(heapinfo2[i].busy_frag.equal_to[j]);
+ heap_area_free(heapinfo2[i].busy_frag.equal_to[j]);
heapinfo2[i].busy_frag.equal_to[j] = NULL;
}
}
}
if(heapinfo1[i1].busy_frag.equal_to[j1] == NULL){
- fprintf(stderr,"Block %zu, fragment %zu not found (size_used = %zd, address = %p, ignore %d)\n", i1, j1, heapinfo1[i1].busy_frag.frag_size[j1], addr_frag1, heapinfo1[i1].busy_frag.ignore[j1]);
+ XBT_DEBUG("Block %zu, fragment %zu not found (size_used = %zd, address = %p, ignore %d)\n", i1, j1, heapinfo1[i1].busy_frag.frag_size[j1], addr_frag1, heapinfo1[i1].busy_frag.ignore[j1]);
i2 = heaplimit + 1;
i1 = heaplimit + 1;
nb_diff1++;