0.8.9.52:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 19 Apr 2004 13:46:27 +0000 (13:46 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 19 Apr 2004 13:46:27 +0000 (13:46 +0000)
Fixes fixes fixes
... restore build on linux/unithread;
... workaround apparent OpenMCL bug in the reader (#1#-related)
... fix for (funcall #'cddr ...)

src/compiler/generic/vm-tran.lisp
src/compiler/srctran.lisp
src/runtime/thread.c
tests/compiler.pure.lisp
version.lisp-expr

index 178f6b4..d843d1c 100644 (file)
 (define-good-modular-fun logior)
 ;;; FIXME: XOR? ANDC1, ANDC2?  -- CSR, 2003-09-16
 
-#!-alpha
-(progn
-  (defknown #1=sb!vm::ash-left-mod32 (integer (integer 0)) (unsigned-byte 32)
-            (foldable flushable movable))
-  (define-modular-fun-optimizer ash ((integer count) :width width)
-    (when (and (<= width 32)
-               (constant-lvar-p count)  ; ?
-               (plusp (lvar-value count)))
-      (cut-to-width integer width)
-      '#1#))
-  (setf (gethash '#1# *modular-versions*) '(ash 32)))
-#!+alpha
-(progn
-  (defknown #1=sb!vm::ash-left-mod64 (integer (integer 0)) (unsigned-byte 64)
-            (foldable flushable movable))
-  (define-modular-fun-optimizer ash ((integer count) :width width)
-    (when (and (<= width 64)
-               (constant-lvar-p count)  ; ?
-               (plusp (lvar-value count)))
-      (cut-to-width integer width)
-      '#1#))
-  (setf (gethash '#1# *modular-versions*) '(ash 64)))
-
+(macrolet
+    ((def (name width)
+        `(progn
+           (defknown ,name (integer (integer 0)) (unsigned-byte ,width)
+                     (foldable flushable movable))
+           (define-modular-fun-optimizer ash ((integer count) :width width)
+             (when (and (<= width 32)
+                        (constant-lvar-p count) ;?
+                        (plusp (lvar-value count)))
+               (cut-to-width integer width)
+               ',name))
+           (setf (gethash ',name *modular-versions*) `(ash ,',width)))))
+  #!-alpha (def sb!vm::ash-left-mod32 32)
+  #!+alpha (def sb!vm::ash-left-mod64 64))
 \f
 ;;; There are two different ways the multiplier can be recoded. The
 ;;; more obvious is to shift X by the correct amount for each bit set
index 83fcba2..46cbfa8 100644 (file)
 (defun source-transform-cxr (form)
   (if (/= (length form) 2)
       (values nil t)
-      (let ((name (symbol-name (car form))))
-       (do ((i (- (length name) 2) (1- i))
+      (let* ((name (car form))
+            (string (symbol-name
+                     (etypecase name
+                       (symbol name)
+                       (leaf (leaf-source-name name))))))
+       (do ((i (- (length string) 2) (1- i))
             (res (cadr form)
-                 `(,(ecase (char name i)
+                 `(,(ecase (char string i)
                       (#\A 'car)
                       (#\D 'cdr))
                    ,res)))
index e099012..42a8b07 100644 (file)
@@ -215,7 +215,7 @@ void create_initial_thread(lispobj initial_function) {
     } else lose("can't create initial thread");
 }
 
-#ifdef LISP_FEATURE_LINUX
+#ifdef LISP_FEATURE_SB_THREAD
 pid_t create_thread(lispobj initial_function) {
     struct thread *th=create_thread_struct(initial_function);
     pid_t kid_pid=clone(new_thread_trampoline,
index 09457e9..4413058 100644 (file)
                   (declare (notinline identity))
                   (1+ (identity x))))
   (compiler-note () (error "IDENTITY derive-type not applied.")))
+
+(assert (null (funcall (compile nil '(lambda (x) (funcall #'cddr x))) nil)))
index 184de63..609be37 100644 (file)
@@ -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.9.51"
+"0.8.9.52"