anchor.diff:  ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   
  -;; $Id: proxy.lisp,v 1.21 2005-04-24 13:26:40 espen Exp $
  +;; $Id: proxy.lisp,v 1.22 2006-02-02 18:37:46 espen Exp $
   
   (in-package "GLIB")
   
  
positive.code: (internal *instance-cache*)
  (defvar *instance-cache* (make-hash-table :test #'eql))
  
  (defun cache-instance (instance)
    (setf
     (gethash (sap-int (proxy-location instance)) *instance-cache*)
     (make-weak-pointer instance)))
  
  (defun find-cached-instance (location)
    (let ((ref (gethash (sap-int location) *instance-cache*)))
      (when ref
        (weak-pointer-value ref))))
  
  (defun instance-cached-p (location)
    (gethash (sap-int location) *instance-cache*))
  
negative.code:   (remhash (sap-int location) *instance-cache*))
  
  ;; For debuging
  (defun list-cached-instances ()
    (let ((instances ()))
      (maphash #'(lambda (location ref)
  		 (declare (ignore location))
  		 (push ref instances))
  	     *instance-cache*)
      instances))
  			
  