X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fcache.lisp;h=c559b6199347b0ab7fe31e2fbbeeacdf8bc7aa83;hb=c548f73e8dd676d6ec4576eba6ab661a5061bdfe;hp=5ce3ac1e4c9a3758b871f933ff149783c210c57d;hpb=a3f37bab2cbaf80db811d480d5b2b95850def3b9;p=sbcl.git diff --git a/src/pcl/cache.lisp b/src/pcl/cache.lisp index 5ce3ac1..c559b61 100644 --- a/src/pcl/cache.lisp +++ b/src/pcl/cache.lisp @@ -343,7 +343,10 @@ (setf length (* 2 length))) (tagbody :again - (setf (cache-vector copy) (make-array length :initial-element '..empty..) + ;; Blow way the old vector first, so a GC potentially triggered by + ;; MAKE-ARRAY can collect it. + (setf (cache-vector copy) #() + (cache-vector copy) (make-array length :initial-element '..empty..) (cache-depth copy) 0 (cache-mask copy) (compute-cache-mask length (cache-line-size cache)) (cache-limit copy) (compute-limit (/ length (cache-line-size cache))))