From: Nikodemus Siivola Date: Thu, 30 Sep 2010 08:36:38 +0000 (+0000) Subject: 1.0.43.10: make.sh now accepts --dynamic-space-size= option X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=fc6722762a839241675fac03d48531d5916edf50;p=sbcl.git 1.0.43.10: make.sh now accepts --dynamic-space-size= option ...so users can build SBCL with the right default without touching source. Fixes lp#383222. --- diff --git a/INSTALL b/INSTALL index f840516..b1413ab 100644 --- a/INSTALL +++ b/INSTALL @@ -126,6 +126,15 @@ INSTALLING SBCL This also sets the default SBCL_HOME to prefix/lib/sbcl/ for the built binaries. + To configure SBCL with a non-standard default dynamic-space size, + use the --dynamic-space-size option: + + $ sh make.sh --dynamic-space-size=1Gb + $ sh make.sh --dynamic-space-size=500Mb + + If mega- or gigabytes are not specified, the number is taken to be + in megabytes. The standard default is platform specific. + If you don't already have an SBCL binary installed as "sbcl" on your system, you'll need to tell make.sh what Lisp to use as the cross-compilation host. For example, to use CMUCL (assuming has diff --git a/NEWS b/NEWS index c5427fa..f4edd25 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,8 @@ changes relative to sbcl-1.0.43: external-format for its :INPUT, :OUTPUT, AND :ERROR :STREAMs. * enhancement: ALLOCATION-INFORMATION also provides the page the object resides on. + * enhancement: default dynamic-space size can be configured at build-time + without touching source, using the --dynamic-space-size argument to make.sh. * bug fix: compiler failed to derive the result-type of MAKE-ARRAY as (AND VECTOR (NOT SIMPLE-ARRAY)) when appropriate. (lp#309130) * bug fix: (THE (VALUES ...)) in LOAD-TIME-VALUE caused a compiler-error. diff --git a/make.sh b/make.sh index 30a91a8..6dafe9f 100755 --- a/make.sh +++ b/make.sh @@ -71,6 +71,9 @@ do --xc-host=) $optarg_ok && SBCL_XC_HOST=$optarg ;; + --dynamic-space-size=) + $optarg_ok && SBCL_DYNAMIC_SPACE_SIZE=$optarg + ;; -*) bad_option "Unknown command-line option to $0: \"$option\"" ;; @@ -118,6 +121,12 @@ Options: Default prefix is: /usr/local + --dynamic-space-size= Specify default dynamic-space size. + + If not provided, the default is platform-specific. is + taken to be megabytes unless explicitly suffixed with Gb in + order to specify the size in gigabytes. + --xc-host= Specify the Common Lisp compilation host. The string provided should be a command to invoke the @@ -155,9 +164,10 @@ echo "//Starting build: $build_started" # Apparently option parsing succeeded. Print out the results. echo "//Options: --prefix='$SBCL_PREFIX' --xc-host='$SBCL_XC_HOST'" -# Save prefix for make and install.sh. mkdir -p output +# Save prefix for make and install.sh. echo "SBCL_PREFIX='$SBCL_PREFIX'" > output/prefix.def +echo "$SBCL_DYNAMIC_SPACE_SIZE" > output/dynamic-space-size.txt # FIXME: Tweak this script, and the rest of the system, to support # a second bootstrapping pass in which the cross-compilation host is diff --git a/src/compiler/generic/parms.lisp b/src/compiler/generic/parms.lisp index d590aeb..dfdcaa5 100644 --- a/src/compiler/generic/parms.lisp +++ b/src/compiler/generic/parms.lisp @@ -12,6 +12,23 @@ (in-package "SB!VM") +(def!macro !configure-dynamic-space-end (default) + (with-open-file (f "output/dynamic-space-size.txt") + (let ((line (read-line f))) + (multiple-value-bind (number end) + (parse-integer line :junk-allowed t) + (if number + (let* ((ext (subseq line end)) + (mult (cond ((or (zerop (length ext)) + (member ext '("MB MIB") :test #'equalp)) + (expt 2 20)) + ((member ext '("GB" "GIB") :test #'equalp) + (expt 2 30)) + (t + (error "Invalid --dynamic-space-size=~A" line))))) + `(+ dynamic-space-start ,(* number mult))) + default))))) + (defparameter *c-callable-static-symbols* '(sub-gc sb!kernel::post-gc diff --git a/src/compiler/ppc/parms.lisp b/src/compiler/ppc/parms.lisp index f03c325..363556b 100644 --- a/src/compiler/ppc/parms.lisp +++ b/src/compiler/ppc/parms.lisp @@ -116,7 +116,7 @@ #!+gencgc (progn (def!constant dynamic-space-start #x4f000000) - (def!constant dynamic-space-end #x7efff000)) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x7efff000))) #!-gencgc (progn (def!constant dynamic-0-space-start #x4f000000) @@ -129,7 +129,7 @@ #!+gencgc (progn (def!constant dynamic-space-start #x4f000000) - (def!constant dynamic-space-end #x7efff000)) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x7efff000))) #!-gencgc (progn (def!constant dynamic-0-space-start #x4f000000) @@ -149,7 +149,7 @@ #!+gencgc (progn (def!constant dynamic-space-start #x4f000000) - (def!constant dynamic-space-end #x6afff000)) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x6afff000))) #!-gencgc (progn (def!constant dynamic-0-space-start #x4f000000) @@ -162,7 +162,7 @@ #!+gencgc (progn (def!constant dynamic-space-start #x10000000) - (def!constant dynamic-space-end #x6ffff000)) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x6ffff000))) #!-gencgc (progn (def!constant dynamic-0-space-start #x10000000) diff --git a/src/compiler/x86-64/parms.lisp b/src/compiler/x86-64/parms.lisp index 7d03224..4d4cebb 100644 --- a/src/compiler/x86-64/parms.lisp +++ b/src/compiler/x86-64/parms.lisp @@ -110,13 +110,13 @@ (def!constant static-space-start #x20100000) (def!constant static-space-end #x201ff000) - (def!constant dynamic-space-start #x1000000000) + (def!constant dynamic-space-start #x1000000000) #!-openbsd - (def!constant dynamic-space-end #x11ffff0000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x11ffff0000)) #!+openbsd ;; This is lower on OpenBSD to allow SBCL to run under the default ;; 512M data size limit. - (def!constant dynamic-space-end #x101bcf0000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x101bcf0000)) (def!constant linkage-table-space-start #x20200000) (def!constant linkage-table-space-end #x202ff000) diff --git a/src/compiler/x86/parms.lisp b/src/compiler/x86/parms.lisp index 44b5050..8bf3674 100644 --- a/src/compiler/x86/parms.lisp +++ b/src/compiler/x86/parms.lisp @@ -194,7 +194,7 @@ (def!constant static-space-end #x221ff000) (def!constant dynamic-space-start #x22300000) - (def!constant dynamic-space-end #x42300000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x42300000)) (def!constant linkage-table-space-start #x22200000) (def!constant linkage-table-space-end #x222ff000)) @@ -208,7 +208,7 @@ (def!constant static-space-end #x011ff000) (def!constant dynamic-space-start #x09000000) - (def!constant dynamic-space-end #x29000000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x29000000)) (def!constant linkage-table-space-start #x01200000) (def!constant linkage-table-space-end #x012ff000)) @@ -222,7 +222,7 @@ (def!constant static-space-end #x201ff000) (def!constant dynamic-space-start #x48000000) - (def!constant dynamic-space-end #xA0000000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #xA0000000)) (def!constant linkage-table-space-start #x20200000) (def!constant linkage-table-space-end #x202ff000)) @@ -236,7 +236,7 @@ (def!constant static-space-end #x011ff000) (def!constant dynamic-space-start #x58000000) - (def!constant dynamic-space-end #x98000000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x98000000)) (def!constant linkage-table-space-start #x01200000) (def!constant linkage-table-space-end #x012ff000)) @@ -250,7 +250,7 @@ (def!constant static-space-end #x1b1ff000) (def!constant dynamic-space-start #x40000000) - (def!constant dynamic-space-end #x5bfff000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x5bfff000)) (def!constant linkage-table-space-start #x1b200000) (def!constant linkage-table-space-end #x1b2ff000)) @@ -264,7 +264,7 @@ (def!constant static-space-end #x201ff000) (def!constant dynamic-space-start #x60000000) - (def!constant dynamic-space-end #x98000000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x98000000)) ;; In CMUCL: 0xB0000000->0xB1000000 (def!constant linkage-table-space-start #x20200000) @@ -280,7 +280,7 @@ (def!constant static-space-end #x041ff000) (def!constant dynamic-space-start #x10000000) - (def!constant dynamic-space-end #x6ffff000) + (def!constant dynamic-space-end (!configure-dynamic-space-end #x6ffff000)) (def!constant linkage-table-space-start #x04200000) (def!constant linkage-table-space-end #x042ff000)) diff --git a/version.lisp-expr b/version.lisp-expr index 90b5600..20b341a 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.43.9" +"1.0.43.10"