From: Nathan F. <nf...@us...> - 2006-03-07 19:06:49
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30066/src/compiler/x86 Modified Files: cell.lisp Log Message: 0.9.10.22: Remove spurious VOPs for translating %INSTANCE-{REF,SET}. ... These VOPs were based on SLOT-{REF,SET} and in all ports there were also translations based on DEFINE-FULL-REFFER or WORD-INDEX-REF. However, at the very least, the %INSTANCE-SET VOP based on SLOT-SET was bogus, as it did not return a value, thereby generating incorrect code. Therefore, this VOP was either disabled (#+nil) or the alternative via DEFINE-FULL-REFFER was carefully defined with a lower :GENERATOR cost so that the VOP based on SLOT-SET would never be called. This patch eliminates such magic and eliminates the corresponding %INSTANCE-REF VOP as well, since it does not appear to have any advantages over the one created via DEFINE-FULL-REFFER. ... See also sbcl-devel, 2002-02-11, "Dubious VOPs". This patch does not implement the DEFINE-VOP magic discussed in the email. Index: cell.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/cell.lisp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- cell.lisp 17 Nov 2005 12:13:38 -0000 1.22 +++ cell.lisp 7 Mar 2006 19:06:42 -0000 1.23 @@ -451,18 +451,6 @@ (loadw res struct 0 instance-pointer-lowtag) (inst shr res n-widetag-bits))) -(define-vop (instance-ref slot-ref) - (:variant instance-slots-offset instance-pointer-lowtag) - (:policy :fast-safe) - (:translate %instance-ref) - (:arg-types instance (:constant index))) - -(define-vop (instance-set slot-set) - (:policy :fast-safe) - (:translate %instance-set) - (:variant instance-slots-offset instance-pointer-lowtag) - (:arg-types instance (:constant index) *)) - (define-full-reffer instance-index-ref * instance-slots-offset instance-pointer-lowtag (any-reg descriptor-reg) * %instance-ref) |