Update of /cvsroot/sbcl/sbcl/src/compiler/ppc
In directory usw-pr-cvs1:/tmp/cvs-serv21640/src/compiler/ppc
Modified Files:
backend-parms.lisp macros.lisp parms.lisp vm.lisp
Log Message:
0.7.3.18:
Merged def!constant patch (CSR sbcl-devel 2002-05-17)
... cross-compiler now starts knowing about constant values
src/compiler/assem tweaks
... declare some things ignorable
... comment tweaks
other backend tweaks
... declare the type for with-adjustable-vector
[ the fact that I had to do this four times, once for each
backend, is not optimal. ]
Index: backend-parms.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/backend-parms.lisp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** backend-parms.lisp 3 May 2002 14:59:15 -0000 1.2
--- backend-parms.lisp 19 May 2002 13:55:32 -0000 1.3
***************
*** 1,5 ****
(in-package "SB!VM")
! (defconstant +backend-fasl-file-implementation+ :ppc)
(setf *backend-register-save-penalty* 3)
(setf *backend-byte-order* :big-endian)
--- 1,5 ----
(in-package "SB!VM")
! (def!constant +backend-fasl-file-implementation+ :ppc)
(setf *backend-register-save-penalty* 3)
(setf *backend-byte-order* :big-endian)
Index: macros.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/macros.lisp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** macros.lisp 18 Mar 2002 17:56:12 -0000 1.1
--- macros.lisp 19 May 2002 13:55:32 -0000 1.2
***************
*** 348,351 ****
--- 348,352 ----
:fill-pointer 0
:adjustable t))))
+ (declare (type (vector (unsigned-byte 8) 16) ,var))
(setf (fill-pointer ,var) 0)
(unwind-protect
Index: parms.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/parms.lisp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** parms.lisp 18 Mar 2002 17:56:12 -0000 1.1
--- parms.lisp 19 May 2002 13:55:32 -0000 1.2
***************
*** 6,57 ****
(in-package "SB!VM")
! (defconstant n-word-bits 32
"Number of bits per word where a word holds one lisp descriptor.")
! (defconstant n-byte-bits 8
"Number of bits per byte where a byte is the smallest addressable object.")
! (defconstant word-shift (1- (integer-length (/ n-word-bits n-byte-bits)))
"Number of bits to shift between word addresses and byte addresses.")
! (defconstant n-word-bytes (/ n-word-bits n-byte-bits)
"Number of bytes in a word.")
! (defconstant float-sign-shift 31)
! (defconstant single-float-bias 126)
(defconstant-eqx single-float-exponent-byte (byte 8 23) #'equalp)
(defconstant-eqx single-float-significand-byte (byte 23 0) #'equalp)
! (defconstant single-float-normal-exponent-min 1)
! (defconstant single-float-normal-exponent-max 254)
! (defconstant single-float-hidden-bit (ash 1 23))
! (defconstant single-float-trapping-nan-bit (ash 1 22))
! (defconstant double-float-bias 1022)
(defconstant-eqx double-float-exponent-byte (byte 11 20) #'equalp)
(defconstant-eqx double-float-significand-byte (byte 20 0) #'equalp)
! (defconstant double-float-normal-exponent-min 1)
! (defconstant double-float-normal-exponent-max #x7FE)
! (defconstant double-float-hidden-bit (ash 1 20))
! (defconstant double-float-trapping-nan-bit (ash 1 19))
! (defconstant single-float-digits
(+ (byte-size single-float-significand-byte) 1))
! (defconstant double-float-digits
(+ (byte-size double-float-significand-byte) n-word-bits 1))
! (defconstant float-inexact-trap-bit (ash 1 0))
! (defconstant float-divide-by-zero-trap-bit (ash 1 1))
! (defconstant float-underflow-trap-bit (ash 1 2))
! (defconstant float-overflow-trap-bit (ash 1 3))
! (defconstant float-invalid-trap-bit (ash 1 4))
! (defconstant float-round-to-nearest 0)
! (defconstant float-round-to-zero 1)
! (defconstant float-round-to-positive 2)
! (defconstant float-round-to-negative 3)
(defconstant-eqx float-rounding-mode (byte 2 0) #'equalp) ; RD
--- 6,57 ----
(in-package "SB!VM")
! (def!constant n-word-bits 32
"Number of bits per word where a word holds one lisp descriptor.")
! (def!constant n-byte-bits 8
"Number of bits per byte where a byte is the smallest addressable object.")
! (def!constant word-shift (1- (integer-length (/ n-word-bits n-byte-bits)))
"Number of bits to shift between word addresses and byte addresses.")
! (def!constant n-word-bytes (/ n-word-bits n-byte-bits)
"Number of bytes in a word.")
! (def!constant float-sign-shift 31)
! (def!constant single-float-bias 126)
(defconstant-eqx single-float-exponent-byte (byte 8 23) #'equalp)
(defconstant-eqx single-float-significand-byte (byte 23 0) #'equalp)
! (def!constant single-float-normal-exponent-min 1)
! (def!constant single-float-normal-exponent-max 254)
! (def!constant single-float-hidden-bit (ash 1 23))
! (def!constant single-float-trapping-nan-bit (ash 1 22))
! (def!constant double-float-bias 1022)
(defconstant-eqx double-float-exponent-byte (byte 11 20) #'equalp)
(defconstant-eqx double-float-significand-byte (byte 20 0) #'equalp)
! (def!constant double-float-normal-exponent-min 1)
! (def!constant double-float-normal-exponent-max #x7FE)
! (def!constant double-float-hidden-bit (ash 1 20))
! (def!constant double-float-trapping-nan-bit (ash 1 19))
! (def!constant single-float-digits
(+ (byte-size single-float-significand-byte) 1))
! (def!constant double-float-digits
(+ (byte-size double-float-significand-byte) n-word-bits 1))
! (def!constant float-inexact-trap-bit (ash 1 0))
! (def!constant float-divide-by-zero-trap-bit (ash 1 1))
! (def!constant float-underflow-trap-bit (ash 1 2))
! (def!constant float-overflow-trap-bit (ash 1 3))
! (def!constant float-invalid-trap-bit (ash 1 4))
! (def!constant float-round-to-nearest 0)
! (def!constant float-round-to-zero 1)
! (def!constant float-round-to-positive 2)
! (def!constant float-round-to-negative 3)
(defconstant-eqx float-rounding-mode (byte 2 0) #'equalp) ; RD
***************
*** 60,64 ****
(defconstant-eqx float-exceptions-byte (byte 5 0) #'equalp) ; cexc
! (defconstant float-fast-bit 2) ; Non-IEEE mode
--- 60,64 ----
(defconstant-eqx float-exceptions-byte (byte 5 0) #'equalp) ; cexc
! (def!constant float-fast-bit 2) ; Non-IEEE mode
***************
*** 69,73 ****
;;; work.
;;;
! (defconstant number-stack-displacement
(* 2 sb!vm:n-word-bytes))
--- 69,73 ----
;;; work.
;;;
! (def!constant number-stack-displacement
(* 2 sb!vm:n-word-bytes))
***************
*** 78,104 ****
;;;
! (defconstant read-only-space-start #x01000000)
! (defconstant read-only-space-end #x04ff8000)
! (defconstant binding-stack-start #x06000000)
! (defconstant binding-stack-end #x06ff0000)
! (defconstant control-stack-start #x07000000)
! (defconstant control-stack-end #x07ff0000)
! (defconstant static-space-start #x08000000)
! (defconstant static-space-end #x097fff00)
;;; FIXME: this is a gross violation of OAOO, done purely to support
;;; the #define of DYNAMIC_SPACE_SIZE in validate.c -- CSR, 2002-02-25
;;; (these numbers should match dynamic-0-*)
! (defconstant dynamic-space-start #x40000000)
! (defconstant dynamic-space-end #x47fff000)
;;; nothing _seems_ to be using these addresses
! (defconstant dynamic-0-space-start #x40000000)
! (defconstant dynamic-0-space-end #x47fff000)
! (defconstant dynamic-1-space-start #x48000000)
! (defconstant dynamic-1-space-end #x4ffff000)
--- 78,104 ----
;;;
! (def!constant read-only-space-start #x01000000)
! (def!constant read-only-space-end #x04ff8000)
! (def!constant binding-stack-start #x06000000)
! (def!constant binding-stack-end #x06ff0000)
! (def!constant control-stack-start #x07000000)
! (def!constant control-stack-end #x07ff0000)
! (def!constant static-space-start #x08000000)
! (def!constant static-space-end #x097fff00)
;;; FIXME: this is a gross violation of OAOO, done purely to support
;;; the #define of DYNAMIC_SPACE_SIZE in validate.c -- CSR, 2002-02-25
;;; (these numbers should match dynamic-0-*)
! (def!constant dynamic-space-start #x40000000)
! (def!constant dynamic-space-end #x47fff000)
;;; nothing _seems_ to be using these addresses
! (def!constant dynamic-0-space-start #x40000000)
! (def!constant dynamic-0-space-end #x47fff000)
! (def!constant dynamic-1-space-start #x48000000)
! (def!constant dynamic-1-space-end #x4ffff000)
Index: vm.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/vm.lisp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** vm.lisp 18 Mar 2002 17:56:12 -0000 1.1
--- vm.lisp 19 May 2002 13:55:32 -0000 1.2
***************
*** 11,15 ****
(let ((offset-sym (symbolicate name "-OFFSET")))
`(eval-when (:compile-toplevel :load-toplevel :execute)
! (defconstant ,offset-sym ,offset)
(setf (svref *register-names* ,offset-sym) ,(symbol-name
name)))))
--- 11,15 ----
(let ((offset-sym (symbolicate name "-OFFSET")))
`(eval-when (:compile-toplevel :load-toplevel :execute)
! (def!constant ,offset-sym ,offset)
(setf (svref *register-names* ,offset-sym) ,(symbol-name
name)))))
***************
*** 87,91 ****
(list* `(define-storage-class ,sc-name ,index
,@(cdr class))
! `(defconstant ,constant-name ,index)
forms)))
(index 0 (1+ index))
--- 87,91 ----
(list* `(define-storage-class ,sc-name ,index
,@(cdr class))
! `(def!constant ,constant-name ,index)
forms)))
(index 0 (1+ index))
***************
*** 96,100 ****
;; XXX this is most likely wrong. Check with Eric Marsden next time you
;; see him
! (defconstant sb!vm::kludge-nondeterministic-catch-block-size 7)
(define-storage-classes
--- 96,100 ----
;; XXX this is most likely wrong. Check with Eric Marsden next time you
;; see him
! (def!constant sb!vm::kludge-nondeterministic-catch-block-size 7)
(define-storage-classes
***************
*** 269,286 ****
;;; The SC numbers for register and stack arguments/return values.
;;;
! (defconstant register-arg-scn (meta-sc-number-or-lose 'descriptor-reg))
! (defconstant immediate-arg-scn (meta-sc-number-or-lose 'any-reg))
! (defconstant control-stack-arg-scn (meta-sc-number-or-lose 'control-stack))
(eval-when (:compile-toplevel :load-toplevel :execute)
;;; Offsets of special stack frame locations
! (defconstant ocfp-save-offset 0)
! (defconstant lra-save-offset 1)
! (defconstant nfp-save-offset 2)
;;; The number of arguments/return values passed in registers.
;;;
! (defconstant register-arg-count 4)
;;; Names to use for the argument registers.
--- 269,286 ----
;;; The SC numbers for register and stack arguments/return values.
;;;
! (def!constant register-arg-scn (meta-sc-number-or-lose 'descriptor-reg))
! (def!constant immediate-arg-scn (meta-sc-number-or-lose 'any-reg))
! (def!constant control-stack-arg-scn (meta-sc-number-or-lose 'control-stack))
(eval-when (:compile-toplevel :load-toplevel :execute)
;;; Offsets of special stack frame locations
! (def!constant ocfp-save-offset 0)
! (def!constant lra-save-offset 1)
! (def!constant nfp-save-offset 2)
;;; The number of arguments/return values passed in registers.
;;;
! (def!constant register-arg-count 4)
;;; Names to use for the argument registers.
***************
*** 306,310 ****
;;; This is used by the debugger.
;;;
! (defconstant single-value-return-byte-offset 8)
--- 306,310 ----
;;; This is used by the debugger.
;;;
! (def!constant single-value-return-byte-offset 8)
_______________________________________________________________
Hundreds of nodes, one monster rendering program.
Now that's a super model! Visit http://clustering.foundries.sf.net/
|