X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fload.lisp;h=2a2559b35ef43cbc5770e71c2adf7e221b2db0ca;hb=7dd568fb64927be78556ac27f1f0dc60e79cf942;hp=de45d7501096d56aa1a8971b8afe161f66d32c77;hpb=aa2dc9529460ea0d9c99998dc87283fc1a43e808;p=sbcl.git diff --git a/src/code/load.lisp b/src/code/load.lisp index de45d75..2a2559b 100644 --- a/src/code/load.lisp +++ b/src/code/load.lisp @@ -328,15 +328,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 +351,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 (?)