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-371-g0aed71a


From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, master, updated. v2.1.0-371-g0aed71a
Date: Tue, 31 Jan 2012 21:58:32 +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=0aed71aa51e89e714de2392c2a5f44694dca77ea

The branch, master has been updated
       via  0aed71aa51e89e714de2392c2a5f44694dca77ea (commit)
      from  3bf3d735ac743eda1f42627d165dfd86f1178126 (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 0aed71aa51e89e714de2392c2a5f44694dca77ea
Author: Andy Wingo <address@hidden>
Date:   Tue Jan 31 22:58:24 2012 +0100

    Revert "add SCM_HEAP_OBJECT_BASE"
    
    This reverts commit 47ed8656db8800f3ad20a40eb2c4e9ef3dc891e3.
    
    Conflicts:
    
        libguile/foreign.c

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

Summary of changes:
 libguile/bytevectors.c |    2 +-
 libguile/fluids.c      |    2 +-
 libguile/foreign.c     |    4 ++--
 libguile/gc.h          |   12 +++++-------
 libguile/guardians.c   |    2 --
 libguile/macros.c      |    2 +-
 libguile/numbers.h     |    6 +++---
 libguile/ports.c       |    3 +--
 libguile/smob.c        |    4 ++--
 libguile/struct.c      |    2 +-
 libguile/tags.h        |   11 -----------
 libguile/weak-set.c    |    4 ++--
 libguile/weak-table.c  |   16 ++++++++--------
 libguile/weak-vector.c |    2 +-
 14 files changed, 28 insertions(+), 44 deletions(-)

diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index 811e8d8..0cc32f2 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -333,7 +333,7 @@ scm_c_shrink_bytevector (SCM bv, size_t c_new_len)
   SCM_BYTEVECTOR_SET_LENGTH (bv, c_new_len);
 
   if (SCM_BYTEVECTOR_CONTIGUOUS_P (bv))
-    new_bv = SCM_PACK_POINTER (scm_gc_realloc (SCM_HEAP_OBJECT_BASE (bv),
+    new_bv = PTR2SCM (scm_gc_realloc (SCM2PTR (bv),
                                      c_len + SCM_BYTEVECTOR_HEADER_BYTES,
                                      c_new_len + SCM_BYTEVECTOR_HEADER_BYTES,
                                      SCM_GC_BYTEVECTOR));
diff --git a/libguile/fluids.c b/libguile/fluids.c
index 55910b0..282718e 100644
--- a/libguile/fluids.c
+++ b/libguile/fluids.c
@@ -160,7 +160,7 @@ new_fluid (SCM init)
   SCM_SET_CELL_WORD_0 (fluid, (scm_tc7_fluid | (n << 8)));
 
   GC_GENERAL_REGISTER_DISAPPEARING_LINK (&allocated_fluids[n],
-                                        SCM_HEAP_OBJECT_BASE (fluid));
+                                        SCM2PTR (fluid));
 
   scm_dynwind_end ();
 
diff --git a/libguile/foreign.c b/libguile/foreign.c
index 851cded..41c3e7e 100644
--- a/libguile/foreign.c
+++ b/libguile/foreign.c
@@ -152,7 +152,7 @@ scm_from_pointer (void *ptr, scm_t_pointer_finalizer 
finalizer)
          /* Register a finalizer for the newly created instance.  */
          GC_finalization_proc prev_finalizer;
          GC_PTR prev_finalizer_data;
-         GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (ret),
+         GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                          pointer_finalizer_trampoline,
                                          finalizer,
                                          &prev_finalizer,
@@ -316,7 +316,7 @@ SCM_DEFINE (scm_set_pointer_finalizer_x, 
"set-pointer-finalizer!", 2, 0, 0,
 
   c_finalizer = SCM_POINTER_VALUE (finalizer);
 
-  GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (pointer),
+  GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (pointer),
                                   pointer_finalizer_trampoline,
                                   c_finalizer,
                                   &prev_finalizer,
diff --git a/libguile/gc.h b/libguile/gc.h
index 30d0699..af00e1e 100644
--- a/libguile/gc.h
+++ b/libguile/gc.h
@@ -45,13 +45,12 @@ typedef struct scm_t_cell
  * in debug mode.  In particular these macros will even work for free cells,
  * which should never be encountered by user code.  */
 
-#define SCM_GC_CELL_OBJECT(x, n) (SCM_PACK (SCM_HEAP_OBJECT_BASE (x)[n]))
-#define SCM_GC_CELL_WORD(x, n)   (SCM_HEAP_OBJECT_BASE (x)[n])
+#define SCM_GC_CELL_OBJECT(x, n) (((SCM *)SCM2PTR (x)) [n])
+#define SCM_GC_CELL_WORD(x, n)   (SCM_UNPACK (SCM_GC_CELL_OBJECT ((x), (n))))
 
-#define SCM_GC_SET_CELL_OBJECT(x, n, v) \
-  (SCM_HEAP_OBJECT_BASE (x)[n] = SCM_UNPACK (v))
+#define SCM_GC_SET_CELL_OBJECT(x, n, v) ((((SCM *)SCM2PTR (x)) [n]) = (v))
 #define SCM_GC_SET_CELL_WORD(x, n, v)  \
-  (SCM_HEAP_OBJECT_BASE (x)[n] = (v))
+  (SCM_GC_SET_CELL_OBJECT ((x), (n), SCM_PACK (v)))
 
 #define SCM_GC_CELL_TYPE(x) (SCM_GC_CELL_OBJECT ((x), 0))
 
@@ -97,8 +96,7 @@ typedef struct scm_t_cell
 #define SCM_SET_CELL_OBJECT_2(x, v) SCM_SET_CELL_OBJECT ((x), 2, (v))
 #define SCM_SET_CELL_OBJECT_3(x, v) SCM_SET_CELL_OBJECT ((x), 3, (v))
 
-#define SCM_CELL_WORD_LOC(x, n)   (SCM_VALIDATE_CELL((x), &SCM_GC_CELL_WORD 
((x), (n))))
-#define SCM_CELL_OBJECT_LOC(x, n) ((SCM *) SCM_CELL_WORD_LOC (x, n))
+#define SCM_CELL_OBJECT_LOC(x, n) (SCM_VALIDATE_CELL((x), &SCM_GC_CELL_OBJECT 
((x), (n))))
 #define SCM_CARLOC(x)             (SCM_CELL_OBJECT_LOC ((x), 0))
 #define SCM_CDRLOC(x)             (SCM_CELL_OBJECT_LOC ((x), 1))
 
