From: William Harold Newman Date: Mon, 31 Dec 2001 02:01:16 +0000 (+0000) Subject: 0.pre7.109: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=90ca09b75fbc3b63b2f7d09c67b04b866dd783f6;p=sbcl.git 0.pre7.109: function name mess, continued... ...used NAMED-LAMBDA in DEFMACRO-MUNDANELY DEFUN ...tweaked non-toplevel handling of COLD-FSET so that it notifies the compiler about the source name (using NAMED-LAMBDA to do so) deleted dead symbols from package-data-list.lisp-expr as per APD sbcl-devel 2001-12-30 deleted bug 128 as per NJF sbcl-devel 2001-12-30 merged DB patch sbcl-devel 2001-12-30 for (mostly) conditional-on-SB-LDB gross errors dating back to all the global substitutions I was doing a while ago (and added :SB-LDB to my default customize-target-features.lisp, in hopes that maybe I can catch more such problems myself) --- diff --git a/BUGS b/BUGS index 9bec3d3..6146de2 100644 --- a/BUGS +++ b/BUGS @@ -1135,14 +1135,6 @@ Error in function C::GET-LAMBDA-TO-COMPILE: structure classes related by inheritance. As of 0.7.0, SBCL still doesn't follow it. -128: - READ-SEQUENCE doesn't work for Gray streams. (reported by Nathan - Froyd sbcl-devel 2001-10-15) As per subsequent discussion on the - list, the Gray streams proposal doesn't mention READ-SEQUENCE and - WRITE-SEQUENCE because it predates them, generalizing it to - cover them is an obvious extension, ACL does it, and there's a - patch for for CMU CL which does it too. - 129: insufficient syntax checking in MACROLET: (defun foo (x) diff --git a/TODO b/TODO index c15d321..0c479a1 100644 --- a/TODO +++ b/TODO @@ -23,6 +23,7 @@ for early 0.7.x: * patches postponed until after 0.7.0: ** Christophe Rhodes "rough patch to fix bug 106" 2001-10-28 + ** Alexey Dejneka "bug 111" 2001-12-30 * building with CLISP (or explaining why not) * urgent EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanup: ** fixed bug 137 diff --git a/base-target-features.lisp-expr b/base-target-features.lisp-expr index 7bed4b7..671f0fb 100644 --- a/base-target-features.lisp-expr +++ b/base-target-features.lisp-expr @@ -102,14 +102,15 @@ ;; Build SBCL with the old CMU CL low level debugger, "ldb". If ;; are aren't messing with CMU CL at a very low level (e.g. - ;; trying to diagnose GC problems) you shouldn't need this. + ;; trying to diagnose GC problems, or trying to debug assembly + ;; code for a port to a new CPU) you shouldn't need this. ; :sb-ldb ;; This isn't really a target Lisp feature at all, but controls ;; whether the build process produces an after-xc.core file. This - ;; can be useful for shortening the edit/compile/debug cycle if - ;; you're messing around with low-level internals of the system, - ;; as in slam.sh. Otherwise you don't need it. + ;; can be useful for shortening the edit/compile/debug cycle when + ;; you modify SBCL's own source code, as in slam.sh. Otherwise + ;; you don't need it. ; :sb-after-xc-core ;; Enable extra debugging output in the assem.lisp assembler/scheduler diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index 6ffb768..2f19617 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -560,8 +560,6 @@ like *STACK-TOP-HINT*" ;; ..and variables to control compiler policy "*INLINE-EXPANSION-LIMIT*" "*USE-IMPLEMENTATION-TYPES*" - "*BYTE-COMPILE-TOPLEVEL*" - "*BYTE-COMPILE-DEFAULT*" "*DERIVE-FUNCTION-TYPES*" ;; a special form for breaking out of our "declarations @@ -655,9 +653,6 @@ retained, possibly temporariliy, because it might be used internally." :use ("CL" "SB!ALIEN" "SB!C-CALL" "SB!GRAY" "SB!FASL" "SB!SYS") :export ("*AFTER-SAVE-INITIALIZATIONS*" "*BEFORE-SAVE-INITIALIZATIONS*" - "*ALL-MODIFIER-NAMES*" - "*BACKUP-EXTENSION*" - ;; lambda list keyword extensions "&MORE" @@ -740,7 +735,7 @@ retained, possibly temporariliy, because it might be used internally." "ONCE-ONLY" "DEFENUM" "DEFPRINTER" - "AVER" "AVER-TYPE" "ENFORCE-TYPE" + "AVER" "ENFORCE-TYPE" ;; ..and DEFTYPEs.. "INDEX" @@ -759,7 +754,7 @@ retained, possibly temporariliy, because it might be used internally." ;; encapsulation "ARGUMENT-LIST" "BASIC-DEFINITION" - "ENCAPSULATE" "ENCAPSULATED-DEFINITION" "ENCAPSULATED-P" + "ENCAPSULATE" "ENCAPSULATED-P" "UNENCAPSULATE" ;; various CHAR-CODEs @@ -785,7 +780,6 @@ retained, possibly temporariliy, because it might be used internally." ;; time "FORMAT-DECODED-TIME" "FORMAT-UNIVERSAL-TIME" - "PARSE-TIME" ;; indenting "MAKE-INDENTING-STREAM" diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index c0f5127..fef50bf 100644 --- a/src/code/defboot.lisp +++ b/src/code/defboot.lisp @@ -170,12 +170,13 @@ (unless (symbol-package (fun-name-block-name name)) (warn "DEFUN of uninterned symbol ~S (tricky for GENESIS)" name)) (multiple-value-bind (forms decls doc) (parse-body body) - (let* (;; stuff shared between LAMBDA and INLINE-LAMBDA + (let* (;; stuff shared between LAMBDA and INLINE-LAMBDA and NAMED-LAMBDA (lambda-guts `(,args ,@decls (block ,(fun-name-block-name name) ,@forms))) (lambda `(lambda ,@lambda-guts)) + (named-lambda `(named-lambda ,name ,@lambda-guts)) (inline-lambda (cond (;; Does the user not even want to inline? (not (inline-fun-name-p name)) @@ -204,6 +205,11 @@ ;; In cross-compilation of toplevel DEFUNs, we arrange ;; for the LAMBDA to be statically linked by GENESIS. + ;; + ;; It may seem strangely inconsistent not to use NAMED-LAMBDA + ;; here instead of LAMBDA. The reason is historical: + ;; COLD-FSET was written before NAMED-LAMBDA, and has special + ;; logic of its own to notify the compiler about NAME. #+sb-xc-host (cold-fset ,name ,lambda) @@ -215,7 +221,7 @@ ;; where the compiled LAMBDA first appears. In ;; cross-compilation, we manipulate the ;; previously-statically-linked LAMBDA here. - #-sb-xc-host ,lambda + #-sb-xc-host ,named-lambda #+sb-xc-host (fdefinition ',name) ,doc))))) #-sb-xc-host diff --git a/src/code/early-extensions.lisp b/src/code/early-extensions.lisp index e2782a2..6ebac24 100644 --- a/src/code/early-extensions.lisp +++ b/src/code/early-extensions.lisp @@ -632,7 +632,7 @@ ;;; If COLD-FSET occurs not at top level, just treat it as an ordinary -;;; assignment. That way things like +;;; assignment instead of doing cold static linking. That way things like ;;; (FLET ((FROB (X) ..)) ;;; (DEFUN FOO (X Y) (FROB X) ..) ;;; (DEFUN BAR (Z) (AND (FROB X) ..))) @@ -645,7 +645,12 @@ "~@" name) - `(setf (fdefinition ',name) ,lambda)) + ;; We convert the LAMBDA expression to the corresponding NAMED-LAMBDA + ;; expression so that the compiler can use NAME in debug names etc. + (destructuring-bind (lambda-symbol &rest lambda-rest) lambda + (assert (eql lambda-symbol 'lambda)) ; else dunno how to do conversion + `(setf (fdefinition ',name) + (named-lambda ,name ,@lambda-rest)))) ;;;; ONCE-ONLY ;;;; diff --git a/src/compiler/alpha/call.lisp b/src/compiler/alpha/call.lisp index bb6a00a..ddd9281 100644 --- a/src/compiler/alpha/call.lisp +++ b/src/compiler/alpha/call.lisp @@ -533,7 +533,7 @@ default-value-8 (return-pc :target return-pc-temp) (vals :more t)) (:temporary (:sc any-reg :from (:argument 0)) ocfp-temp) - (:temporary (:sc descriptor-reg any-reg :from (:argument 1)) + (:temporary (:sc any-reg :from (:argument 1)) return-pc-temp) (:temporary (:scs (interior-reg)) lip) (:move-args :known-return) diff --git a/src/compiler/alpha/macros.lisp b/src/compiler/alpha/macros.lisp index 9d0128c..958e05a 100644 --- a/src/compiler/alpha/macros.lisp +++ b/src/compiler/alpha/macros.lisp @@ -167,7 +167,7 @@ ;;; Temp-TN is a non- descriptor temp (which may be randomly used by ;;; the body.) The body is placed inside the PSEUDO-ATOMIC, and ;;; presumably initializes the object. -(defmacro with-fixed-allocation ((result-tn temp-tn widetagsize) +(defmacro with-fixed-allocation ((result-tn temp-tn widetag size) &body body) `(pseudo-atomic (:extra (pad-data-block ,size)) (inst bis alloc-tn other-pointer-lowtag ,result-tn) diff --git a/src/compiler/generic/objdef.lisp b/src/compiler/generic/objdef.lisp index 50b7a53..786c9d4 100644 --- a/src/compiler/generic/objdef.lisp +++ b/src/compiler/generic/objdef.lisp @@ -26,6 +26,9 @@ ;;;; SIMPLE-FUN-DEBUG-INFO slot holding a tagged object which needs ;;;; to be GCed, you need to tweak scav_code_header() and ;;;; verify_space() in gencgc.c, and the corresponding code in gc.c. +;;;; * The src/runtime/print.c code (used by LDB) is implemented +;;;; using hand-written lists of slot names, which aren't automatically +;;;; generated from the code in this file. ;;;; * Various code (e.g. STATIC-FSET in genesis.lisp) is hard-wired ;;;; to know the name of the last slot of the object the code works ;;;; with, and implicitly to know that the last slot is special (being diff --git a/src/runtime/alpha-assem.S b/src/runtime/alpha-assem.S index 5153c92..3fd27e6 100644 --- a/src/runtime/alpha-assem.S +++ b/src/runtime/alpha-assem.S @@ -278,7 +278,7 @@ closure_tramp = /* ### */ 0x150 + call_into_lisp_LRA_page closure_tramp_offset: ldl reg_LEXENV, FDEFN_FUN_OFFSET(reg_FDEFN) ldl reg_L0, CLOSURE_FUN_OFFSET(reg_LEXENV) - addl reg_L0, FUN_CODE_OFFSET, reg_LIP + addl reg_L0, SIMPLE_FUN_CODE_OFFSET, reg_LIP jmp reg_ZERO,(reg_LIP) .end closure_tramp diff --git a/src/runtime/monitor.c b/src/runtime/monitor.c index 23f87d2..4037c92 100644 --- a/src/runtime/monitor.c +++ b/src/runtime/monitor.c @@ -30,6 +30,9 @@ #include "gc.h" #include "search.h" #include "purify.h" +#include "globals.h" +#include "lispregs.h" +#include "interrupt.h" /* When we need to do command input, we use this stream, which is not * in general stdin, so that things will "work" (as well as being diff --git a/src/runtime/print.c b/src/runtime/print.c index d39586d..8534cbb 100644 --- a/src/runtime/print.c +++ b/src/runtime/print.c @@ -22,6 +22,7 @@ #include "print.h" #include "runtime.h" +#include "sbcl.h" /* This file can be skipped if we're not supporting LDB. */ #if defined(LISP_FEATURE_SB_LDB) @@ -247,8 +248,8 @@ static void brief_otherimm(lispobj obj) default: idx = type >> 2; - if (idx < (sizeof(SUBNAMES_WIDETAG) / sizeof(char *))) - printf("%s", SUBNAMES_WIDETAG[idx]); + if (idx < (sizeof(lowtag_Names) / sizeof(char *))) + printf("%s", lowtag_Names[idx]); else printf("unknown type (0x%0x)", type); break; @@ -262,8 +263,8 @@ static void print_otherimm(lispobj obj) type = widetag_of(obj); idx = type >> 2; - if (idx < (sizeof(SUBNAMES_WIDETAG) / sizeof(char *))) - printf(", %s", SUBNAMES_WIDETAG[idx]); + if (idx < (sizeof(lowtag_Names) / sizeof(char *))) + printf(", %s", lowtag_Names[idx]); else printf(", unknown type (0x%0x)", type); @@ -407,8 +408,9 @@ static void print_slots(char **slots, int count, lispobj *ptr) } } -/* FIXME: Yikes again! This, like SUBNAMES_WIDETAG[], needs to depend - * on the values in sbcl.h. */ +/* FIXME: Yikes again! This, like subtype_Names[], needs to depend + * on the values in sbcl.h (or perhaps be generated automatically + * by GENESIS as part of sbcl.h). */ static char *symbol_slots[] = {"value: ", "unused: ", "plist: ", "name: ", "package: ", NULL}; static char *ratio_slots[] = {"numer: ", "denom: ", NULL}; diff --git a/version.lisp-expr b/version.lisp-expr index 7a487d5..9f803cf 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.pre7.108" +"0.pre7.109"