(defun fixup-code-object (code offset fixup kind)
(declare (type index offset))
(flet ((add-fixup (code offset)
- ;; Although this could check for and ignore fixups for code
- ;; objects in the read-only and static spaces, this should
- ;; only be the case when *enable-dynamic-space-code* is
- ;; True.
- (when sb!impl::*enable-dynamic-space-code*
- (incf *num-fixups*)
- (let ((fixups (code-header-ref code code-constants-offset)))
- (cond ((typep fixups '(simple-array (unsigned-byte 32) (*)))
- (let ((new-fixups
- (adjust-array fixups (1+ (length fixups))
- :element-type '(unsigned-byte 32))))
- (setf (aref new-fixups (length fixups)) offset)
- (setf (code-header-ref code code-constants-offset)
- new-fixups)))
- (t
- (unless (or (eq (get-type fixups)
- sb!vm:unbound-marker-type)
- (zerop fixups))
- (format t "** Init. code FU = ~S~%" fixups)) ; FIXME
+ ;; (We check for and ignore fixups for code objects in the
+ ;; read-only and static spaces. (In the old CMU CL code
+ ;; this check was conditional on *ENABLE-DYNAMIC-SPACE-CODE*,
+ ;; but in SBCL relocatable dynamic space code is always in
+ ;; use, so we always do the check.)
+ (incf *num-fixups*)
+ (let ((fixups (code-header-ref code code-constants-offset)))
+ (cond ((typep fixups '(simple-array (unsigned-byte 32) (*)))
+ (let ((new-fixups
+ (adjust-array fixups (1+ (length fixups))
+ :element-type '(unsigned-byte 32))))
+ (setf (aref new-fixups (length fixups)) offset)
(setf (code-header-ref code code-constants-offset)
- (make-specializable-array
- 1
- :element-type '(unsigned-byte 32)
- :initial-element offset))))))))
+ new-fixups)))
+ (t
+ (unless (or (eq (get-type fixups)
+ sb!vm:unbound-marker-type)
+ (zerop fixups))
+ (format t "** Init. code FU = ~S~%" fixups)) ; FIXME
+ (setf (code-header-ref code code-constants-offset)
+ (make-specializable-array
+ 1
+ :element-type '(unsigned-byte 32)
+ :initial-element offset)))))))
(sb!sys:without-gcing
(let* ((sap (truly-the system-area-pointer
(sb!kernel:code-instructions code)))
(setf (deref (context-register-addr context index))
new))
-;;; Like CONTEXT-REGISTER, but returns the value of a float register.
-;;; FORMAT is the type of float to return.
+;;; This is like CONTEXT-REGISTER, but returns the value of a float
+;;; register. FORMAT is the type of float to return.
;;;
;;; As of sbcl-0.6.7, there is no working code which calls this code,
;;; so it's stubbed out. Someday, in order to make the debugger work
;; POSIXness and (at the Lisp level) opaque signal contexts,
;; this is stubified. It needs to be rewritten as an
;; alien function.
+ (declare (ignore context)) ; stub!
(warn "stub CONTEXT-FLOATING-POINT-MODES")
;; old code for Linux:
(declare (ignore component))
nil)
-;;; FLOAT-WAIT
-;;;
;;; This is used in error.lisp to insure that floating-point exceptions
;;; are properly trapped. The compiler translates this to a VOP.
(defun float-wait ()
(float-wait))
-;;; FLOAT CONSTANTS
+;;; float constants
;;;
-;;; These are used by the FP MOVE-FROM-{SINGLE|DOUBLE} VOPs rather than the
-;;; i387 load constant instructions to avoid consing in some cases. Note these
-;;; are initialized by GENESIS as they are needed early.
+;;; These are used by the FP MOVE-FROM-{SINGLE|DOUBLE} VOPs rather
+;;; than the i387 load constant instructions to avoid consing in some
+;;; cases. Note these are initialized by GENESIS as they are needed
+;;; early.
(defvar *fp-constant-0s0*)
(defvar *fp-constant-1s0*)
(defvar *fp-constant-0d0*)
(defvar *fp-constant-lg2*)
(defvar *fp-constant-ln2*)
-;;; Enable/disable scavenging of the read-only space.
-(defvar *scavenge-read-only-space* nil)
-;;; FIXME: should be *SCAVENGE-READ-ONLY-SPACE-P*
-
;;; The current alien stack pointer; saved/restored for non-local exits.
(defvar *alien-stack*)