"MAKE-CLOSURE" "MAKE-CONSTANT-TN"
"MAKE-FIXUP-NOTE"
"MAKE-LOAD-TIME-CONSTANT-TN" "MAKE-N-TNS" "MAKE-NORMAL-TN"
- "MAKE-OTHER-IMMEDIATE-TYPE" "MAKE-RANDOM-TN"
+ "MAKE-RANDOM-TN"
"MAKE-REPRESENTATION-TN" "MAKE-RESTRICTED-TN" "MAKE-SC-OFFSET"
"MAKE-STACK-POINTER-TN" "MAKE-TN-REF" "MAKE-UNWIND-BLOCK"
"MAKE-WIRED-TN" "MAYBE-COMPILER-NOTIFY"
#+sb-xc-host ; since xc host doesn't know how to compile %PRIMITIVE
(error "FOP-MISC-TRAP can't be defined without %PRIMITIVE.")
#-sb-xc-host
- (%primitive sb!c:make-other-immediate-type 0 sb!vm:unbound-marker-widetag))
+ (%primitive sb!c:make-unbound-marker))
(define-cloned-fops (fop-character 68) (fop-short-character 69)
(code-char (clone-arg)))
(declaim (inline %makunbound))
(defun %makunbound (symbol)
- (%set-symbol-value symbol (%primitive sb!c:make-other-immediate-type
- 0 sb!vm:unbound-marker-widetag)))
+ (%set-symbol-value symbol (%primitive sb!c:make-unbound-marker)))
(defun makunbound (symbol)
#!+sb-doc
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst li unbound-marker-widetag result)))
(inst sll ptr 35 res)
(inst srl res 33 res)))
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg))
- (type :scs (any-reg descriptor-reg immediate)
- :target temp))
- (:results (res :scs (any-reg descriptor-reg)))
- (:temporary (:scs (non-descriptor-reg)) temp)
- (:generator 2
- (sc-case type
- ((immediate)
- (inst sll val n-widetag-bits temp)
- (inst bis temp (tn-value type) res))
- (t
- (inst sra type n-fixnum-tag-bits temp)
- (inst sll val (- n-widetag-bits n-fixnum-tag-bits) res)
- (inst bis res temp res)))))
-
\f
;;;; allocation
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst li unbound-marker-widetag result)))
(:policy :fast-safe)
(:generator 1
(inst zdep ptr n-positive-fixnum-bits n-positive-fixnum-bits res)))
-
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg))
- (type :scs (any-reg descriptor-reg immediate) :target temp))
- (:results (res :scs (any-reg descriptor-reg)))
- (:temporary (:scs (non-descriptor-reg)) temp)
- (:temporary (:scs (non-descriptor-reg)) t2)
- (:generator 2
- (sc-case type
- ((immediate)
- (inst sll val n-widetag-bits temp)
- (inst li (tn-value type) t2)
- (inst or temp t2 res))
- (t
- (inst sra type 2 temp)
- (inst sll val (- n-widetag-bits 2) res)
- (inst or res temp res)))))
\f
;;;; Allocation
(progn
(labels ((,unbind (vars)
(declare (optimize (speed 2) (debug 0)))
- (let ((unbound-marker (%primitive make-other-immediate-type
- 0 sb!vm:unbound-marker-widetag)))
+ (let ((unbound-marker (%primitive make-unbound-marker)))
(dolist (var vars)
;; CLHS says "bound and then made to have no value" -- user
;; should not be able to tell the difference between that and this.
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst li result unbound-marker-widetag)))
(inst sll res ptr 3)
(inst srl res res 1)))
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg))
- (type :scs (any-reg descriptor-reg immediate)
- :target temp))
- (:results (res :scs (any-reg descriptor-reg)))
- (:temporary (:scs (non-descriptor-reg)) temp)
- (:generator 2
- (sc-case type
- ((immediate)
- (inst sll temp val n-widetag-bits)
- (inst or res temp (tn-value type)))
- (t
- (inst sra temp type n-fixnum-tag-bits)
- (inst sll res val (- n-widetag-bits n-fixnum-tag-bits))
- (inst or res res temp)))))
-
\f
;;;; Allocation
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst li result unbound-marker-widetag)))
;; and shift the result into a positive fixnum like on x86.
(inst rlwinm res ptr n-fixnum-tag-bits 1 n-positive-fixnum-bits)))
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg))
- (type :scs (any-reg descriptor-reg immediate)
- :target temp))
- (:results (res :scs (any-reg descriptor-reg)))
- (:temporary (:scs (non-descriptor-reg)) temp)
- (:generator 2
- (sc-case type
- (immediate
- (inst slwi temp val n-widetag-bits)
- (inst ori res temp (tn-value type)))
- (t
- (inst srawi temp type n-fixnum-tag-bits)
- (inst slwi res val (- n-widetag-bits n-fixnum-tag-bits))
- (inst or res res temp)))))
-
\f
;;;; Allocation
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst li result unbound-marker-widetag)))
(inst sll res ptr 3)
(inst srl res res 1)))
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg))
- (type :scs (any-reg descriptor-reg immediate)
- :target temp))
- (:results (res :scs (any-reg descriptor-reg)))
- (:temporary (:scs (non-descriptor-reg)) temp)
- (:generator 2
- (sc-case type
- (immediate
- (inst sll temp val n-widetag-bits)
- (inst or res temp (tn-value type)))
- (t
- (inst sra temp type n-fixnum-tag-bits)
- (inst sll res val (- n-widetag-bits n-fixnum-tag-bits))
- (inst or res res temp)))))
-
\f
;;;; allocation
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst mov result unbound-marker-widetag)))
;; fixnum.
(inst and res (lognot lowtag-mask))
(inst shr res 1)))
-
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg) :target res)
- (type :scs (unsigned-reg immediate)))
- (:results (res :scs (any-reg descriptor-reg) :from (:argument 0)))
- (:generator 2
- (move res val)
- (inst shl res (- n-widetag-bits n-fixnum-tag-bits))
- (inst or res (sc-case type
- (unsigned-reg type)
- (immediate (tn-value type))))))
\f
;;;; allocation
(define-vop (make-unbound-marker)
(:args)
- (:results (result :scs (any-reg)))
+ (:results (result :scs (descriptor-reg any-reg)))
(:generator 1
(inst mov result unbound-marker-widetag)))
;; fixnum.
(inst and res (lognot lowtag-mask))
(inst shr res 1)))
-
-(define-vop (make-other-immediate-type)
- (:args (val :scs (any-reg descriptor-reg) :target res)
- (type :scs (unsigned-reg immediate)))
- (:results (res :scs (any-reg descriptor-reg) :from (:argument 0)))
- (:generator 2
- (move res val)
- (inst shl res (- n-widetag-bits n-fixnum-tag-bits))
- (inst or res (sc-case type
- (unsigned-reg type)
- (immediate (tn-value type))))))
\f
;;;; allocation
(eval form)))
(defun unbound-marker ()
- (sb-c::%primitive sb-c:make-other-immediate-type 0 sb-vm:unbound-marker-widetag))
+ (sb-c::%primitive sb-c:make-unbound-marker))
(defun assert-foo-not-checked (fun)
(let* ((marker (unbound-marker))