bootrecord = thebootrecord;
  static void boot (VM_BootRecord thebootrecord) {    // VM.sysWriteln("Allocator.boot entered");    verbose = bootrecord.verboseGC;    bootrecord = thebootrecord;	    // smallHeapSize might not originally have been an even number of pages    smallHeapSize = bootrecord.smallSpaceSize;    int oneHeapSize = VM_Memory.roundUpPage(smallHeapSize / 2);    int largeSize = bootrecord.largeSpaceSize;    int ps = VM_Memory.getPagesize();    int immortalSize = VM_Memory.roundUpPage(1024 * 1024 + (4 * largeSize / ps) + 4 * ps);    if (verbose >= 2) VM.sysWriteln("Attaching heaps");    VM_Heap.boot(bootHeap, bootrecord);    immortalHeap.attach(immortalSize);    largeHeap.attach(largeSize);    fromHeap.attach(oneHeapSize);    toHeap.attach(oneHeapSize);    // Allocation of small objects are from from-space    areaCurrentAddress = fromHeap.start;    areaEndAddress     = fromHeap.end;    // Initialize these fields use for FAAs    if (verbose >= 2) VM.sysWriteln("Setting up addresses used for FAA");    addrAreaCurrentAddress = VM_Magic.getTocPointer().add(VM_Entrypoints.areaCurrentAddressField.getOffset());    addrMatureCurrentAddress = VM_Magic.getTocPointer().add(VM_Entrypoints.matureCurrentAddressField.getOffset());        if (COMPILE_FOR_TIMING_RUN) {      if (verbose >= 2) VM.sysWriteln("Touching toHeap, largeSpace, and fromHeap");      toHeap.touchPages();      largeHeap.touchPages();      fromHeap.touchPages();    }    VM_GCUtil.boot();    VM_Finalizer.setup();    // VM_Statistics.boot();     if (verbose >= 1) showParameter();  }  // boot()