projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
handle non-standard slot allocations when updating classes
[sbcl.git]
/
src
/
compiler
/
sparc
/
subprim.lisp
diff --git
a/src/compiler/sparc/subprim.lisp
b/src/compiler/sparc/subprim.lisp
index
4ff2127
..
733ad6a
100644
(file)
--- a/
src/compiler/sparc/subprim.lisp
+++ b/
src/compiler/sparc/subprim.lisp
@@
-19,15
+19,15
@@
(:temporary (:scs (descriptor-reg) :from (:argument 0)) ptr)
(:temporary (:scs (non-descriptor-reg)) temp)
(:temporary (:scs (any-reg) :type fixnum :to (:result 0) :target result)
(:temporary (:scs (descriptor-reg) :from (:argument 0)) ptr)
(:temporary (:scs (non-descriptor-reg)) temp)
(:temporary (:scs (any-reg) :type fixnum :to (:result 0) :target result)
- count)
+ count)
(:results (result :scs (any-reg descriptor-reg)))
(:policy :fast-safe)
(:vop-var vop)
(:save-p :compute-only)
(:generator 50
(let ((done (gen-label))
(:results (result :scs (any-reg descriptor-reg)))
(:policy :fast-safe)
(:vop-var vop)
(:save-p :compute-only)
(:generator 50
(let ((done (gen-label))
- (loop (gen-label))
- (not-list (generate-cerror-code vop object-not-list-error object)))
+ (loop (gen-label))
+ (not-list (generate-cerror-code vop object-not-list-error object)))
(move ptr object)
(move count zero-tn)
(move ptr object)
(move count zero-tn)
@@
-37,17
+37,20
@@
(inst b :eq done)
(inst nop)
(inst b :eq done)
(inst nop)
- (test-type ptr temp not-list t list-pointer-lowtag)
+ ;; FIXME: Maybe rewrite this to remove this TEST-TYPE (and the
+ ;; one below) to put it in line with all other architectures
+ ;; (apart from PPC)?
+ (test-type ptr not-list t (list-pointer-lowtag) :temp temp)
(loadw ptr ptr cons-cdr-slot list-pointer-lowtag)
(inst add count count (fixnumize 1))
(loadw ptr ptr cons-cdr-slot list-pointer-lowtag)
(inst add count count (fixnumize 1))
- (test-type ptr temp loop nil list-pointer-lowtag)
+ (test-type ptr loop nil (list-pointer-lowtag) :temp temp)
(cerror-call vop done object-not-list-error ptr)
(emit-label done)
(move result count))))
(cerror-call vop done object-not-list-error ptr)
(emit-label done)
(move result count))))
-
+
(define-static-fun length (object) :translate length)
(define-static-fun length (object) :translate length)