(FILECREATED "12-Dec-85 16:36:48" {ERIS}<PROLOGCORE>PATCH>ALLOCPATCH.;1 1824
changes to: (VARS ALLOCPATCHCOMS)
(FNS \ALLOCVIRTUALPAGEBLOCK)
previous date: "12-Dec-85 16:29:57" {ERIS}<PROLOGCORE>PATCH>ALLOCPATCH.;2)
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT ALLOCPATCHCOMS)
(RPAQQ ALLOCPATCHCOMS ((FNS \ADVANCE.ARRAY.SEGMENTS)))
(DEFINEQ
(\ADVANCE.ARRAY.SEGMENTS
[LAMBDA (NXTPAGE) (* bvm: "12-Dec-85 16:18")
(* * Called when the first 8mb are exhausted, and we want to switch array space into the next area, starting with
page NXTPAGE -- have to first clean up what's left in the old area)
(PROG (NCELLSLEFT)
(SETQ.NOREF \ArrayFrLst2 (COND
((IGEQ [SETQ NCELLSLEFT
(IPLUS (UNFOLD (SUB1 (IDIFFERENCE \NxtArrayPage
(fetch (POINTER PAGE#)
of \ArrayFrLst)))
CELLSPERPAGE)
(IDIFFERENCE CELLSPERPAGE (fetch (POINTER
CELLINPAGE)
of \ArrayFrLst]
\MinArrayBlockSize) (* Make the rest of the already allocated array space
into a small block)
(\MERGEBACKWARD (\MAKEFREEARRAYBLOCK \ArrayFrLst NCELLSLEFT))
(create POINTER
PAGE# ← \LeastMDSPage))
(T \ArrayFrLst)))
[SETQ.NOREF \ARRAYSPACE2 (SETQ.NOREF \ArrayFrLst (create POINTER
PAGE# ←(SETQ \NxtArrayPage
NXTPAGE]
(* Return code to tell \ALLOCBLOCK.NEW to notice the
new arrangement)
(RETURN 0])
)
(PUTPROPS ALLOCPATCH COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (405 1743 (\ADVANCE.ARRAY.SEGMENTS 415 . 1741)))))
STOP