Ignore:
Timestamp:
Sep 28, 2009, 10:42:22 PM (11 years ago)
Author:
gb
Message:

Work-in-progress. Current plan:

  • memory layout for x8664 (at least) pure area (1GB reserved) managed-static area unmapped, reserved for expansion of managed-static, static-cons areas (127GB) static cons area dynamic area(s).
  • refbits: sparse, but essentially the same size as before.
  • need to memoize writes of dynamic pointers (static-cons area or above) to managed static area.
  • need to save/restore the refbits that belong to the managed-static area in the image.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/purify/source/lisp-kernel/image.c

    r12886 r12890  
    226226
    227227  case AREA_MANAGED_STATIC:
    228     a = new_area(pure_space_limit, pure_space_limit, AREA_MANAGED_STATIC);
     228    a = new_area(pure_space_limit, pure_space_limit+align_to_power_of_2(mem_size,log2_page_size), AREA_MANAGED_STATIC);
     229    a->active = a->low+mem_size;
     230    if (mem_size) {
     231      if (!MapFile(a->low,
     232                   pos,
     233                   align_to_power_of_2(mem_size,log2_page_size),
     234                   MEMPROTECT_RWX,
     235                   fd)) {
     236        return;
     237      }
     238    }
     239    /* Need to save/restore persistent refbits. */
    229240    sect->area = a;
     241    managed_static_area = a;
    230242    break;
    231243
     244    /* In many respects, the static_cons_area is part of the dynamic
     245       area; it's physically adjacent to it (immediately precedes the
     246       dynamic area in memory) and its contents are subject to full
     247       GC (but not compaction.)  It's maintained as a seperate section
     248       in the image file, at least for now. */
     249
     250
    232251  case AREA_STATIC_CONS:
    233     a = new_area(pure_space_limit, pure_space_limit, AREA_STATIC_CONS);
     252    addr = (void *) lisp_global(HEAP_START);
     253    a = new_area(addr-align_to_power_of_2(mem_size,log2_page_size), addr, AREA_STATIC_CONS);
    234254    sect->area = a;
     255    static_cons_area = a;
    235256    break;
    236257
     
    311332          relocate_area_contents(a, bias);
    312333        }
    313         managed_static_area = a;
    314334        add_area_holding_area_lock(a);
    315335        break;
     
    318338          relocate_area_contents(a, bias);
    319339        }
    320         static_cons_area = a;
    321340        add_area_holding_area_lock(a);
    322341        break;
Note: See TracChangeset for help on using the changeset viewer.