(or (check-version "native code"
+backend-fasl-file-implementation+
+fasl-file-version+)
- (check-version "byte code"
- (backend-byte-fasl-file-implementation)
- +fasl-file-version+)
(error "~S was compiled for implementation ~A, but this is a ~A."
stream
implementation
;; don't. (CMU CL did, but implemented it in a non-ANSI way, and I
;; just disabled that instead of rewriting it.) -- WHN 20000131
(declare (ignore print))
-
- ;; FIXME: In sbcl-0.6.12.8 the OpenBSD implementation of FILE-LENGTH
- ;; broke because changed handling of Unix stat(2) stuff couldn't
- ;; deal with OpenBSD's 64-bit size slot. Once that's fixed, this
- ;; code can be restored.
- #!-openbsd
(when (zerop (file-length stream))
(error "attempt to load an empty FASL file:~% ~S" (namestring stream)))
-
(do-load-verbose stream verbose)
(let* ((*fasl-input-stream* stream)
(*current-fop-table* (or (pop *free-fop-tables*) (make-array 1000)))
(fill *fop-stack* nil :end *fop-stack-pointer-on-entry*)
(fill *current-fop-table* nil)))
t)
+
+;;; This is used in in target-load and also genesis, using
+;;; *COLD-FOREIGN-SYMBOL-TABLE*. All the speculative prefix-adding
+;;; code for foreign symbol lookup should be here.
+(defun find-foreign-symbol-in-table (name table)
+ (let ((prefixes
+ #!+(or linux freebsd) #("" "ldso_stub__")
+ #!+openbsd #("" "_")))
+ (some (lambda (prefix)
+ (gethash (concatenate 'string prefix name)
+ table
+ nil))
+ prefixes)))
+
\f
;;;; stuff for debugging/tuning by collecting statistics on FOPs (?)