X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fpurify.lisp;h=ecf071c1adbca34385ad14874c907921f4dc5eed;hb=0c3bbfaa2286626a2d915c8810f690aefc702661;hp=162b86c73b70a65da4cc891b10bfdd6cc30d24b1;hpb=0e2c926fea68a32c8ec58f12daa0c2b5befef1d4;p=sbcl.git diff --git a/src/code/purify.lisp b/src/code/purify.lisp index 162b86c..ecf071c 100644 --- a/src/code/purify.lisp +++ b/src/code/purify.lisp @@ -21,11 +21,11 @@ ((zerop n) (let ((old-ie (car *info-environment*))) (setq *info-environment* - (list* (make-info-environment :name "Working") - (compact-info-environment (first *info-environment*) - :name name) - (rest *info-environment*))) - (shrink-vector (sb!c::volatile-info-env-table old-ie) 0))) + (list* (make-info-environment :name "Working") + (compact-info-environment (first *info-environment*) + :name name) + (rest *info-environment*))) + (%shrink-vector (sb!c::volatile-info-env-table old-ie) 0))) (t (compact-environment-aux name (1- n)) n))) @@ -42,8 +42,15 @@ ENVIRONMENT-NAME is gratuitous documentation for compacted version of the current global environment (as seen in SB!C::*INFO-ENVIRONMENT*.) If NIL is - supplied, then environment compaction is inhibited." + supplied, then environment compaction is inhibited. - (when environment-name (compact-environment-aux environment-name 200)) - (%purify (get-lisp-obj-address root-structures) - (get-lisp-obj-address nil))) + This function is a no-op on platforms using the generational garbage + collector (x86, x86-64, ppc)." + #!+gencgc + (declare (ignore root-structures environment-name)) + #!-gencgc + (progn + (when environment-name + (compact-environment-aux environment-name 200)) + (%purify (get-lisp-obj-address root-structures) + (get-lisp-obj-address nil))))