X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fload.lisp;h=e68ff75a1a21c83bde36c1e05547c04e66142532;hb=edaebea5b5e6682b36f4067e3b187bd9fb4a5c25;hp=de45d7501096d56aa1a8971b8afe161f66d32c77;hpb=aa2dc9529460ea0d9c99998dc87283fc1a43e808;p=sbcl.git diff --git a/src/code/load.lisp b/src/code/load.lisp index de45d75..e68ff75 100644 --- a/src/code/load.lisp +++ b/src/code/load.lisp @@ -255,9 +255,6 @@ (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 @@ -328,15 +325,8 @@ ;; 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))) @@ -358,6 +348,20 @@ (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))) + ;;;; stuff for debugging/tuning by collecting statistics on FOPs (?)