+(def!macro !configure-dynamic-space-end (&optional 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)))
+ (or default
+ `(+ dynamic-space-start
+ (ecase n-word-bits
+ (32 (expt 2 29))
+ (64 (expt 2 30))))))))))
+