1
0
mirror of synced 2026-01-12 00:42:56 +00:00
Interlisp.medley/clos/precom1.lisp
2021-03-08 21:12:00 -08:00

31 lines
1.0 KiB
Common Lisp

;;;-*-Mode:LISP; Package:(CLOS LISP 1000); Base:10; Syntax:Common-lisp -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1991 Venue
;;; All rights reserved.
;;; *************************************************************************
;;;
(in-package 'clos)
;;;
;;; pre-allocate generic function caches. The hope is that this will put
;;; them nicely together in memory, and that that may be a win. Of course
;;; the first gc copy will probably blow that out, this really wants to be
;;; wrapped in something that declares the area static.
;;;
;;; This preallocation only creates about 25% more caches than CLOS itself
;;; uses need. Some ports may want to preallocate some more of these.
;;;
(eval-when (load)
(flet ((allocate (n size)
(mapcar #'free-cache
(mapcar #'get-cache
(make-list n :initial-element size)))))
(allocate 128 4)
(allocate 64 8)
(allocate 64 9)
(allocate 32 16)
(allocate 16 17)
(allocate 16 32)
(allocate 1 64)))