core/heap.c
/* remove_vm MUST be false iff this is heap memory, which is updated separately */
remove_vm MUST be false iff this is heap memory, which is updated separately
remove_vm MUST be false iff this is heap memory which is updated separately
static void
update_dynamo_areas_on_release(app_pc start, app_pc end, bool remove_vm)
{
    if (!vm_areas_exited && !heap_exiting) { 
        if (vmm_is_reserved_unit(&heapmgt->vmheap, start, end - start))
            return;
        if (remove_vm) {
            remove_dynamo_vm_area(start, end);
        } else {
            mark_dynamo_vm_areas_stale();
            dynamo_areas_pending_remove = true;
        }
    }
}
static void update_dynamo_areas_on_release ( app_pc start , app_pc end , bool remove_vm ) { if ( ! vm_areas_exited && ! heap_exiting ) { if ( vmm_is_reserved_unit ( & heapmgt -> vmheap , start , end - start ) ) return ; if ( remove_vm ) { remove_dynamo_vm_area ( start , end ) ; } else { mark_dynamo_vm_areas_stale ( ) ; dynamo_areas_pending_remove = true ; } } }
remove_vm MUST be false iff this is heap memory, which is updated separately
remove_vm MUST be false iff this is heap memory which is updated separately
/* avoid problems when exiting */ /* case 3045: areas inside the vmheap reservation are not added to the list */ /* due to cyclic dependencies bet heap and vmareas we cannot remove incrementally.
             * the pending set is protected by the same lock needed to synch the vm areas,
             * so we will never mis-identify free memory as DR memory.
             */