guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, master, updated. v2.1.0-179-gbc61280


From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, master, updated. v2.1.0-179-gbc61280
Date: Thu, 08 Mar 2012 14:25:55 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=bc612809929b85fdcb39bc17a15a53c88b43a8bd

The branch, master has been updated
       via  bc612809929b85fdcb39bc17a15a53c88b43a8bd (commit)
       via  f740445a9b5bf0a5e5090f0a2ddaffb2b803bab7 (commit)
       via  75ba64d6797f5857cc9885eb753126119a8c8b68 (commit)
       via  7b327550e20967b0a8f89182bcf9a04543db3a0f (commit)
       via  c46fee438cf9f4a3449e8d04e7a54805517fd092 (commit)
       via  42d691ee16c7f6fd102d93f9e76d436f14198f2c (commit)
       via  46163e52e5513cf882dafe2bbd05ffbd2b03a755 (commit)
       via  be79627c21ba0848af3ac7bea25293170fec6480 (commit)
       via  da35d2eaa9dbc1d3cf098c9a1c9bc62dcb2515bd (commit)
       via  3658a3744bcc7c75db24143db1dae1bd13554515 (commit)
       via  1fa0fde4955e39891142eb5d09bb195b37409937 (commit)
       via  1a4d765381904a3b8afeec1a6d0f746626a49967 (commit)
       via  07bc8e7c339fb43664e17a6e016702bc13760a14 (commit)
       via  3fafc52afbfc9ef398946a7ec4d96d01adc02aa1 (commit)
       via  1948b38d8818d2154f4f9292adfc53537a843126 (commit)
      from  c336514976ed3f2b2b20c56149ede7f5ec549c52 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit bc612809929b85fdcb39bc17a15a53c88b43a8bd
Merge: c336514 f740445
Author: Andy Wingo <address@hidden>
Date:   Thu Mar 8 13:22:09 2012 +0100

    Merge remote-tracking branch 'local-2.0/stable-2.0'
    
    Conflicts:
        configure.ac
        libguile/finalizers.c
        libguile/finalizers.h
        libguile/gc.c
        libguile/gc.h
        libguile/inline.c
        libguile/inline.h
        libguile/ports.c
        libguile/smob.c
        libguile/smob.h
        module/ice-9/deprecated.scm
        module/ice-9/r4rs.scm

-----------------------------------------------------------------------

Summary of changes:
 benchmark-suite/benchmarks/ports.bm |   84 +++++++++++----------
 configure.ac                        |    2 +-
 doc/ref/api-data.texi               |   10 ---
 libguile/finalizers.c               |   23 +++++--
 libguile/gc.c                       |    2 +
 libguile/init.c                     |    4 +-
 libguile/strings.c                  |    2 +-
 libguile/threads.c                  |    3 +
 libguile/vports.c                   |   20 ++----
 module/ice-9/psyntax-pp.scm         |  137 -----------------------------------
 module/ice-9/psyntax.scm            |   22 +++---
 11 files changed, 87 insertions(+), 222 deletions(-)

diff --git a/benchmark-suite/benchmarks/ports.bm 
b/benchmark-suite/benchmarks/ports.bm
index 166cfa5..630ece2 100644
--- a/benchmark-suite/benchmarks/ports.bm
+++ b/benchmark-suite/benchmarks/ports.bm
@@ -1,6 +1,6 @@
 ;;; ports.bm --- Port I/O.         -*- mode: scheme; coding: utf-8; -*-
 ;;;
-;;; Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+;;; Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
 ;;;
 ;;; This program is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public License
@@ -21,68 +21,72 @@
   #:use-module (ice-9 rdelim)
   #:use-module (benchmark-suite lib))
 