diff --git a/libguile/guardians.c b/libguile/guardians.c
index 5321378..a3d0323 100644
--- a/libguile/guardians.c
+++ b/libguile/guardians.c
@@ -218,8 +218,6 @@ scm_i_guard (SCM guardian, SCM obj)
                                     SCM_EOL);
       finalizer_data = scm_cons (SCM_BOOL_F, guardians_for_obj);
 
-      /* FIXME: should be SCM_HEAP_OBJECT_BASE, but will the finalizer
-         strip the tag bits of pairs or structs?  */
       GC_REGISTER_FINALIZER_NO_ORDER (SCM_UNPACK_POINTER (obj), 
finalize_guarded,
                                      SCM_UNPACK_POINTER (finalizer_data),
                                      &prev_finalizer, &prev_data);
diff --git a/libguile/macros.c b/libguile/macros.c
index 34aa60c..2a9b9a4 100644
--- a/libguile/macros.c
+++ b/libguile/macros.c
@@ -103,7 +103,7 @@ SCM_DEFINE (scm_make_syntax_transformer, 
"make-syntax-transformer", 3, 0, 0,
   SCM_VALIDATE_SYMBOL (2, type);
 
   z = scm_words (scm_tc16_macro, 5);
-  SCM_SET_SMOB_DATA_N (z, 1, (scm_t_bits)prim);
+  SCM_SET_SMOB_DATA_N (z, 1, prim);
   SCM_SET_SMOB_OBJECT_N (z, 2, name);
   SCM_SET_SMOB_OBJECT_N (z, 3, type);
   SCM_SET_SMOB_OBJECT_N (z, 4, binding);
diff --git a/libguile/numbers.h b/libguile/numbers.h
index b7bcfe4..cef2b86 100644
--- a/libguile/numbers.h
+++ b/libguile/numbers.h
@@ -128,9 +128,9 @@ typedef scm_t_int32 scm_t_wchar;
 #define SCM_REALP(x) (SCM_HAS_TYP16 (x, scm_tc16_real))
 #define SCM_COMPLEXP(x) (SCM_HAS_TYP16 (x, scm_tc16_complex))
 
-#define SCM_REAL_VALUE(x) (((scm_t_double *) SCM_HEAP_OBJECT_BASE (x))->real)
-#define SCM_COMPLEX_REAL(x) (((scm_t_complex *) SCM_HEAP_OBJECT_BASE 
(x))->real)
-#define SCM_COMPLEX_IMAG(x) (((scm_t_complex *) SCM_HEAP_OBJECT_BASE 
(x))->imag)
+#define SCM_REAL_VALUE(x) (((scm_t_double *) SCM2PTR (x))->real)
+#define SCM_COMPLEX_REAL(x) (((scm_t_complex *) SCM2PTR (x))->real)
+#define SCM_COMPLEX_IMAG(x) (((scm_t_complex *) SCM2PTR (x))->imag)
 
 /* Each bignum is just an mpz_t stored in a double cell starting at word 1. */
 #define SCM_I_BIG_MPZ(x) (*((mpz_t *) (SCM_CELL_OBJECT_LOC((x),1))))
