projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.7.10.32:
[sbcl.git]
/
src
/
compiler
/
x86
/
type-vops.lisp
diff --git
a/src/compiler/x86/type-vops.lisp
b/src/compiler/x86/type-vops.lisp
index
ca114cf
..
43617fd
100644
(file)
--- a/
src/compiler/x86/type-vops.lisp
+++ b/
src/compiler/x86/type-vops.lisp
@@
-139,17
+139,13
@@
(:info target not-p)
(:policy :fast-safe))
(:info target not-p)
(:policy :fast-safe))
-;;; FIXME: DEF-TYPE-VOPS and DEF-SIMPLE-TYPE-VOPS are only used in
-;;; this file, so they should be in the EVAL-WHEN above, or otherwise
-;;; tweaked so that they don't appear in the target system.
-
(defun cost-to-test-types (type-codes)
(+ (* 2 (length type-codes))
(if (> (apply #'max type-codes) lowtag-limit) 7 2)))
(defmacro !define-type-vops (pred-name check-name ptype error-code
(&rest type-codes)
(defun cost-to-test-types (type-codes)
(+ (* 2 (length type-codes))
(if (> (apply #'max type-codes) lowtag-limit) 7 2)))
(defmacro !define-type-vops (pred-name check-name ptype error-code
(&rest type-codes)
- &key (variant nil variant-p))
+ &key (variant nil variant-p) &allow-other-keys)
;; KLUDGE: UGH. Why do we need this eval? Can't we put this in the
;; expansion?
(let* ((cost (cost-to-test-types (mapcar #'eval type-codes)))
;; KLUDGE: UGH. Why do we need this eval? Can't we put this in the
;; expansion?
(let* ((cost (cost-to-test-types (mapcar #'eval type-codes)))
@@
-161,13
+157,13
@@
`((define-vop (,pred-name ,(intern (concatenate 'string prefix "TYPE-PREDICATE")))
(:translate ,pred-name)
(:generator ,cost
`((define-vop (,pred-name ,(intern (concatenate 'string prefix "TYPE-PREDICATE")))
(:translate ,pred-name)
(:generator ,cost
- (test-type value target not-p ,@type-codes)))))
+ (test-type value target not-p (,@type-codes))))))
,@(when check-name
`((define-vop (,check-name ,(intern (concatenate 'string prefix "CHECK-TYPE")))
(:generator ,cost
(let ((err-lab
(generate-error-code vop ,error-code value)))
,@(when check-name
`((define-vop (,check-name ,(intern (concatenate 'string prefix "CHECK-TYPE")))
(:generator ,cost
(let ((err-lab
(generate-error-code vop ,error-code value)))
- (test-type value err-lab t ,@type-codes)
+ (test-type value err-lab t (,@type-codes))
(move result value))))))
,@(when ptype
`((primitive-type-vop ,check-name (:check) ,ptype))))))
(move result value))))))
,@(when ptype
`((primitive-type-vop ,check-name (:check) ,ptype))))))
@@
-315,7
+311,7
@@
(let ((is-symbol-label (if not-p drop-thru target)))
(inst cmp value nil-value)
(inst jmp :e is-symbol-label)
(let ((is-symbol-label (if not-p drop-thru target)))
(inst cmp value nil-value)
(inst jmp :e is-symbol-label)
- (test-type value target not-p symbol-header-widetag))
+ (test-type value target not-p (symbol-header-widetag)))
DROP-THRU))
(define-vop (check-symbol check-type)
DROP-THRU))
(define-vop (check-symbol check-type)
@@
-323,7
+319,7
@@
(let ((error (generate-error-code vop object-not-symbol-error value)))
(inst cmp value nil-value)
(inst jmp :e drop-thru)
(let ((error (generate-error-code vop object-not-symbol-error value)))
(inst cmp value nil-value)
(inst jmp :e drop-thru)
- (test-type value error t symbol-header-widetag))
+ (test-type value error t (symbol-header-widetag)))
DROP-THRU
(move result value)))
DROP-THRU
(move result value)))
@@
-333,7
+329,7
@@
(let ((is-not-cons-label (if not-p target drop-thru)))
(inst cmp value nil-value)
(inst jmp :e is-not-cons-label)
(let ((is-not-cons-label (if not-p target drop-thru)))
(inst cmp value nil-value)
(inst jmp :e is-not-cons-label)
- (test-type value target not-p list-pointer-lowtag))
+ (test-type value target not-p (list-pointer-lowtag)))
DROP-THRU))
(define-vop (check-cons check-type)
DROP-THRU))
(define-vop (check-cons check-type)
@@
-341,5
+337,5
@@
(let ((error (generate-error-code vop object-not-cons-error value)))
(inst cmp value nil-value)
(inst jmp :e error)
(let ((error (generate-error-code vop object-not-cons-error value)))
(inst cmp value nil-value)
(inst jmp :e error)
- (test-type value error t list-pointer-lowtag)
+ (test-type value error t (list-pointer-lowtag))
(move result value))))
(move result value))))