+(define-syntax sequence
+  (lambda (s)
+    ;; Create a sequence `(begin EXPR ...)' with COUNT occurrences of EXPR.
+    (syntax-case s ()
+      ((_ expr count)
+       (number? (syntax->datum #'count))
+       (cons #'begin
+             (make-list (syntax->datum #'count) #'expr))))))
+
+(define (large-string s)
+  (string-concatenate (make-list (* iteration-factor 10000) s)))
+
 (define %latin1-port
   (with-fluids ((%default-port-encoding #f))
-    (open-input-string "hello, world")))
+    (open-input-string (large-string "hello, world"))))
 
 (define %utf8/ascii-port
   (with-fluids ((%default-port-encoding "UTF-8"))
-    (open-input-string "hello, world")))
+    (open-input-string (large-string "hello, world"))))
 
 (define %utf8/wide-port
   (with-fluids ((%default-port-encoding "UTF-8"))
-    (open-input-string "안녕하세요")))
+    (open-input-string (large-string "안녕하세요"))))
 
 
 (with-benchmark-prefix "peek-char"
 
-  (benchmark "latin-1 port" 700000
-    (peek-char %latin1-port))
+  (benchmark "latin-1 port" 700
+    (sequence (peek-char %latin1-port) 1000))
 
-  (benchmark "utf-8 port, ascii character" 700000
-    (peek-char %utf8/ascii-port))
+  (benchmark "utf-8 port, ascii character" 700
+    (sequence (peek-char %utf8/ascii-port) 1000))
 
-  (benchmark "utf-8 port, Korean character" 700000
-    (peek-char %utf8/wide-port)))
+  (benchmark "utf-8 port, Korean character" 700
+    (sequence (peek-char %utf8/wide-port) 1000)))
 
-(with-benchmark-prefix "read-char"
+(with-benchmark-prefix "char-ready?"
 
-  (benchmark "latin-1 port" 10000000
-    (read-char %latin1-port))
+  (benchmark "latin-1 port" 10000
+    (sequence (char-ready? %latin1-port) 1000))
 
-  (benchmark "utf-8 port, ascii character" 10000000
-    (read-char %utf8/ascii-port))
+  (benchmark "utf-8 port, ascii character" 10000
+    (sequence (char-ready? %utf8/ascii-port) 1000))
 
-  (benchmark "utf-8 port, Korean character" 10000000
-    (read-char %utf8/wide-port)))
+  (benchmark "utf-8 port, Korean character" 10000
+    (sequence (char-ready? %utf8/wide-port) 1000)))
 
-(with-benchmark-prefix "char-ready?"
+;; Keep the `read-char' benchmarks last as they consume input from the
+;; ports.
+
+(with-benchmark-prefix "read-char"
 
-  (benchmark "latin-1 port" 10000000
-    (char-ready? %latin1-port))
+  (benchmark "latin-1 port" 10000
+    (sequence (read-char %latin1-port) 1000))
 
-  (benchmark "utf-8 port, ascii character" 10000000
-    (char-ready? %utf8/ascii-port))
+  (benchmark "utf-8 port, ascii character" 10000
+    (sequence (read-char %utf8/ascii-port) 1000))
 
-  (benchmark "utf-8 port, Korean character" 10000000
-    (char-ready? %utf8/wide-port)))
+  (benchmark "utf-8 port, Korean character" 10000
+    (sequence (read-char %utf8/wide-port) 1000)))
 
 
 (with-benchmark-prefix "rdelim"
 
-  (let-syntax ((sequence (lambda (s)
-                           ;; Create a sequence `(begin EXPR ...)' with
-                           ;; COUNT occurrences of EXPR.
-                           (syntax-case s ()
-                             ((_ expr count)
-                              (number? (syntax->datum #'count))
-                              (cons #'begin
-                                    (make-list
-                                     (syntax->datum #'count)
-                                     #'expr)))))))
-    (let ((str (string-concatenate
-                (make-list 1000 "one line\n"))))
-      (benchmark "read-line" 1000
-        (let ((port (with-fluids ((%default-port-encoding "UTF-8"))
-                      (open-input-string str))))
-          (sequence (read-line port) 1000))))))
+  (let ((str (string-concatenate (make-list 1000 "one line\n"))))
+    (benchmark "read-line" 1000
+               (let ((port (with-fluids ((%default-port-encoding "UTF-8"))
+                             (open-input-string str))))
+                 (sequence (read-line port) 1000)))))
diff --git a/configure.ac b/configure.ac
index 3a5fd0e..f79c671 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1232,7 +1232,7 @@ save_LIBS="$LIBS"
 LIBS="$BDW_GC_LIBS $LIBS"
 CFLAGS="$BDW_GC_CFLAGS $CFLAGS"
 
-AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit 
GC_pthread_cancel GC_allow_register_threads GC_pthread_sigmask 
GC_set_start_callback GC_get_suspend_signal GC_move_disappearing_link 
GC_get_heap_usage_safe GC_get_free_space_divisor GC_gcollect_and_unmap 
GC_get_unmapped_bytes])
+AC_CHECK_FUNCS([GC_do_blocking GC_call_with_gc_active GC_pthread_exit 
GC_pthread_cancel GC_allow_register_threads GC_pthread_sigmask 
GC_set_start_callback GC_get_suspend_signal GC_move_disappearing_link 
GC_get_heap_usage_safe GC_get_free_space_divisor GC_gcollect_and_unmap 
GC_get_unmapped_bytes GC_set_finalizer_notifier])
 
 # Though the `GC_do_blocking ()' symbol is present in GC 7.1, it is not
 # declared, and has a different type (returning void instead of
diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index 4fc11c8..39c9790 100644
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -3405,7 +3405,6 @@ i18n)} module}, for locale-dependent string comparison.
 
 @rnindex string=?
 @deffn {Scheme Procedure} string=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_equal_p (s1, s2, rest)
 Lexicographic equality predicate; return @code{#t} if all strings are
 the same length and contain the same characters in the same positions,
 otherwise return @code{#f}.
@@ -3418,7 +3417,6 @@ characters.
 
 @rnindex string<?
 @deffn {Scheme Procedure} string<? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_less_p (s1, s2, rest)
 Lexicographic ordering predicate; return @code{#t} if, for every pair of
 consecutive string arguments @var{str_i} and @var{str_i+1}, @var{str_i} is
 lexicographically less than @var{str_i+1}.
@@ -3426,7 +3424,6 @@ lexicographically less than @var{str_i+1}.
 
 @rnindex string<=?
 @deffn {Scheme Procedure} string<=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_leq_p (s1, s2, rest)
 Lexicographic ordering predicate; return @code{#t} if, for every pair of
 consecutive string arguments @var{str_i} and @var{str_i+1}, @var{str_i} is
 lexicographically less than or equal to @var{str_i+1}.
@@ -3434,7 +3431,6 @@ lexicographically less than or equal to @var{str_i+1}.
 
 @rnindex string>?
 @deffn {Scheme Procedure} string>? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_gr_p (s1, s2, rest)
 Lexicographic ordering predicate; return @code{#t} if, for every pair of
 consecutive string arguments @var{str_i} and @var{str_i+1}, @var{str_i} is
 lexicographically greater than @var{str_i+1}.
@@ -3442,7 +3438,6 @@ lexicographically greater than @var{str_i+1}.
 
 @rnindex string>=?
 @deffn {Scheme Procedure} string>=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_geq_p (s1, s2, rest)
 Lexicographic ordering predicate; return @code{#t} if, for every pair of
 consecutive string arguments @var{str_i} and @var{str_i+1}, @var{str_i} is
 lexicographically greater than or equal to @var{str_i+1}.
@@ -3450,7 +3445,6 @@ lexicographically greater than or equal to @var{str_i+1}.
 
 @rnindex string-ci=?
 @deffn {Scheme Procedure} string-ci=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_ci_equal_p (s1, s2, rest)
 Case-insensitive string equality predicate; return @code{#t} if
 all strings are the same length and their component
 characters match (ignoring case) at each position; otherwise
@@ -3459,7 +3453,6 @@ return @code{#f}.
 
 @rnindex string-ci<?
 @deffn {Scheme Procedure} string-ci<? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_ci_less_p (s1, s2, rest)
 Case insensitive lexicographic ordering predicate; return @code{#t} if,
 for every pair of consecutive string arguments @var{str_i} and
 @var{str_i+1}, @var{str_i} is lexicographically less than @var{str_i+1}
@@ -3468,7 +3461,6 @@ regardless of case.
 
 @rnindex string<=?
 @deffn {Scheme Procedure} string-ci<=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_ci_leq_p (s1, s2, rest)
 Case insensitive lexicographic ordering predicate; return @code{#t} if,
 for every pair of consecutive string arguments @var{str_i} and
 @var{str_i+1}, @var{str_i} is lexicographically less than or equal to
@@ -3477,7 +3469,6 @@ for every pair of consecutive string arguments 
@var{str_i} and
 
 @rnindex string-ci>?
 @deffn {Scheme Procedure} string-ci>? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_ci_gr_p (s1, s2, rest)
 Case insensitive lexicographic ordering predicate; return @code{#t} if,
 for every pair of consecutive string arguments @var{str_i} and
 @var{str_i+1}, @var{str_i} is lexicographically greater than
@@ -3486,7 +3477,6 @@ for every pair of consecutive string arguments 
@var{str_i} and
 
 @rnindex string-ci>=?
 @deffn {Scheme Procedure} string-ci>=? s1 s2 s3 @dots{}
address@hidden {C Function} scm_i_string_ci_geq_p (s1, s2, rest)
 Case insensitive lexicographic ordering predicate; return @code{#t} if,
 for every pair of consecutive string arguments @var{str_i} and
 @var{str_i+1}, @var{str_i} is lexicographically greater than or equal to
diff --git a/libguile/finalizers.c b/libguile/finalizers.c
index 07d8f07..25aadf4 100644
--- a/libguile/finalizers.c
+++ b/libguile/finalizers.c
@@ -43,6 +43,17 @@ static size_t finalization_count;
 
 
 
+#ifndef HAVE_GC_SET_FINALIZER_NOTIFIER
+static void
+GC_set_finalizer_notifier (void (*notifier) (void))
+{
+  GC_finalizer_notifier = notifier;
+}
+#endif
+
+
+
+
 void
 scm_i_set_finalizer (void *obj, scm_t_finalizer_proc proc, void *data)
 {
@@ -142,10 +153,9 @@ run_finalizers_async_thunk (void)
 }
 
 
-/* The function queue_after_gc_hook is run by the scm_before_gc_c_hook
- * at the end of the garbage collection.  The only purpose of this
- * function is to mark the after_gc_async (which will eventually lead to
- * the execution of the after_gc_async_thunk).
+/* The function queue_finalizer_async is run by the GC when there are
+ * objects to finalize.  It will enqueue an asynchronous call to
+ * GC_invoke_finalizers() at the next SCM_TICK in this thread.
  */
 static void
 queue_finalizer_async (void)
@@ -154,7 +164,10 @@ queue_finalizer_async (void)
   static scm_i_pthread_mutex_t lock = SCM_I_PTHREAD_MUTEX_INITIALIZER;
 
   scm_i_pthread_mutex_lock (&lock);
-  if (scm_is_false (SCM_CDR (finalizer_async_cell)))
+  /* If t is NULL, that could be because we're allocating in
+     threads.c:guilify_self_1.  In that case, rely on the
+     GC_invoke_finalizers call there after the thread spins up.  */
+  if (t && scm_is_false (SCM_CDR (finalizer_async_cell)))
     {
       SCM_SETCDR (finalizer_async_cell, t->active_asyncs);
       t->active_asyncs = finalizer_async_cell;
diff --git a/libguile/gc.c b/libguile/gc.c
index b33fb0c..df93d32 100644
--- a/libguile/gc.c
+++ b/libguile/gc.c
@@ -384,6 +384,8 @@ SCM_DEFINE (scm_gc, "gc", 0, 0, 0,
 #define FUNC_NAME s_scm_gc
 {
   scm_i_gc ("call");
+  /* If you're calling scm_gc(), you probably want synchronous
+     finalization.  */
   GC_invoke_finalizers ();
   return SCM_UNSPECIFIED;
 }
diff --git a/libguile/init.c b/libguile/init.c
index 90b01ee..684f6eb 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -444,7 +444,8 @@ scm_i_init_guile (void *base)
   scm_init_ioext ();
   scm_init_keywords ();    /* Requires smob_prehistory */
   scm_init_list ();
-  scm_init_macros ();      /* Requires smob_prehistory */
+  scm_init_random ();      /* Requires smob_prehistory */
+  scm_init_macros ();      /* Requires smob_prehistory and random */
   scm_init_mallocs ();     /* Requires smob_prehistory */
   scm_init_modules ();     /* Requires smob_prehistory */
   scm_init_numbers ();
@@ -502,7 +503,6 @@ scm_i_init_guile (void *base)
   scm_init_eval_in_scheme ();
   scm_init_evalext ();
   scm_init_debug ();   /* Requires macro smobs */
-  scm_init_random ();   /* Requires smob_prehistory */
   scm_init_simpos ();
 #if HAVE_MODULES
   scm_init_dynamic_linking (); /* Requires smob_prehistory */
diff --git a/libguile/strings.c b/libguile/strings.c
index 9617057..c84c830 100644
--- a/libguile/strings.c
+++ b/libguile/strings.c
@@ -748,7 +748,7 @@ scm_i_make_symbol (SCM name, scm_t_bits flags,
       name = SH_STRING_STRING (name);
       start += STRING_START (name);
     }
-  buf = SYMBOL_STRINGBUF (name);
+  buf = STRING_STRINGBUF (name);
 
   if (start == 0 && length == STRINGBUF_LENGTH (buf))
     {
diff --git a/libguile/threads.c b/libguile/threads.c
index f9104f9..8e72eaf 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -625,6 +625,9 @@ guilify_self_2 (SCM parent)
 
   t->join_queue = make_queue ();
   t->block_asyncs = 0;
+
+  /* See note in finalizers.c:queue_finalizer_async().  */
+  GC_invoke_finalizers ();
 }
 
 
diff --git a/libguile/vports.c b/libguile/vports.c
index 62f552a..4ff13f2 100644
--- a/libguile/vports.c
+++ b/libguile/vports.c
@@ -56,21 +56,11 @@ sf_flush (SCM port)
   scm_t_port *pt = SCM_PTAB_ENTRY (port);
   SCM stream = SCM_PACK (pt->stream);
 
-  if (pt->write_pos > pt->write_buf)
-    {
-      /* write the byte. */
-      scm_call_1 (SCM_SIMPLE_VECTOR_REF (stream, 0),
-                 SCM_MAKE_CHAR (*pt->write_buf));
-      pt->write_pos = pt->write_buf;
-  
-      /* flush the output.  */
-      {
-       SCM f = SCM_SIMPLE_VECTOR_REF (stream, 2);
+  SCM f = SCM_SIMPLE_VECTOR_REF (stream, 2);
+
+  if (scm_is_true (f))
+    scm_call_0 (f);
 
-       if (scm_is_true (f))
-         scm_call_0 (f);
-      }
-    }
 }
 
 static void
diff --git a/module/ice-9/psyntax-pp.scm b/module/ice-9/psyntax-pp.scm
index f82a14c..d1ad7fe 100644
--- a/module/ice-9/psyntax-pp.scm
+++ b/module/ice-9/psyntax-pp.scm
@@ -2682,83 +2682,6 @@
               "source expression failed to match any pattern"
               tmp-1)))))))
 
-(define do
-  (make-syntax-transformer
-    'do
-    'macro
-    (lambda (orig-x)
-      (let ((tmp-1 orig-x))
-        (let ((tmp ($sc-dispatch
-                     tmp-1
-                     '(_ #(each (any any . any)) (any . each-any) . 
each-any))))
-          (if tmp
-            (apply (lambda (var init step e0 e1 c)
-                     (let ((tmp-1 (map (lambda (v s)
-                                         (let ((tmp-1 s))
-                                           (let ((tmp ($sc-dispatch tmp-1 
'())))
-                                             (if tmp
-                                               (apply (lambda () v) tmp)
-                                               (let ((tmp ($sc-dispatch tmp-1 
'(any))))
-                                                 (if tmp
-                                                   (apply (lambda (e) e) tmp)
-                                                   (syntax-violation 'do "bad 
step expression" orig-x s)))))))
-                                       var
-                                       step)))
-                       (let ((tmp ($sc-dispatch tmp-1 'each-any)))
-                         (if tmp
-                           (apply (lambda (step)
-                                    (let ((tmp e1))
-                                      (let ((tmp-1 ($sc-dispatch tmp '())))
-                                        (if tmp-1
-                                          (apply (lambda ()
-                                                   (list '#(syntax-object let 
((top)) (hygiene guile))
-                                                         '#(syntax-object 
doloop ((top)) (hygiene guile))
-                                                         (map list var init)
-                                                         (list 
'#(syntax-object if ((top)) (hygiene guile))
-                                                               (list 
'#(syntax-object not ((top)) (hygiene guile)) e0)
-                                                               (cons 
'#(syntax-object begin ((top)) (hygiene guile))
-                                                                     (append
-                                                                       c
-                                                                       (list 
(cons '#(syntax-object
-                                                                               
       doloop
-                                                                               
       ((top))
-                                                                               
       (hygiene guile))
-                                                                               
    step)))))))
-                                                 tmp-1)
-                                          (let ((tmp-1 ($sc-dispatch tmp '(any 
. each-any))))
-                                            (if tmp-1
-                                              (apply (lambda (e1 e2)
-                                                       (list '#(syntax-object 
let ((top)) (hygiene guile))
-                                                             '#(syntax-object 
doloop ((top)) (hygiene guile))
-                                                             (map list var 
init)
-                                                             (list 
'#(syntax-object if ((top)) (hygiene guile))
-                                                                   e0
-                                                                   (cons 
'#(syntax-object begin ((top)) (hygiene guile))
-                                                                         (cons 
e1 e2))
-                                                                   (cons 
'#(syntax-object begin ((top)) (hygiene guile))
-                                                                         
(append
-                                                                           c
-                                                                           
(list (cons '#(syntax-object
-                                                                               
           doloop
-                                                                               
           ((top))
-                                                                               
           (hygiene guile))
-                                                                               
        step)))))))
-                                                     tmp-1)
-                                              (syntax-violation
-                                                #f
-                                                "source expression failed to 
match any pattern"
-                                                tmp)))))))
-                                  tmp)
-                           (syntax-violation
-                             #f
-                             "source expression failed to match any pattern"
-                             tmp-1)))))
-                   tmp)
-            (syntax-violation
-              #f
-              "source expression failed to match any pattern"
-              tmp-1)))))))
-
 (define quasiquote
   (make-syntax-transformer
     'quasiquote
@@ -3163,66 +3086,6 @@
         "expression not valid outside of quasiquote"
         x))))
 
-(define case
-  (make-syntax-transformer
-    'case
-    'macro
-    (lambda (x)
-      (let ((tmp-1 x))
-        (let ((tmp ($sc-dispatch tmp-1 '(_ any any . each-any))))
-          (if tmp
-            (apply (lambda (e m1 m2)
-                     (let ((tmp (let f ((clause m1) (clauses m2))
-                                  (if (null? clauses)
-                                    (let ((tmp-1 clause))
-                                      (let ((tmp ($sc-dispatch
-                                                   tmp-1
-                                                   '(#(free-id #(syntax-object 
else ((top)) (hygiene guile)))
-                                                     any
-                                                     .
-                                                     each-any))))
-                                        (if tmp
-                                          (apply (lambda (e1 e2)
-                                                   (cons '#(syntax-object 
begin ((top)) (hygiene guile)) (cons e1 e2)))
-                                                 tmp)
-                                          (let ((tmp ($sc-dispatch tmp-1 
'(each-any any . each-any))))
-                                            (if tmp
-                                              (apply (lambda (k e1 e2)
-                                                       (list '#(syntax-object 
if ((top)) (hygiene guile))
-                                                             (list 
'#(syntax-object memv ((top)) (hygiene guile))
-                                                                   
'#(syntax-object t ((top)) (hygiene guile))
-                                                                   (list 
'#(syntax-object quote ((top)) (hygiene guile))
-                                                                         k))
-                                                             (cons 
'#(syntax-object begin ((top)) (hygiene guile))
-                                                                   (cons e1 
e2))))
-                                                     tmp)
-                                              (syntax-violation 'case "bad 
clause" x clause))))))
-                                    (let ((tmp (f (car clauses) (cdr 
clauses))))
-                                      (let ((rest tmp))
-                                        (let ((tmp clause))
-                                          (let ((tmp ($sc-dispatch tmp 
'(each-any any . each-any))))
-                                            (if tmp
-                                              (apply (lambda (k e1 e2)
-                                                       (list '#(syntax-object 
if ((top)) (hygiene guile))
-                                                             (list 
'#(syntax-object memv ((top)) (hygiene guile))
-                                                                   
'#(syntax-object t ((top)) (hygiene guile))
-                                                                   (list 
'#(syntax-object quote ((top)) (hygiene guile))
-                                                                         k))
-                                                             (cons 
'#(syntax-object begin ((top)) (hygiene guile))
-                                                                   (cons e1 
e2))
-                                                             rest))
-                                                     tmp)
-                                              (syntax-violation 'case "bad 
clause" x clause))))))))))
-                       (let ((body tmp))
-                         (list '#(syntax-object let ((top)) (hygiene guile))
-                               (list (list '#(syntax-object t ((top)) (hygiene 
guile)) e))
-                               body))))
-                   tmp)
-            (syntax-violation
-              #f
-              "source expression failed to match any pattern"
-              tmp-1)))))))
-
 (define make-variable-transformer
   (lambda (proc)
     (if (procedure? proc)
diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm
index 760f825..2cc6386 100644
--- a/module/ice-9/psyntax.scm
+++ b/module/ice-9/psyntax.scm
@@ -608,22 +608,15 @@
 
     ;; syntax object wraps
 
-    ;;         <wrap> ::= ((<mark> ...) . (<subst> ...))
-    ;;        <subst> ::= <shift> | <subs>
-    ;;         <subs> ::= #(<old name> <label> (<mark> ...))
-    ;;        <shift> ::= positive fixnum
+    ;;      <wrap> ::= ((<mark> ...) . (<subst> ...))
+    ;;     <subst> ::= shift | <subs>
+    ;;      <subs> ::= #(ribcage #(<sym> ...) #(<mark> ...) #(<label> ...))
+    ;;                 | #(ribcage (<sym> ...) (<mark> ...) (<label> ...))
 
     (define-syntax make-wrap (identifier-syntax cons))
     (define-syntax wrap-marks (identifier-syntax car))
     (define-syntax wrap-subst (identifier-syntax cdr))
 
-    (define-syntax subst-rename? (identifier-syntax vector?))
-    (define-syntax-rule (rename-old x) (vector-ref x 0))
-    (define-syntax-rule (rename-new x) (vector-ref x 1))
-    (define-syntax-rule (rename-marks x) (vector-ref x 2))
-    (define-syntax-rule (make-rename old new marks)
-      (vector old new marks))
-
     ;; labels must be comparable with "eq?", have read-write invariance,
     ;; and distinct from symbols.
     (define (gen-label)
@@ -2903,6 +2896,9 @@
                            (binding (car bindings)))
                #'(let (binding) body))))))))
 
+;; This definition of 'do' is never used, as it is immediately
+;; replaced by the definition in boot-9.scm.
+#;
 (define-syntax do
    (lambda (orig-x)
       (syntax-case orig-x ()
@@ -3076,6 +3072,10 @@
                       "expression not valid outside of quasiquote"
                       x)))
 
+;; This definition of 'case' is never used, as it is immediately
+;; replaced by the definition in boot-9.scm.  This version lacks
+;; R7RS-mandated support for '=>'.
+#;
 (define-syntax case
   (lambda (x)
     (syntax-case x ()


hooks/post-receive
-- 
GNU Guile



reply via email to

[Prev in Thread] Current Thread [Next in Thread]