0.pre7.109:
authorWilliam Harold Newman <william.newman@airmail.net>
Mon, 31 Dec 2001 02:01:16 +0000 (02:01 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Mon, 31 Dec 2001 02:01:16 +0000 (02:01 +0000)
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)

13 files changed:
BUGS
TODO
base-target-features.lisp-expr
package-data-list.lisp-expr
src/code/defboot.lisp
src/code/early-extensions.lisp
src/compiler/alpha/call.lisp
src/compiler/alpha/macros.lisp
src/compiler/generic/objdef.lisp
src/runtime/alpha-assem.S
src/runtime/monitor.c
src/runtime/print.c
version.lisp-expr

diff --git a/BUGS b/BUGS
index 9bec3d3..6146de2 100644 (file)
--- 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 (file)
--- 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
index 7bed4b7..671f0fb 100644 (file)
 
  ;; 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
index 6ffb768..2f19617 100644 (file)
@@ -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"
index c0f5127..fef50bf 100644 (file)
   (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))
 
         ;; 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)
 
                 ;; 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
index e2782a2..6ebac24 100644 (file)
 
 
 ;;; 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) ..)))
    "~@<COLD-FSET ~S not cross-compiled at top level: demoting to ~
 (SETF FDEFINITION)~:@>"
    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))))
 \f
 ;;;; ONCE-ONLY
 ;;;;
index bb6a00a..ddd9281 100644 (file)
@@ -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)
index 9d0128c..958e05a 100644 (file)
 ;;; 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)
index 50b7a53..786c9d4 100644 (file)
@@ -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
index 5153c92..3fd27e6 100644 (file)
@@ -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
 
index 23f87d2..4037c92 100644 (file)
@@ -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
index d39586d..8534cbb 100644 (file)
@@ -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};
index 7a487d5..9f803cf 100644 (file)
@@ -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"