X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffop.lisp;h=fab38c4e8d80941f72d62be896c4f333527268d5;hb=988afd9d54ba6c8a915544822658824ab6ae0d6c;hp=74b5984293f26282ed219931f1759054fe56da82;hpb=d57319a52914c481d89415c0860dc6b7ad90ddce;p=sbcl.git diff --git a/src/code/fop.lisp b/src/code/fop.lisp index 74b5984..fab38c4 100644 --- a/src/code/fop.lisp +++ b/src/code/fop.lisp @@ -75,7 +75,7 @@ (defun read-string-as-bytes (stream string &optional (length (length string))) (dotimes (i length) (setf (aref string i) - (code-char (read-byte stream)))) + (sb!xc:code-char (read-byte stream)))) ;; FIXME: The classic CMU CL code to do this was ;; (READ-N-BYTES FILE STRING START END). ;; It was changed for SBCL because we needed a portable version for @@ -629,6 +629,12 @@ bug.~:@>") ;;;; assemblerish fops +(define-fop (fop-assembler-code 144) + (error "cannot load assembler code except at cold load")) + +(define-fop (fop-assembler-routine 145) + (error "cannot load assembler code except at cold load")) + (define-fop (fop-foreign-fixup 147) (let* ((kind (pop-stack)) (code-object (pop-stack)) @@ -641,12 +647,6 @@ bug.~:@>") kind) code-object)) -(define-fop (fop-assembler-code 144) - (error "cannot load assembler code except at cold load")) - -(define-fop (fop-assembler-routine 145) - (error "cannot load assembler code except at cold load")) - (define-fop (fop-assembler-fixup 148) (let ((routine (pop-stack)) (kind (pop-stack)) @@ -666,3 +666,16 @@ bug.~:@>") (sb!vm:fixup-code-object code-object (read-word-arg) (get-lisp-obj-address code-object) kind) code-object)) + +#!+linkage-table +(define-fop (fop-foreign-dataref-fixup 150) + (let* ((kind (pop-stack)) + (code-object (pop-stack)) + (len (read-byte-arg)) + (sym (make-string len))) + (read-n-bytes *fasl-input-stream* sym 0 len) + (sb!vm:fixup-code-object code-object + (read-word-arg) + (foreign-symbol-address-as-integer sym t) + kind) + code-object))