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
/
ppc
/
c-call.lisp
diff --git
a/src/compiler/ppc/c-call.lisp
b/src/compiler/ppc/c-call.lisp
index
46c76a1
..
2869883
100644
(file)
--- a/
src/compiler/ppc/c-call.lisp
+++ b/
src/compiler/ppc/c-call.lisp
@@
-63,7
+63,7
@@
;;; a double.
;;;
;;; gcc does:
;;; a double.
;;;
;;; gcc does:
-;;;
+;;;
;;; Excess floats stored on the stack are stored as floats.
;;;
;;; We follow gcc.
;;; Excess floats stored on the stack are stored as floats.
;;;
;;; We follow gcc.
@@
-265,12
+265,6
@@
(new-arg-types (parse-alien-type
'(unsigned 32)
(sb!kernel:make-null-lexenv))))
(new-arg-types (parse-alien-type
'(unsigned 32)
(sb!kernel:make-null-lexenv))))
- ((alien-integer-type-p type)
- (if (< gprs 8)
- (incf gprs 1)
- (incf stack 1))
- (new-args arg)
- (new-arg-types type))
((alien-single-float-type-p type)
(if (< fprs 8)
(incf fprs)
((alien-single-float-type-p type)
(if (< fprs 8)
(incf fprs)
@@
-285,7
+279,10
@@
(incf stack 2))) ; the stack.
(new-args arg)
(new-arg-types type))
(incf stack 2))) ; the stack.
(new-args arg)
(new-arg-types type))
- (t
+ (t ;; integer or SAP
+ (if (< gprs 8)
+ (incf gprs 1)
+ (incf stack 1))
(new-args arg)
(new-arg-types type)))))
(cond ((and (alien-integer-type-p result-type)
(new-args arg)
(new-arg-types type)))))
(cond ((and (alien-integer-type-p result-type)
@@
-428,6
+425,7
@@
(define-vop (alloc-number-stack-space)
(:info amount)
(:results (result :scs (sap-reg any-reg)))
(define-vop (alloc-number-stack-space)
(:info amount)
(:results (result :scs (sap-reg any-reg)))
+ (:result-types system-area-pointer)
(:temporary (:scs (unsigned-reg) :to (:result 0)) temp)
(:generator 0
(unless (zerop amount)
(:temporary (:scs (unsigned-reg) :to (:result 0)) temp)
(:generator 0
(unless (zerop amount)