X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fload.lisp;h=caa2706358a9a84ef159e6e0f5fdaf6dea3cb525;hb=cd176690400f8b6fa23faa4dc6fa8494bcbce480;hp=de45d7501096d56aa1a8971b8afe161f66d32c77;hpb=aa2dc9529460ea0d9c99998dc87283fc1a43e808;p=sbcl.git diff --git a/src/code/load.lisp b/src/code/load.lisp index de45d75..caa2706 100644 --- a/src/code/load.lisp +++ b/src/code/load.lisp @@ -57,7 +57,7 @@ ((>= cnt n) res))) ;;; Like Fast-Read-U-Integer, but the size may be determined at run time. -(defmacro fast-read-variable-u-integer (n) +(defmacro fast-read-var-u-integer (n) (let ((n-pos (gensym)) (n-res (gensym)) (n-cnt (gensym))) @@ -244,9 +244,9 @@ (flet ((check-version (variant possible-implementation needed-version) (when (string= possible-implementation implementation) (unless (= version needed-version) - (error "~@<~S is in ~A fasl file format version ~D, ~ + (error "~@<~S is in ~A fasl file format version ~W, ~ but this version of SBCL uses ~ - format version ~D.~:@>" + format version ~W.~:@>" stream variant version @@ -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 (?)