[Openmcl-cvs-notifications] r11276 - /trunk/source/compiler/X86/x862.lisp
gz at clozure.com
gz at clozure.com
Fri Oct 31 00:12:39 EDT 2008
Author: gz
Date: Fri Oct 31 00:12:39 2008
New Revision: 11276
Log:
In x862-vref, if full safety, do typechecks even if don't use value (propag=
ated from r9413). In x862-prog1, better handling for (prog1 form nil) (pro=
pagated from r9936)
Modified:
trunk/source/compiler/X86/x862.lisp
Modified: trunk/source/compiler/X86/x862.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/X86/x862.lisp (original)
+++ trunk/source/compiler/X86/x862.lisp Fri Oct 31 00:12:39 2008
@@ -1894,6 +1894,8 @@
;;; This mostly knows how to reference the elements of an immediate miscob=
j.
(defun x862-vref (seg vreg xfer type-keyword vector index safe)
(with-x86-local-vinsn-macros (seg vreg xfer)
+ (when *x862-full-safety*
+ (unless vreg (setq vreg *x862-arg-z*)))
(if (null vreg)
(progn
(x862-form seg nil nil vector)
@@ -6327,18 +6329,23 @@
(node-p (unless (or float-p crf-p)
(=3D (get-regspec-mode vreg) hard-reg-class-gpr-mod=
e-node)))
(first (pop forms)))
- (x862-push-register seg =
- (if (or node-p crf-p)
- (x862-one-untargeted-reg-form seg first *x86=
2-arg-z*)
- (x862-one-targeted-reg-form seg first vreg)))
- (dolist (form forms)
- (x862-form seg nil nil form))
- (if crf-p
+ (if (and node-p
+ (nx-null (car forms))
+ (null (cdr forms)))
+ (x862-form seg vreg xfer first)
(progn
- (x862-vpop-register seg *x862-arg-z*)
- (<- *x862-arg-z*))
- (x862-pop-register seg vreg))
- (^)))))
+ (x862-push-register seg =
+ (if (or node-p crf-p)
+ (x862-one-untargeted-reg-form seg first =
*x862-arg-z*)
+ (x862-one-targeted-reg-form seg first vr=
eg)))
+ (dolist (form forms)
+ (x862-form seg nil nil form))
+ (if crf-p
+ (progn
+ (x862-vpop-register seg *x862-arg-z*)
+ (<- *x862-arg-z*))
+ (x862-pop-register seg vreg))
+ (^)))))))
=
(defx862 x862-free-reference free-reference (seg vreg xfer sym)
(x862-ref-symbol-value seg vreg xfer sym t))
More information about the Openmcl-cvs-notifications
mailing list