/[emacs]/emacs/src/unexmacosx.c
ViewVC logotype

Diff of /emacs/src/unexmacosx.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.2.1 by miles, Fri Apr 4 06:21:03 2003 UTC revision 1.1.2.2 by miles, Tue Oct 14 23:22:47 2003 UTC
# Line 364  build_region_list () Line 364  build_region_list ()
364  }  }
365    
366    
367  #define MAX_UNEXEC_REGIONS 30  #define MAX_UNEXEC_REGIONS 200
368    
369  int num_unexec_regions;  int num_unexec_regions;
370  vm_range_t unexec_regions[MAX_UNEXEC_REGIONS];  vm_range_t unexec_regions[MAX_UNEXEC_REGIONS];
# Line 403  find_emacs_zone_regions () Line 403  find_emacs_zone_regions ()
403                                        unexec_regions_recorder);                                        unexec_regions_recorder);
404  }  }
405    
406    static int
407    unexec_regions_sort_compare (const void *a, const void *b)
408    {
409      vm_address_t aa = ((vm_range_t *) a)->address;
410      vm_address_t bb = ((vm_range_t *) b)->address;
411    
412      if (aa < bb)
413        return -1;
414      else if (aa > bb)
415        return 1;
416      else
417        return 0;
418    }
419    
420    static void
421    unexec_regions_merge ()
422    {
423      int i, n;
424      vm_range_t r;
425    
426      qsort (unexec_regions, num_unexec_regions, sizeof (unexec_regions[0]),
427             &unexec_regions_sort_compare);
428      n = 0;
429      r = unexec_regions[0];
430      for (i = 1; i < num_unexec_regions; i++)
431        {
432          if (r.address + r.size == unexec_regions[i].address)
433            {
434              r.size += unexec_regions[i].size;
435            }
436          else
437            {
438              unexec_regions[n++] = r;
439              r = unexec_regions[i];
440            }
441        }
442      unexec_regions[n++] = r;
443      num_unexec_regions = n;
444    }
445    
446    
447  /* More informational messages routines.  */  /* More informational messages routines.  */
448    
# Line 863  unexec (char *outfile, char *infile, voi Line 903  unexec (char *outfile, char *infile, voi
903    read_load_commands ();    read_load_commands ();
904    
905    find_emacs_zone_regions ();    find_emacs_zone_regions ();
906      unexec_regions_merge ();
907    
908    in_dumped_exec = 1;    in_dumped_exec = 1;
909    
# Line 935  unexec_free (void *ptr) Line 976  unexec_free (void *ptr)
976    else    else
977      malloc_zone_free (emacs_zone, ptr);      malloc_zone_free (emacs_zone, ptr);
978  }  }
979    
980    /* arch-tag: 1a784f7b-a184-4c4f-9544-da8619593d72
981       (do not change this comment) */

Legend:
Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26