X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ftarget-load.lisp;h=0c8e9b6784483b37cccc34a2f7bbacb404c46629;hb=c1aeac123df223746249567a9c0d2f656d1222cb;hp=b47f4c48bfe00808c44c6b62ed6bb33158196292;hpb=aa2dc9529460ea0d9c99998dc87283fc1a43e808;p=sbcl.git diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index b47f4c4..0c8e9b6 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -38,7 +38,7 @@ (let ((results (multiple-value-list (eval sexpr)))) (load-fresh-line) (format t "~{~S~^, ~}~%" results)) - (eval sexpr)))) + (eval sexpr)))) ;;;; LOAD itself @@ -80,7 +80,7 @@ (internal-load pathname truename if-does-not-exist verbose print :binary)) (t - (when (string= (pathname-type truename) *backend-fasl-file-type*) + (when (string= (pathname-type truename) *fasl-file-type*) (error "File has a fasl file type, but no fasl file header:~% ~S" (namestring truename))) (internal-load pathname truename if-does-not-exist verbose print @@ -106,7 +106,7 @@ (multiple-value-bind (src-pn src-tn) (try-default-type pathname *load-source-default-type*) (multiple-value-bind (obj-pn obj-tn) - (try-default-type pathname *backend-fasl-file-type*) + (try-default-type pathname *fasl-file-type*) (cond ((and obj-tn src-tn @@ -225,11 +225,9 @@ (declare (fixnum box-num code-length)) (with-fop-stack t (let ((code (%primitive sb!c:allocate-code-object box-num code-length)) - (index (+ #!-gengc sb!vm:code-trace-table-offset-slot - #!+gengc sb!vm:code-debug-info-slot - box-num))) + (index (+ sb!vm:code-trace-table-offset-slot box-num))) (declare (type index index)) - #!-gengc (setf (%code-debug-info code) (pop-stack)) + (setf (%code-debug-info code) (pop-stack)) (dotimes (i box-num) (declare (fixnum i)) (setf (code-header-ref code (decf index)) (pop-stack))) @@ -237,8 +235,7 @@ (read-n-bytes *fasl-input-stream* (code-instructions code) 0 - #!-gengc code-length - #!+gengc (* code-length sb!vm:word-bytes))) + code-length)) code))) ;;; Moving native code during a GC or purify is not so trivial on the @@ -249,9 +246,6 @@ ;;; all these code objects. After a purify these fixups can be ;;; dropped. In CMU CL, this policy was enabled with ;;; *ENABLE-DYNAMIC-SPACE-CODE*; in SBCL it's always used. -;;; -;;; A little analysis of the header information is used to determine -;;; if a code object is byte compiled, or native code. #!+x86 (defun load-code (box-num code-length) (declare (fixnum box-num code-length)) @@ -271,15 +265,6 @@ (setq stuff (nreverse stuff)) - ;; Check that tto is always a list for byte-compiled - ;; code. Could be used an alternate check. - (when (and (typep tto 'list) - (not (and (sb!c::debug-info-p dbi) - (not (sb!c::compiled-debug-info-p dbi))))) - ;; FIXME: What is this for? - (format t "* tto list on non-bc code: ~S~% ~S ~S~%" - stuff dbi tto)) - ;; FIXME: *LOAD-CODE-VERBOSE* should probably be #!+SB-SHOW. (when *load-code-verbose* (format t "stuff: ~S~%" stuff) @@ -331,14 +316,12 @@ (declaim (ftype (function (string) sb!vm:word) foreign-symbol-address-as-integer)) + + +;;; sb!sys:get-dynamic-foreign-symbol-address is in foreign.lisp, on +;;; platforms that have dynamic loading (defun foreign-symbol-address-as-integer (foreign-symbol) - (or (gethash foreign-symbol *static-foreign-symbols*) - (gethash (concatenate 'simple-string - #!+linux "ldso_stub__" - #!+openbsd "_" - #!+freebsd "ldso_stub__" - foreign-symbol) - *static-foreign-symbols*) + (or (find-foreign-symbol-in-table foreign-symbol *static-foreign-symbols*) (sb!sys:get-dynamic-foreign-symbol-address foreign-symbol) (error "unknown foreign symbol: ~S" foreign-symbol)))