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.
(loadw res struct 0 instance-pointer-lowtag)
(inst srl res n-widetag-bits res)))
-(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 (descriptor-reg any-reg) * %instance-ref)
(loadw res struct 0 instance-pointer-lowtag)
(inst srl res n-widetag-bits res)))
-(define-vop (instance-ref slot-ref)
- (:variant instance-slots-offset instance-pointer-lowtag)
- (:policy :fast-safe)
- (:translate %instance-ref)
- (:arg-types instance (:constant index)))
-
-#+nil ; As per usual (cf sbcl-devel discussion about this VOP which
- ; appears to return no values)
-(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 (descriptor-reg any-reg) * %instance-ref)
(loadw res struct 0 instance-pointer-lowtag)
(inst srl 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)))
-
-#+nil
-(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 (descriptor-reg any-reg) * %instance-ref)
(loadw temp struct 0 instance-pointer-lowtag)
(inst srwi res temp n-widetag-bits)))
-(define-vop (instance-ref slot-ref)
- (:variant instance-slots-offset instance-pointer-lowtag)
- (:policy :fast-safe)
- (:translate %instance-ref)
- (:arg-types * (:constant index)))
-
-#+nil
-(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-vop (instance-index-ref word-index-ref)
(:policy :fast-safe)
(:translate %instance-ref)
(loadw temp struct 0 instance-pointer-lowtag)
(inst srl res temp n-widetag-bits)))
-(define-vop (instance-ref slot-ref)
- (:variant instance-slots-offset instance-pointer-lowtag)
- (:policy :fast-safe)
- (:translate %instance-ref)
- (:arg-types * (:constant index)))
-
-;;; This VOP has no :results; however, %instance-set must return a
-;;; value. This caused, in the forward port to 0.7.x, an error in
-;;; !fdefn-cold-init: "argument X is not a REAL: NIL". This VOP is
-;;; commented out for now, pending the addition of checking code to
-;;; the define-vop machinery to ascertain that this was indeed the
-;;; problem. -- CSR, 2002-02-12
-#+nil
-(define-vop (instance-set slot-set)
- (:policy :fast-safe)
- (:translate %instance-set)
- (:variant instance-slots-offset instance-pointer-lowtag)
- (:arg-types * (:constant index) *))
-
(define-vop (instance-index-ref word-index-ref)
(:policy :fast-safe)
(:translate %instance-ref)
(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)
(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)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.10.21"
+"0.9.10.22"