(in-package "SB!C")
+(declaim (ftype (function (fixnum fixnum) (values code-component &optional))
+ allocate-code-object))
+(defun allocate-code-object (boxed unboxed)
+ #!+gencgc
+ (without-gcing
+ (%make-lisp-obj
+ (alien-funcall (extern-alien "alloc_code_object" (function unsigned unsigned unsigned))
+ boxed unboxed)))
+ #!-gencgc
+ (%primitive allocate-code-object boxed unboxed))
+
;;; Make a function entry, filling in slots from the ENTRY-INFO.
(defun make-fun-entry (entry-info code-obj object)
(declare (type entry-info entry-info) (type core-object object))
(setf (%simple-fun-name res) (entry-info-name entry-info))
(setf (%simple-fun-arglist res) (entry-info-arguments entry-info))
(setf (%simple-fun-type res) (entry-info-type entry-info))
- (setf (%simple-fun-xrefs res) (entry-info-xref entry-info))
+ (setf (%simple-fun-info res) (entry-info-info entry-info))
(note-fun entry-info res object))))
(total-length (+ length
(ceiling trace-table-bits sb!vm:n-byte-bits)))
(box-num (- (length constants) sb!vm:code-trace-table-offset-slot))
- (code-obj
- (%primitive allocate-code-object box-num total-length))
+ (code-obj (allocate-code-object box-num total-length))
(fill-ptr (code-instructions code-obj)))
(declare (type index box-num total-length))
- (sb!assem:on-segment-contents-vectorly
- segment
- (lambda (v)
- (declare (type (simple-array sb!assem:assembly-unit 1) v))
- (copy-byte-vector-to-system-area v fill-ptr)
- (setf fill-ptr (sap+ fill-ptr (length v)))))
+ (let ((v (sb!assem:segment-contents-as-vector segment)))
+ (declare (type (simple-array sb!assem:assembly-unit 1) v))
+ (copy-byte-vector-to-system-area v fill-ptr)
+ (setf fill-ptr (sap+ fill-ptr (length v))))
(do-core-fixups code-obj fixup-notes)
(reference-core-fun code-obj index (cdr const) object))
(:fdefinition
(setf (code-header-ref code-obj index)
- (fdefinition-object (cdr const) t))))))))))
+ (fdefinition-object (cdr const) t)))
+ (:known-fun
+ (setf (code-header-ref code-obj index)
+ (%coerce-name-to-fun (cdr const)))))))))))
(values))