Skip to content
Snippets Groups Projects
Commit 1fe4bc46 authored by toy's avatar toy
Browse files

o Remove the unused check-fixnum code that used taddcctv.

o Remove the unused check-list and check-instance that generated
  invalid trap instructions on Sparc V9.
o Use fixnum-tag-mask instead of #x3.
parent e7b7a073
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/type-vops.lisp,v 1.22 2000/12/05 03:07:36 dtc Exp $")
"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/type-vops.lisp,v 1.23 2001/10/03 16:02:31 toy Exp $")
;;;
;;; **********************************************************************
;;;
......@@ -65,47 +65,12 @@
); eval-when (compile eval)
;; Don't use this because it uses the deprecated taddcctv instruction.
#+nil
(progn
(def-type-vops fixnump nil nil nil vm:even-fixnum-type vm:odd-fixnum-type)
(define-vop (check-fixnum check-type)
(:ignore temp)
(:generator 1
(inst taddcctv result value zero-tn)))
(primitive-type-vop check-fixnum (:check) fixnum)
)
;; This avoids the taddcctv instruction
(def-type-vops fixnump check-fixnum fixnum object-not-fixnum-error
vm:even-fixnum-type vm:odd-fixnum-type)
(def-type-vops functionp check-function function
object-not-function-error vm:function-pointer-type)
;; The following encode the error type and register in the trap
;; instruction, however this breaks on the later sparc Ultra.
#+nil
(progn
(def-type-vops listp nil nil nil vm:list-pointer-type)
(define-vop (check-list check-type)
(:generator 3
(inst and temp value lowtag-mask)
(inst cmp temp list-pointer-type)
(inst t :ne (logior (ash (tn-offset value) 8) object-not-list-trap))
(move result value)))
(primitive-type-vop check-list (:check) list)
(def-type-vops %instancep nil nil nil vm:instance-pointer-type)
(define-vop (check-instance check-type)
(:generator 3
(inst and temp value lowtag-mask)
(inst cmp temp instance-pointer-type)
(inst t :ne (logior (ash (tn-offset value) 8) object-not-instance-trap))
(move result value)))
(primitive-type-vop check-instance (:check) instance)
)
;; These avoid the trap instruction.
(def-type-vops listp check-list list object-not-list-error
vm:list-pointer-type)
(def-type-vops %instancep check-instance instance object-not-instance-error
......@@ -360,7 +325,7 @@
(if not-p
(values not-target target)
(values target not-target))
(inst andcc zero-tn value #x3)
(inst andcc zero-tn value fixnum-tag-mask)
(inst b :eq yep)
(test-type value temp nope t vm:other-pointer-type)
(loadw temp value 0 vm:other-pointer-type)
......@@ -374,7 +339,7 @@
(:generator 45
(let ((nope (generate-error-code vop object-not-signed-byte-32-error value))
(yep (gen-label)))
(inst andcc temp value #x3)
(inst andcc temp value fixnum-tag-mask)
(inst b :eq yep)
(test-type value temp nope t vm:other-pointer-type)
(loadw temp value 0 vm:other-pointer-type)
......@@ -401,7 +366,7 @@
(values not-target target)
(values target not-target))
;; Is it a fixnum?
(inst andcc temp value #x3)
(inst andcc temp value fixnum-tag-mask)
(inst b :eq fixnum)
(inst cmp value)
......@@ -445,7 +410,7 @@
(fixnum (gen-label))
(single-word (gen-label)))
;; Is it a fixnum?
(inst andcc temp value #x3)
(inst andcc temp value fixnum-tag-mask)
(inst b :eq fixnum)
(inst cmp value)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment