From c5759c03562c984984e368c2ab85a21dceb719ab Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Wed, 2 Jul 2003 14:32:12 +0000 Subject: [PATCH] 0.8.1.15: Mostly MIPS goodies, though some infrastructural fixes too ... fix hideous DEFINE-PARTIAL-REFFER constant-case bug; ... also adjust the costs so that the constant reffers and setters are prioritized; ... also build fix for undefined static symbols (reported by KMR end June 2003) ... include src/runtime/Config in tools-for-build/Makefile (and adjust order of events in make-config.sh to ensure that src/runtime/Config exists by the time we need to build any of the tools-for-build) --- NEWS | 2 ++ make-config.sh | 40 +++++++++++++++++++++------------------- src/compiler/mips/macros.lisp | 6 +++--- src/compiler/mips/parms.lisp | 4 ++++ tools-for-build/Makefile | 2 ++ version.lisp-expr | 2 +- 6 files changed, 33 insertions(+), 23 deletions(-) diff --git a/NEWS b/NEWS index 501d33d89..f419e8958 100644 --- a/NEWS +++ b/NEWS @@ -1905,6 +1905,8 @@ changes in sbcl-0.8.2 relative to sbcl-0.8.1: arguments. (reported by Adam Warner) * optimization: character compare routines now optimize comparing against a constant character. (reported by Gilbert Baumann) + * bug fix: (SETF AREF) on byte-sized-element arrays with constant index + argument now works properly on the MIPS platform. * fixed some bugs revealed by Paul Dietz' test suite: ** LAST and [N]BUTLAST should accept a bignum. diff --git a/make-config.sh b/make-config.sh index 30d346aba..54e29823e 100644 --- a/make-config.sh +++ b/make-config.sh @@ -53,25 +53,7 @@ if [ "$sbcl_arch" = "" ] ; then exit 1 fi printf ":%s" "$sbcl_arch" >> $ltf -# KLUDGE: currently the x86 only works with the generational garbage -# collector (indicated by the presence of :GENCGC in *FEATURES*) and -# alpha, sparc and ppc with the stop'n'copy collector (indicated by -# the absence of :GENCGC in *FEATURES*). This isn't a great -# separation, but for now, rather than have :GENCGC in -# base-target-features.lisp-expr, we add it into local-target-features -# if we're building for x86. -- CSR, 2002-02-21 Then we do something -# similar with :STACK-GROWS-FOOWARD, too. -- WHN 2002-03-03 -if [ "$sbcl_arch" = "x86" ] ; then - printf ' :gencgc :stack-grows-downward-not-upward :c-stack-is-control-stack' >> $ltf -elif [ "$sbcl_arch" = "mips" ] ; then - # Use a little C program to try to guess the endianness. Ware - # cross-compilers! - $GNUMAKE -C tools-for-build determine-endianness - tools-for-build/determine-endianness >> $ltf -else - # Nothing need be done in this case, but sh syntax wants a placeholder. - echo > /dev/null -fi + for d in src/compiler src/assembly; do echo //setting up symlink $d/target original_dir=`pwd` @@ -157,6 +139,26 @@ case `uname` in esac cd $original_dir +# KLUDGE: currently the x86 only works with the generational garbage +# collector (indicated by the presence of :GENCGC in *FEATURES*) and +# alpha, sparc and ppc with the stop'n'copy collector (indicated by +# the absence of :GENCGC in *FEATURES*). This isn't a great +# separation, but for now, rather than have :GENCGC in +# base-target-features.lisp-expr, we add it into local-target-features +# if we're building for x86. -- CSR, 2002-02-21 Then we do something +# similar with :STACK-GROWS-FOOWARD, too. -- WHN 2002-03-03 +if [ "$sbcl_arch" = "x86" ] ; then + printf ' :gencgc :stack-grows-downward-not-upward :c-stack-is-control-stack' >> $ltf +elif [ "$sbcl_arch" = "mips" ] ; then + # Use a little C program to try to guess the endianness. Ware + # cross-compilers! + $GNUMAKE -C tools-for-build determine-endianness + tools-for-build/determine-endianness >> $ltf +else + # Nothing need be done in this case, but sh syntax wants a placeholder. + echo > /dev/null +fi + echo //finishing $ltf echo ')' >> $ltf diff --git a/src/compiler/mips/macros.lisp b/src/compiler/mips/macros.lisp index 4a0efed8c..63bd0c33d 100644 --- a/src/compiler/mips/macros.lisp +++ b/src/compiler/mips/macros.lisp @@ -373,7 +373,7 @@ ,(eval offset)))) (:results (value :scs ,scs)) (:result-types ,el-type) - (:generator 5 + (:generator 4 (inst ,(ecase size (:byte (if signed 'lb 'lbu)) (:short (if signed 'lh 'lhu))) @@ -417,9 +417,9 @@ ,el-type) (:results (result :scs ,scs)) (:result-types ,el-type) - (:generator 5 + (:generator 4 (inst ,(ecase size (:byte 'sb) (:short 'sh)) value object - (- (* ,offset n-word-bytes) (* index ,scale) ,lowtag)) + (- (+ (* ,offset n-word-bytes) (* index ,scale)) ,lowtag)) (move result value)))))) diff --git a/src/compiler/mips/parms.lisp b/src/compiler/mips/parms.lisp index 971f9012c..2db49109e 100644 --- a/src/compiler/mips/parms.lisp +++ b/src/compiler/mips/parms.lisp @@ -126,6 +126,10 @@ *current-catch-block* *current-unwind-protect-block* + *binding-stack-start* + *control-stack-start* + *control-stack-end* + ;; Interrupt Handling *free-interrupt-context-index* sb!unix::*interrupts-enabled* diff --git a/tools-for-build/Makefile b/tools-for-build/Makefile index d4caad336..7bfcf6b29 100644 --- a/tools-for-build/Makefile +++ b/tools-for-build/Makefile @@ -7,6 +7,8 @@ # provided with absolutely no warranty. See the COPYING and CREDITS # files for more information. +include ../src/runtime/Config + all: grovel_headers determine-endianness clean: diff --git a/version.lisp-expr b/version.lisp-expr index 1e781f47c..0b460ab45 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".) -"0.8.1.14" +"0.8.1.15" -- 2.11.4.GIT