"LARGE-ALLOC"
"%SET-SIMPLE-FUN-SELF"
"VM-SUPPORT-ROUTINES-IMMEDIATE-CONSTANT-SC"
+ "VM-SUPPORT-ROUTINES-BOXED-IMMEDIATE-SC-P"
"VM-SUPPORT-ROUTINES-LOCATION-PRINT-NAME"
"VM-SUPPORT-ROUTINES-PRIMITIVE-TYPE-OF"
"VM-SUPPORT-ROUTINES-PRIMITIVE-TYPE"
(if (eql value 0d0)
(sc-number-or-lose 'fp-double-zero )
nil))))
+
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (or (eql sc (sc-number-or-lose 'zero))
+ (eql sc (sc-number-or-lose 'null))
+ (eql sc (sc-number-or-lose 'immediate))))
\f
;;;; function call parameters
immediate-constant-sc
location-print-name
combination-implementation-style
+ boxed-immediate-sc-p
;; from primtype.lisp
primitive-type-of
(sc-number-or-lose 'fp-double-zero)
nil))))
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (or (eql sc (sc-number-or-lose 'zero))
+ (eql sc (sc-number-or-lose 'null))
+ (eql sc (sc-number-or-lose 'immediate))))
\f
;;;; Function Call Parameters
(character
(sc-number-or-lose 'immediate))))
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (or (eql sc (sc-number-or-lose 'zero))
+ (eql sc (sc-number-or-lose 'null))
+ (eql sc (sc-number-or-lose 'immediate))))
\f
;;;; Function Call Parameters
(sc-number-or-lose 'immediate)
nil))))
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (or (eql sc (sc-number-or-lose 'zero))
+ (eql sc (sc-number-or-lose 'null))
+ (eql sc (sc-number-or-lose 'immediate))))
+
;;; A predicate to see if a character can be used as an inline
;;; constant (the immediate field in the instruction used is sixteen
;;; bits wide, which is not the same as any defined subtype of
(if (static-symbol-p value)
(sc-number-or-lose 'immediate)
nil))))
+
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (or (eql sc (sc-number-or-lose 'zero))
+ (eql sc (sc-number-or-lose 'null))
+ (eql sc (sc-number-or-lose 'immediate))))
\f
;;;; function call parameters
(let* ((immed (immediate-constant-sc (constant-value constant)))
(use-immed-p (and immed
(or (not boxedp)
- (eql immed (sc-number-or-lose 'sb!vm::immediate))))))
+ (boxed-immediate-sc-p immed)))))
(cond
;; CONSTANT-TN uses two caches, one for boxed and one for unboxed uses.
;;
'fp-complex-double-zero
'fp-complex-double-immediate)))))
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (eql sc (sc-number-or-lose 'immediate)))
\f
;;;; miscellaneous function call parameters
(eql value (log 2l0 2.718281828459045235360287471352662L0)))
(sc-number-or-lose 'fp-constant)))))
+(!def-vm-support-routine boxed-immediate-sc-p (sc)
+ (eql sc (sc-number-or-lose 'immediate)))
+
;; For an immediate TN, return its value encoded for use as a literal.
;; For any other TN, return the TN. Only works for FIXNUMs,
;; STATIC-SYMBOLs, and CHARACTERS (FLOATs and SAPs are handled