X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Fvm.lisp;h=2782b4d594e99e928bc1d28b5e79bc805b8b1c81;hb=4d7a5bc91750cf24fe0002c5210891846f53351a;hp=97e8e0ab88688fe8c895140a16b86bf9f038dda1;hpb=86636706a92cbf7eac49c0e9a8ba9d5b49a0cd3f;p=sbcl.git diff --git a/src/compiler/ppc/vm.lisp b/src/compiler/ppc/vm.lisp index 97e8e0a..2782b4d 100644 --- a/src/compiler/ppc/vm.lisp +++ b/src/compiler/ppc/vm.lisp @@ -74,14 +74,14 @@ (defreg a3 27) (defreg l0 28) (defreg l1 29) - (defreg l2 30) + (defreg #!-sb-thread l2 #!+sb-thread thread 30) (defreg lip 31) (defregset non-descriptor-regs nl0 nl1 nl2 nl3 nl4 nl5 nl6 #+nil nl7 cfunc nargs nfp) (defregset descriptor-regs - fdefn a0 a1 a2 a3 ocfp lra cname lexenv l0 l1 l2 ) + fdefn a0 a1 a2 a3 ocfp lra cname lexenv l0 l1 #!-sb-thread l2 ) (defregset *register-arg-offsets* a0 a1 a2 a3) @@ -261,6 +261,8 @@ (defregtn null descriptor-reg) (defregtn code descriptor-reg) (defregtn alloc any-reg) + (defregtn lra descriptor-reg) + (defregtn lexenv descriptor-reg) (defregtn nargs any-reg) (defregtn bsp any-reg) @@ -284,6 +286,19 @@ (if (static-symbol-p value) (sc-number-or-lose 'immediate) nil)))) + +(!def-vm-support-routine boxed-immediate-sc-p (sc) + (or (eql sc (sc-number-or-lose 'zero)) + (eql sc (sc-number-or-lose 'null)) + (eql sc (sc-number-or-lose 'immediate)))) + +;;; A predicate to see if a character can be used as an inline +;;; constant (the immediate field in the instruction used is sixteen +;;; bits wide, which is not the same as any defined subtype of +;;; CHARACTER). +(defun inlinable-character-constant-p (char) + (and (characterp char) + (< (char-code char) #x10000))) ;;;; function call parameters @@ -317,6 +332,11 @@ :offset n)) *register-arg-offsets*)) +#!+sb-thread +(defparameter thread-base-tn + (make-random-tn :kind :normal :sc (sc-or-lose 'unsigned-reg) + :offset thread-offset)) + (export 'single-value-return-byte-offset) ;;; This is used by the debugger. @@ -379,3 +399,7 @@ (%%ldb integer size posn)))) (t (values :default nil)))) (t (values :default nil))))) + +(defun primitive-type-indirect-cell-type (ptype) + (declare (ignore ptype)) + nil)