diff --git a/libguile/ports.c b/libguile/ports.c
index c0e13f3..2f99453 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -541,8 +541,7 @@ register_finalizer_for_port (SCM port)
 
   /* Register a finalizer for PORT so that its iconv CDs get freed and
      optionally its type's `free' function gets called.  */
-  GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (port),
-                                  finalize_port, 0,
+  GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (port), finalize_port, 0,
                                  &prev_finalizer,
                                  &prev_finalization_data);
 }
diff --git a/libguile/smob.c b/libguile/smob.c
index e966da8..0c3a544 100644
--- a/libguile/smob.c
+++ b/libguile/smob.c
@@ -601,7 +601,7 @@ scm_i_new_smob (scm_t_bits tc, scm_t_bits data)
       GC_finalization_proc prev_finalizer;
       GC_PTR prev_finalizer_data;
 
-      GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (ret),
+      GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                       finalize_smob, NULL,
                                       &prev_finalizer, &prev_finalizer_data);
     }
@@ -635,7 +635,7 @@ scm_i_new_double_smob (scm_t_bits tc, scm_t_bits data1,
       GC_finalization_proc prev_finalizer;
       GC_PTR prev_finalizer_data;
 
-      GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (ret),
+      GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                       finalize_smob, NULL,
                                       &prev_finalizer, &prev_finalizer_data);
     }
diff --git a/libguile/struct.c b/libguile/struct.c
index d022cce..73b2e4d 100644
--- a/libguile/struct.c
+++ b/libguile/struct.c
@@ -448,7 +448,7 @@ scm_i_alloc_struct (scm_t_bits *vtable_data, int n_words)
       /* Register a finalizer for the newly created instance.  */
       GC_finalization_proc prev_finalizer;
       GC_PTR prev_finalizer_data;
-      GC_REGISTER_FINALIZER_NO_ORDER (SCM_HEAP_OBJECT_BASE (ret),
+      GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                      struct_finalizer_trampoline,
                                      NULL,
                                      &prev_finalizer,
diff --git a/libguile/tags.h b/libguile/tags.h
index fb55047..b49e616 100644
--- a/libguile/tags.h
+++ b/libguile/tags.h
@@ -391,17 +391,6 @@ typedef union SCM { struct { scm_t_bits n; } n; } SCM;
 #define scm_tc3_tc7_2           7
 
 
-/* As we have seen, heap objects have a tag in their three lowest bits.
-   If you have a heap object and want the pointer to the start of the
-   object, perhaps for GC purposes, you need to mask off the low bits,
-   which is what SCM_HEAP_OBJECT_BASE does.
-
-   Note that you can avoid this macro if you know the specific type of
-   the object (pair, struct, or other).
- */
-#define SCM_HEAP_OBJECT_BASE(x) ((scm_t_bits*)((SCM_UNPACK (x)) & ~7))
-
-
 /* Definitions for tc7: */
 
 #define SCM_ITAG7(x)           (127 & SCM_UNPACK (x))
diff --git a/libguile/weak-set.c b/libguile/weak-set.c
index 57e9e50..626433d 100644
--- a/libguile/weak-set.c
+++ b/libguile/weak-set.c
@@ -525,7 +525,7 @@ weak_set_add_x (scm_t_weak_set *set, unsigned long hash,
 
   if (SCM_HEAP_OBJECT_P (obj))
     SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &entries[k].key,
-                                      (GC_PTR) SCM_HEAP_OBJECT_BASE (obj));
+                                      (GC_PTR) SCM2PTR (obj));
 
   return obj;
 }
@@ -688,7 +688,7 @@ scm_c_register_weak_gc_callback (SCM obj, void (*callback) 
(SCM))
 
   weak[0] = SCM_UNPACK_POINTER (obj);
   weak[1] = (void*)callback;
-  GC_GENERAL_REGISTER_DISAPPEARING_LINK (weak, SCM_HEAP_OBJECT_BASE (obj));
+  GC_GENERAL_REGISTER_DISAPPEARING_LINK (weak, SCM2PTR (obj));
 
 #ifdef HAVE_GC_SET_START_CALLBACK
   scm_c_hook_add (&scm_after_gc_c_hook, weak_gc_hook, weak, 0);
