Changeset 13279 for trunk/source/xdump


Ignore:
Timestamp:
Dec 9, 2009, 7:48:38 PM (10 years ago)
Author:
gb
Message:

Lots of changes from "purify" branch, mostly involving:

  • new memory layout, to support x86 function purification, static cons
  • fasloader changes to load/save string constants faster

Fasl version, image version changed; new binaries for all platforms soon.

Location:
trunk/source/xdump
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/xdump/faslenv.lisp

    r13067 r13279  
    4444(defconstant $fasl-file-id #xff00)
    4545(defconstant $fasl-file-id1 #xff01)
    46 (defconstant $fasl-vers #x5b)
    47 (defconstant $fasl-min-vers #x5b)
     46(defconstant $fasl-vers #x5e)
     47(defconstant $fasl-min-vers #x5e)
    4848(defconstant $faslend #xff)
    4949(defconstant $fasl-buf-len 2048)
  • trunk/source/xdump/heap-image.lisp

    r13067 r13279  
    9797
    9898
    99 (defparameter *image-abi-version* 1033)
     99(defparameter *image-abi-version* 1036)
    100100
    101101(defun write-image-file (pathname image-base spaces &optional (abi-version *image-abi-version*))
  • trunk/source/xdump/xfasload.lisp

    r13067 r13279  
    8282(defparameter *xload-managed-static-space-address* nil)
    8383(defparameter *xload-managed-static-space-size* 0)
     84(defparameter *xload-static-cons-space-address* nil)
     85(defparameter *xload-static-cons-space-size* 0)
    8486
    8587(defstruct backend-xload-info
     
    111113          (+ *xload-image-base-address*
    112114             *xload-purespace-reserve*))
    113     (setq *xload-managed-static-space-address* *xload-dynamic-space-address*)
     115    (setq *xload-managed-static-space-address* *xload-dynamic-space-address*
     116          *xload-static-cons-space-address* *xload-dynamic-space-address*)
    114117    (setq *xload-static-space-address*
    115118          (backend-xload-info-static-space-address
     
    345348(defparameter *xload-static-space* nil)
    346349(defparameter *xload-managed-static-space* nil)
     350(defparameter *xload-static-cons-space* nil)
    347351(defparameter *xload-symbols* nil)
    348352(defparameter *xload-symbol-addresses* nil)
     
    10291033         (*xload-static-space* (init-xload-space *xload-static-space-address* *xload-static-space-size* area-static))
    10301034         (*xload-managed-static-space* (init-xload-space *xload-managed-static-space-address* *xload-managed-static-space-size* area-managed-static))
     1035         (*xload-static-cons-space* (init-xload-space *xload-static-cons-space-address* *xload-static-cons-space-size* area-static-cons))
    10311036                                                 
    10321037         (*xload-package-alist* (xload-clone-packages (xload-initial-packages)))
     
    11371142  (write-image-file output-file
    11381143                    heap-start
    1139                     (list *xload-readonly-space*
    1140                           *xload-static-space*
     1144                    (list *xload-static-space*
     1145                          *xload-readonly-space*
    11411146                          *xload-dynamic-space*
    1142                           *xload-managed-static-space*)))
     1147                          *xload-managed-static-space*
     1148                          *xload-static-cons-space*)))
    11431149                   
    11441150
     
    11811187  (%epushval s (xload-make-sfloat *xload-readonly-space* (%fasl-read-long s))))
    11821188
     1189(defun xload-read-utf-8-string (s v o nchars nextra)
     1190  (declare (fixnum nchars nextra))
     1191  (if (eql 0 nextra)
     1192    (dotimes (i nchars)
     1193      (setf (u32-ref v (+ o (* i 4) *xload-target-misc-data-offset*))
     1194            (%fasl-read-byte s)) )
     1195    (flet ((trailer-byte ()
     1196             (when (> nextra 0)
     1197               (decf nextra)
     1198               (let* ((b (%fasl-read-byte s)))
     1199                 (declare ((unsigned-byte 8) b))
     1200                 (and (>= b #x80)
     1201                      (< b #xc0)
     1202                      (logand b #x3f))))))
     1203      (declare (inline trailer-byte))
     1204      (dotimes (i nchars)
     1205        (let* ((b0 (%fasl-read-byte s)))
     1206          (declare ((unsigned-byte 8) b0))
     1207          (setf (u32-ref v (+ o (* i 4) *xload-target-misc-data-offset*))
     1208                (or
     1209                 (cond ((< b0 #x80) b0)
     1210                       ((and (>= b0 #xc2)
     1211                             (< b0 #xe0))
     1212                        (let* ((b1 (trailer-byte)))
     1213                          (and b1 (logior (ash (logand b0 #x1f) 6) b1))))
     1214                       ((and (>= b0 #xe0)
     1215                             (< b0 #xf0))
     1216                        (let* ((b1 (trailer-byte))
     1217                               (b2 (trailer-byte)))
     1218                          (and b1 b2 (logior (ash (logand b0 #x0f) 12)
     1219                                             (logior (ash b1 6)
     1220                                                     b2)))))
     1221                       ((and (>= b0 #xf0)
     1222                             (< b0 #xf5))
     1223                        (let* ((b1 (trailer-byte))
     1224                               (b2 (trailer-byte))
     1225                               (b3 (trailer-byte)))
     1226                          (and b1
     1227                               b2
     1228                               b3
     1229                               (logior (ash (logand b0 #x7) 18)
     1230                                       (logior (ash b1 12)
     1231                                               (logior (ash b2 6)
     1232                                                       b3)))))))
     1233                 (char-code #\Replacement_Character))))))))
     1234
     1235
    11831236(defxloadfaslop $fasl-vstr (s)
    1184   (let* ((n (%fasl-read-count s)))
    1185     (multiple-value-bind (str v o) (xload-make-ivector *xload-readonly-space* :simple-string n)
     1237  (let* ((nchars (%fasl-read-count s))
     1238         (nextra (%fasl-read-count s)))
     1239    (multiple-value-bind (str v o) (xload-make-ivector *xload-readonly-space* :simple-string nchars)
    11861240      (%epushval s str)
    1187       (%fasl-read-n-bytes s v (+ o *xload-target-misc-data-offset*) n)
     1241      (xload-read-utf-8-string s v o nchars nextra)
    11881242      str)))
    11891243
     
    11961250         (dotimes (i n)
    11971251           (setf (u8-ref v (+ o i *xload-target-misc-data-offset*))
    1198                  (%fasl-read-count s))))
     1252                 (%fasl-read-byte s))))
    11991253        (t
    12001254         (dotimes (i n)
    12011255           (setf (u32-ref v (+ o (* i 4) *xload-target-misc-data-offset*))
    1202                  (%fasl-read-count s)))))
     1256                 (%fasl-read-byte s)))))
    12031257      str)))
    12041258
  • trunk/source/xdump/xppcfasload.lisp

    r13067 r13279  
    111111   :nil-relative-symbols ppc::*ppc-nil-relative-symbols*
    112112   :static-space-init-function 'ppc32-initialize-static-space
    113    :purespace-reserve (ash 64 20)
     113   :purespace-reserve (ash 128 20)
    114114   :static-space-address (ash 2 12)
    115115))
     
    133133   #+linuxppc-target :linuxppc64
    134134   #+darwinppc-target :darwinppc64
    135    :image-base-address #x100000000
     135   :image-base-address #+linuxppc-target #x50000000000 #+darwinppc-target #x300000000000
    136136   :nil-relative-symbols ppc::*ppc-nil-relative-symbols*
    137137   :static-space-init-function 'ppc64-initialize-static-space
    138    :purespace-reserve (ash 64 20)
     138   :purespace-reserve (ash 128 30)
    139139   :static-space-address (ash 2 12)
    140140   ))
  • trunk/source/xdump/xx8632-fasload.lisp

    r13067 r13279  
    5353   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    5454   :static-space-init-function 'x8632-initialize-static-space
    55    :purespace-reserve (ash 1 26)
     55   :purespace-reserve (ash 128 20)
    5656   :static-space-address (+ (ash 1 16) (ash 2 12))
    5757))
     
    7272   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    7373   :static-space-init-function 'x8632-initialize-static-space
    74    :purespace-reserve (ash 1 26)
     74   :purespace-reserve (ash 128 20)
    7575   :static-space-address (+ (ash 1 16) (ash 2 12))
    7676))
     
    9191   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    9292   :static-space-init-function 'x8632-initialize-static-space
    93    :purespace-reserve (ash 1 26)
     93   :purespace-reserve (ash 128 20)
    9494   :static-space-address (+ (ash 1 16) (ash 2 12))
    9595))
     
    110110   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    111111   :static-space-init-function 'x8632-initialize-static-space
    112    :purespace-reserve (ash 1 26)
     112   :purespace-reserve (ash 128 20)
    113113   :static-space-address (+ (ash 1 16) (ash 2 12))
    114114))
     
    129129   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    130130   :static-space-init-function 'x8632-initialize-static-space
    131    :purespace-reserve (ash 1 26)
     131   :purespace-reserve (ash 128 20)
    132132   :static-space-address (+ (ash 1 16) (ash 2 12))
    133133))
  • trunk/source/xdump/xx8664-fasload.lisp

    r13067 r13279  
    7070   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    7171   :static-space-init-function 'x8664-initialize-static-space
    72    :purespace-reserve (ash 1 30)
     72   :purespace-reserve (ash 128 30)
    7373   :static-space-address (+ (ash 1 16) (ash 2 12))
    7474))
     
    9191   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    9292   :static-space-init-function 'x8664-initialize-static-space
    93    :purespace-reserve (ash 1 30)
     93   :purespace-reserve (ash 128 30)
    9494   :static-space-address (+ (ash 1 16) (ash 2 12))
    9595))
     
    110110   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    111111   :static-space-init-function 'x8664-initialize-static-space
    112    :purespace-reserve (ash 1 30)
     112   :purespace-reserve (ash 128 30)
    113113   :static-space-address (+ (ash 1 16) (ash 2 12))
    114114))
     
    129129   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    130130   :static-space-init-function 'x8664-initialize-static-space
    131    :purespace-reserve (ash 1 30)
     131   :purespace-reserve (ash 128 30)
    132132   :static-space-address (+ (ash 1 16) (ash 2 12))
    133133))
     
    148148   :nil-relative-symbols x86::*x86-nil-relative-symbols*
    149149   :static-space-init-function 'x8664-initialize-static-space
    150    :purespace-reserve (ash 1 30)
     150   :purespace-reserve (ash 128 30)
    151151   :static-space-address (+ (ash 1 16) (ash 2 12))
    152152))
Note: See TracChangeset for help on using the changeset viewer.