From: Christophe R. <cs...@ca...> - 2006-03-08 12:42:58
|
Nathan Froyd <nf...@us...> writes: > Update of /cvsroot/sbcl/sbcl/src/compiler/ppc > In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30066/src/compiler/ppc > > Modified Files: > cell.lisp > > -(define-vop (instance-ref slot-ref) > - (:variant instance-slots-offset instance-pointer-lowtag) > - (:policy :fast-safe) > - (:translate %instance-ref) > - (:arg-types * (:constant index))) So it turns out that on this platform, the PPC, and (from reading the code) the SPARC as well, this VOP is not redundant. The issue is, I think, that the other %instance-ref transform, based on word-index-ref, asserts that its first argument is of primitive type instance (rather than *). The last compilation output from elgar's overnight build log was ; file: /home/boinkmark/scratch/autobench/src/code/target-type.lisp ; in: DEFUN LAYOUT-OF ; 'NULL ; ; note: deleting unreachable code ; ; note: deleting unreachable code unhandled condition (of type BUG): full call to %INSTANCE-REF Now, this is odd, because in LAYOUT-OF the call to %INSTANCE-REF is in the true branch of a conditional on %INSTANCEP, and I'm pretty sure that that is enough to tell the compiler that the type is definitely INSTANCE. So, I'm not sure what's going on there, but I do observe that the other platforms' DEFINE-FULL-REFFER for %INSTANCE-REF has a * type restriction, not instance. Cheers, Christophe |