Changeset 12890


Ignore:
Timestamp:
Sep 28, 2009, 10:42:22 PM (10 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.
Location:
branches/purify/source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/purify/source/lisp-kernel/area.h

    r12884 r12890  
    192192
    193193#ifdef X8664
    194 #define PURESPACE_RESERVE 0x40000000 /* 1GB */
    195 #else
    196 #define PURESPACE_RESERVE 0x04000000 /* 64MB */
     194#define PURESPACE_RESERVE 0x2000000000LL /* 128 GB */
     195#define PURESPACE_SIZE (1LL<<30LL)
     196#else
     197#define PURESPACE_RESERVE (128<<20) /* MB */
     198#define PURESPACE_SIZE (64<<20)
    197199#endif
    198200
  • 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;
  • branches/purify/source/lisp-kernel/pmcl-kernel.c

    r12886 r12890  
    590590  static_space_limit = static_space_start + STATIC_RESERVE;
    591591  pure_space_start = pure_space_active = start;
    592   pure_space_limit = start + PURESPACE_RESERVE;
    593   start = pure_space_limit;
     592  pure_space_limit = start + PURESPACE_SIZE;
     593  start += PURESPACE_RESERVE;
    594594
    595595  /*
  • branches/purify/source/xdump/xx8664-fasload.lisp

    r10648 r12890  
    7070   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    7171   :static-space-init-function 'x8664-initialize-static-space
    72    :purespace-reserve (ash 1 30)
     72   :purespace-reserve (ash 128 30)
    7373   :static-space-address (+ (ash 1 16) (ash 2 12))
    7474))
     
    9191   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    9292   :static-space-init-function 'x8664-initialize-static-space
    93    :purespace-reserve (ash 1 30)
     93   :purespace-reserve (ash 128 30)
    9494   :static-space-address (+ (ash 1 16) (ash 2 12))
    9595))
     
    110110   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    111111   :static-space-init-function 'x8664-initialize-static-space
    112    :purespace-reserve (ash 1 30)
     112   :purespace-reserve (ash 128 30)
    113113   :static-space-address (+ (ash 1 16) (ash 2 12))
    114114))
     
    129129   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    130130   :static-space-init-function 'x8664-initialize-static-space
    131    :purespace-reserve (ash 1 30)
     131   :purespace-reserve (ash 128 30)
    132132   :static-space-address (+ (ash 1 16) (ash 2 12))
    133133))
     
    148148   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    149149   :static-space-init-function 'x8664-initialize-static-space
    150    :purespace-reserve (ash 1 30)
     150   :purespace-reserve (ash 128 30)
    151151   :static-space-address (+ (ash 1 16) (ash 2 12))
    152152))
Note: See TracChangeset for help on using the changeset viewer.