From b79d3faaf5e1a2ead964db16ef99177b561a65f0 Mon Sep 17 00:00:00 2001 From: dtc <dtc> Date: Mon, 6 Apr 1998 02:46:28 +0000 Subject: [PATCH] Enhance the performance of allocate-standard-instance for CMUCL, by inlining the slots vector allocation and initialisation. --- pcl/braid.lisp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pcl/braid.lisp b/pcl/braid.lisp index 9ac6f8750..ff73a7ec6 100644 --- a/pcl/braid.lisp +++ b/pcl/braid.lisp @@ -42,10 +42,26 @@ (let ((instance (%%allocate-instance--class)) (no-of-slots (wrapper-no-of-instance-slots wrapper))) (setf (std-instance-wrapper instance) wrapper) + #-cmu (setf (std-instance-slots instance) (if slots-init-p (make-array no-of-slots :initial-contents slots-init) (make-array no-of-slots :initial-element *slot-unbound*))) + #+cmu ; faster version for CMUCL + (setf (std-instance-slots instance) + (cond (slots-init-p + ;; Inline the slots vector allocation and initialisation. + (let ((slots (make-array no-of-slots :initial-element 0))) + (do ((rem-slots slots-init (rest rem-slots)) + (i 0 (1+ i))) + ((>= i no-of-slots)) ;endp rem-slots)) + (declare (list rem-slots) + (type kernel:index i)) + (setf (aref slots i) (first rem-slots))) + slots)) + (t + (make-array no-of-slots + :initial-element pcl::*slot-unbound*)))) instance) #+new-kcl-wrapper (apply #'si:make-structure wrapper -- GitLab