(FILECREATED " 5-Mar-85 17:30:58" {ERIS}<SANNELLA>LISP>VMEMBANG.;10 5809 changes to: (FNS TEST.ARRAYS TEST.\ALLOCBLOCK) previous date: "26-Feb-85 10:54:11" {ERIS}<SANNELLA>LISP>VMEMBANG.;8) (* Copyright (c) 1985 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT VMEMBANGCOMS) (RPAQQ VMEMBANGCOMS ((FNS TEST.ARRAYS TEST.\ALLOCBLOCK))) (DEFINEQ (TEST.ARRAYS [LAMBDA (RESETFLG MAX.TOTAL.SIZE MAX.VMEM.SIZE) (* mjs " 5-Mar-85 17:29") (if (NULL MAX.TOTAL.SIZE) then (SETQ MAX.TOTAL.SIZE 1000000)) (if (NOT ARRAYBLOCKCHECKING) then (SETQ ARRAYBLOCKCHECKING T) (printout T "resetting ARRAYBLOCKCHECKING to T" T)) (PROG (SIZE OLDARRAY TOTALSIZE) (if [OR RESETFLG (NOT (BOUNDP (QUOTE TEST.ARRAYS.LIST))) (NLISTP TEST.ARRAYS.LIST) (for X in TEST.ARRAYS.LIST thereis (NOT (ARRAYP X] then (SETQ TEST.ARRAYS.LIST NIL) (printout T "resetting TEST.ARRAYS.LIST" T)) (for OP from 1 until (AND MAX.VMEM.SIZE (GREATERP (VMEMSIZE) MAX.VMEM.SIZE)) do (BLOCK) (SETQ TOTALSIZE (for X in TEST.ARRAYS.LIST sum (ARRAYSIZE X))) (printout T "Operation " OP ,, "total size=" TOTALSIZE ,, "#arrays=" (LENGTH TEST.ARRAYS.LIST) ,, "vmemsize=" (VMEMSIZE) ,,, (DATE) T) (if (LESSP TOTALSIZE MAX.TOTAL.SIZE) then (SETQ SIZE (RAND 0 65533)) (printout T ,,, "ADDING array" ,,, "size=" SIZE T) (SETQ TEST.ARRAYS.LIST (CONS (ARRAY SIZE) TEST.ARRAYS.LIST)) else [SETQ OLDARRAY (CAR (NTH TEST.ARRAYS.LIST (RAND 1 (LENGTH TEST.ARRAYS.LIST] (printout T ,,, "DELETING array" ,,, "size=" (ARRAYSIZE OLDARRAY) T) (SETQ TEST.ARRAYS.LIST (DREMOVE OLDARRAY TEST.ARRAYS.LIST))) (\PARSEARRAYSPACE]) (TEST.\ALLOCBLOCK [LAMBDA (RESETFLG MAX.TOTAL.SIZE MAX.VMEM.SIZE) (* mjs " 5-Mar-85 17:30") (if (NULL MAX.TOTAL.SIZE) then (SETQ MAX.TOTAL.SIZE 1000000)) (if (NOT ARRAYBLOCKCHECKING) then (SETQ ARRAYBLOCKCHECKING T) (printout T "resetting ARRAYBLOCKCHECKING to T" T)) (PROG (#CELLS OLDBLOCK TOTALSIZE GCTYPE INITONPAGE ALIGN NEWBLOCK) (if [OR RESETFLG (NOT (BOUNDP (QUOTE TEST.\ALLOCBLOCK.LIST))) (NLISTP TEST.\ALLOCBLOCK.LIST) (for X in TEST.\ALLOCBLOCK.LIST thereis (NOT (LISTP X] then (SETQ TEST.\ALLOCBLOCK.LIST NIL) (printout T "resetting TEST.\ALLOCBLOCK.LIST " T)) (for OP from 1 until (AND MAX.VMEM.SIZE (GREATERP (VMEMSIZE) MAX.VMEM.SIZE)) do (BLOCK) (SETQ TOTALSIZE (for X in TEST.\ALLOCBLOCK.LIST sum (CADR X))) (printout T "Operation " OP "total size=" ,, TOTALSIZE ,, "#blocks=" (LENGTH TEST.\ALLOCBLOCK.LIST) ,, "vmemsize=" (VMEMSIZE) ,,, (DATE) T) (if (LESSP TOTALSIZE MAX.TOTAL.SIZE) then (SETQ GCTYPE (SELECTQ (RAND 1 3) (1 UNBOXEDBLOCK.GCT) (2 PTRBLOCK.GCT) (3 CODEBLOCK.GCT) (SHOULDNT))) (SETQ INITONPAGE (RAND 1 150)) (if (GREATERP INITONPAGE 127) then (SETQ INITONPAGE NIL)) [if (EQ GCTYPE CODEBLOCK.GCT) then (* codeblocks can't be aligned tighter than 2 cells <see AR 3373>) (SETQ ALIGN (SELECTQ (RAND 0 1) (0 2) (1 NIL) (SHOULDNT))) else (SETQ ALIGN (SELECTQ (RAND 0 3) (0 2) (1 4) (2 8) (3 NIL) (SHOULDNT] (SETQ #CELLS (if (AND INITONPAGE ALIGN (EQ GCTYPE CODEBLOCK.GCT)) then (RAND 0 32768) else (RAND 0 65533))) (printout T "ADDING block #cells=" #CELLS " gctype=" GCTYPE " INITONPAGE=" INITONPAGE " ALIGN=" ALIGN T) (SETQ NEWBLOCK (\ALLOCBLOCK #CELLS GCTYPE INITONPAGE ALIGN)) (SETQ TEST.\ALLOCBLOCK.LIST (CONS (LIST NEWBLOCK #CELLS GCTYPE INITONPAGE ALIGN) TEST.\ALLOCBLOCK.LIST)) (if (AND INITONPAGE (GREATERP (PLUS (fetch (POINTER CELLINPAGE) of NEWBLOCK) INITONPAGE) 128)) then (printout T "bad INITONPAGE; CELLINPAGE=" (fetch (POINTER CELLINPAGE) of NEWBLOCK) T) (ERROR)) (if (AND ALIGN (NOT (EVENP (fetch (POINTER CELLINSEGMENT) of NEWBLOCK) ALIGN))) then (printout T "bad alignment; CELLINSEGMENT=" (fetch (POINTER CELLINSEGMENT) of NEWBLOCK) (ERROR))) (if (AND INITONPAGE ALIGN (EQ GCTYPE CODEBLOCK.GCT) (GREATERP (PLUS (fetch (POINTER CELLINSEGMENT) of NEWBLOCK) #CELLS) 32768)) then (printout T "code segment crosses segment boundary" T) (ERROR)) else [SETQ OLDBLOCK (CAR (NTH TEST.\ALLOCBLOCK.LIST (RAND 1 (LENGTH TEST.\ALLOCBLOCK.LIST] (printout T ,,, "DELETING array" ,,, "size=" (CADR OLDBLOCK) T) (SETQ TEST.\ALLOCBLOCK.LIST (DREMOVE OLDBLOCK TEST.\ALLOCBLOCK.LIST))) (\PARSEARRAYSPACE]) ) (PUTPROPS VMEMBANG COPYRIGHT ("Xerox Corporation" 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (376 5730 (TEST.ARRAYS 386 . 2025) (TEST.\ALLOCBLOCK 2027 . 5728))))) STOP