* optimizations: LOGNOR on fixnums is improved in the MIPS backend.
(Thanks to Thiemo Seufer)
* bug fix: nested reader invokations work correctly
+ * bug fix: it is possible to have simultaneous references to foreign
+ code and foreign data with the same name.
* threads
** added x86-64 support
** incompatible change: the threading api now works with thread
(when (<= sb!vm:linkage-table-space-start
addr
sb!vm:linkage-table-space-end)
- (maphash (lambda (name info)
+ (maphash (lambda (name-and-datap info)
(let ((table-addr (linkage-info-address info)))
(when (<= table-addr
addr
(+ table-addr sb!vm:linkage-table-entry-size))
- (return-from sap-foreign-symbol name))))
+ (return-from sap-foreign-symbol (car name-and-datap)))))
*linkage-info*))
#!+os-provides-dladdr
(with-alien ((info (struct dl-info
(hash-table-count *linkage-info*)
name))
(write-linkage-table-entry table-address real-address datap)
- (setf (gethash name *linkage-info*)
+ (setf (gethash (cons name datap) *linkage-info*)
(make-linkage-info :address table-address :datap datap))))
;;; Add a foreign linkage entry if none exists, return the address
(defun ensure-foreign-symbol-linkage (name datap)
(/show0 "ensure-foreign-symbol-linkage")
(sb!thread:with-mutex (*foreign-lock*)
- (let ((info (or (gethash name *linkage-info*)
+ (let ((info (or (gethash (cons name datap) *linkage-info*)
(link-foreign-symbol name datap))))
(linkage-info-address info))))
;;; shared libraries have been reopened, and after a previously loaded
;;; shared object is reloaded.
(defun update-linkage-table ()
- ;; Doesn't take care of it's own locking -- callers are responsible
- (maphash (lambda (name info)
- (let* ((datap (linkage-info-datap info))
+ ;; Doesn't take care of its own locking -- callers are responsible
+ (maphash (lambda (name-and-datap info)
+ (let* ((name (car name-and-datap))
+ (datap (cdr name-and-datap))
(table-address (linkage-info-address info))
(real-address
(ensure-dynamic-foreign-symbol-address name datap)))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.2.35"
+"0.9.2.36"