0.8.16.16:
[sbcl.git] / src / code / fop.lisp
index 74b5984..fab38c4 100644 (file)
@@ -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.~:@>")
 \f
 ;;;; 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))