Opened 11 years ago
Closed 10 years ago
#709 closed defect (fixed)
Clean up bindings in saved image
Reported by: | gz | Owned by: | rme |
---|---|---|---|
Priority: | normal | Milestone: | Clozure CL 1.6 |
Component: | Runtime (threads, GC) | Version: | trunk |
Keywords: | Cc: |
Description
The following should be done at some point.
(in-package "CCL") (defun remove-extra-symbol-binding-indices () (let* ((n 0)) (do-all-symbols (s n) (let* ((bits (%symbol-bits s)) (idx (symbol-binding-index s))) (unless (zerop idx) (unless (and (not (or (logbitp $sym_vbit_const bits) (logbitp $sym_vbit_global bits))) (or (logbitp $sym_vbit_special bits) (let* ((name (symbol-name s)) (len (length name))) (and (> len 1) (let* ((initial (schar name 0)) (final (schar name (1- len)))) (and (eql initial final) (or (and (eql initial #\*)) (eql initial #\%)))))))) (incf n) ;; Pretend that the symbol is DEFGLOBALED, to ;; persuade ENSURE-BINDING-INDEX to remove ;; the symbol from its inverse mapping. (%symbol-bits s (logior $sym_vbit_global bits)) (ensure-binding-index s) (%symbol-bits s bits))))))) Doing: 1) update to the current trunk, especially including the changes to nfcomp.lisp in r13745. Rebuild the image with these changes in effect. 2) In a new image, note that ? (ccl::next-binding-index) returns a value likely > 13000, then call REMOVE-EXTRA-SYMBOL-BINDING-INDICES and do a full/clean rebuild. Quit and load the (new) new image. 3) In that (new) new image, (ccl::next-binding-index) should return ~900.
Change History (3)
comment:1 Changed 11 years ago by rme
- Status changed from new to assigned
comment:2 Changed 10 years ago by rme
(In [14394]) Linux x86[-64] images, without ridiculously high symbol binding index values. (See ticket:709)
comment:3 Changed 10 years ago by rme
- Resolution set to fixed
- Status changed from assigned to closed
Checked in updated linuxx8632, linuxx8664, and win32 images.
(ccl::next-binding-index) should produce a value in the low 900s to low 1000s in all images now.
Note: See
TracTickets for help on using
tickets.
Several current trunk binaries already have this correction, I believe. There are a few that haven't, which I'll update when building 1.6 binaries (if not sooner).