To: jim@gsi-cam, info-falcon@gsi-cam from: pfc re: linking --Text Follows This Line-- Here are a few facts, ideas, and design issues regarding function linking. Running this function on the falcon reveals: (defun count-refs () (let ((functions '()) (refs 0)) (do-all-symbols (s t) (when (and (fboundp s) (compiled-function-p (symbol-function s)) (not (member-eq s functions))) (push s functions) (incf refs (length (k2::%compiled-function-refs (symbol-function s)))))) (print (length functions)) (print (/ refs 3)))) ;each reference takes up ;3 slots ;number of args ;offset ;actual pointer to function called Number of compiled functions on the K = 2027 Total number of external references = 8876 The reverse pointers do not need to carry number of args and offset information. Therefore the space required to store the reverse pointers would be 8876 words. This assumes the reverse pointers are stored in a vector. When a function cell is bashed we must insure that the reverse pointers are updated. FMAKEUNBOUND, (SETF (SYMBOL-FUNCTION foo)), and friends must update the reverse pointers. Open question: How does this interact with garbage collection?? --pfc