diff --git a/libguile/weak-table.c b/libguile/weak-table.c
index 47d65e6..01b0791 100644
--- a/libguile/weak-table.c
+++ b/libguile/weak-table.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
  * 
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -131,13 +131,13 @@ register_disappearing_links (scm_t_weak_entry *entry,
       && (kind == SCM_WEAK_TABLE_KIND_KEY
           || kind == SCM_WEAK_TABLE_KIND_BOTH))
     SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &entry->key,
-                                      (GC_PTR) SCM_HEAP_OBJECT_BASE (k));
+                                      (GC_PTR) SCM2PTR (k));
 
   if (SCM_UNPACK (v) && SCM_HEAP_OBJECT_P (v)
       && (kind == SCM_WEAK_TABLE_KIND_VALUE
           || kind == SCM_WEAK_TABLE_KIND_BOTH))
     SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &entry->value,
-                                      (GC_PTR) SCM_HEAP_OBJECT_BASE (v));
+                                      (GC_PTR) SCM2PTR (v));
 }
 
 static void
@@ -162,7 +162,7 @@ move_disappearing_links (scm_t_weak_entry *from, 
scm_t_weak_entry *to,
       GC_move_disappearing_link ((GC_PTR) &from->key, (GC_PTR) &to->key);
 #else
       GC_unregister_disappearing_link (&from->key);
-      SCM_I_REGISTER_DISAPPEARING_LINK (&to->key, SCM_HEAP_OBJECT_BASE (key));
+      SCM_I_REGISTER_DISAPPEARING_LINK (&to->key, SCM2PTR (key));
 #endif
     }
 
@@ -173,7 +173,7 @@ move_disappearing_links (scm_t_weak_entry *from, 
scm_t_weak_entry *to,
       GC_move_disappearing_link ((GC_PTR) &from->value, (GC_PTR) &to->value);
 #else
       GC_unregister_disappearing_link (&from->value);
-      SCM_I_REGISTER_DISAPPEARING_LINK (&to->value, SCM_HEAP_OBJECT_BASE 
(value));
+      SCM_I_REGISTER_DISAPPEARING_LINK (&to->value, SCM2PTR (value));
 #endif
     }
 }
@@ -328,7 +328,7 @@ mark_weak_key_table (GC_word *addr, struct GC_ms_entry 
*mark_stack_ptr,
     if (entries[k].hash && entries[k].key)
       {
         SCM value = SCM_PACK (entries[k].value);
-        mark_stack_ptr = GC_MARK_AND_PUSH ((GC_word*) SCM_HEAP_OBJECT_BASE 
(value),
+        mark_stack_ptr = GC_MARK_AND_PUSH ((GC_word*) SCM2PTR (value),
                                            mark_stack_ptr, mark_stack_limit,
                                            NULL);
       }
@@ -347,7 +347,7 @@ mark_weak_value_table (GC_word *addr, struct GC_ms_entry 
*mark_stack_ptr,
     if (entries[k].hash && entries[k].value)
       {
         SCM key = SCM_PACK (entries[k].key);
-        mark_stack_ptr = GC_MARK_AND_PUSH ((GC_word*) SCM_HEAP_OBJECT_BASE 
(key),
+        mark_stack_ptr = GC_MARK_AND_PUSH ((GC_word*) SCM2PTR (key),
                                            mark_stack_ptr, mark_stack_limit,
                                            NULL);
       }
@@ -810,7 +810,7 @@ scm_c_register_weak_gc_callback (SCM obj, void (*callback) 
(SCM))
 
   weak[0] = SCM_UNPACK_POINTER (obj);
   weak[1] = (void*)callback;
-  GC_GENERAL_REGISTER_DISAPPEARING_LINK (weak, SCM_HEAP_OBJECT_BASE (obj));
+  GC_GENERAL_REGISTER_DISAPPEARING_LINK (weak, SCM2PTR (obj));
 
 #ifdef HAVE_GC_TABLE_START_CALLBACK
   scm_c_hook_add (&scm_after_gc_c_hook, weak_gc_hook, weak, 0);
diff --git a/libguile/weak-vector.c b/libguile/weak-vector.c
index f829d36..23bc386 100644
--- a/libguile/weak-vector.c
+++ b/libguile/weak-vector.c
@@ -177,7 +177,7 @@ scm_c_weak_vector_set_x (SCM wv, size_t k, SCM x)
 
   if (SCM_HEAP_OBJECT_P (x))
     SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &elts[k],
-                                      (GC_PTR) SCM_HEAP_OBJECT_BASE (x));
+                                      (GC_PTR) SCM2PTR (x));
 }
 
 


hooks/post-receive
-- 
GNU Guile



reply via email to

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