1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-22 20:40:29 +02:00
Commit graph

10144 commits

Author SHA1 Message Date
Ludovic Courtes
e4d21e6bc9 Fixed the weak cell implementation (for weak hash tables).
* libguile/hashtab.c (wcar_cell_descr): New.
  (wcdr_cell_descr): New.
  (scm_weak_car_cell): Use `GC_malloc_explicitly_typed ()' instead of
  `scm_gc_malloc_pointerless ()'.
  (scm_weak_cdr_cell): Likewise.
  (SCM_WEAK_CELL_WORD_DELETED_P): Use `SCM_CELL_OBJECT' instead of
  `SCM_CELL_WORD'.
  (scm_hash_fn_get_handle): Call `GC_disable ()' before calling
  `scm_fixup_weak_alist ()' and `GC_enable ()' afterwards.
  (scm_hash_fn_create_handle_x): Likewise.
  (scm_hash_fn_remove_x): Likewise.
  (scm_hashtab_prehistory): Initialize WCAR_CELL_DESCR and
  WCDR_CELL_DESCR.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-8
2008-09-05 00:46:58 +02:00
Ludovic Courtes
3a2de079d5 First stab at implementing weak hash tables and vectors. Unable to run the REPL.
* libguile/hashtab.c (scm_weak_car_cell): New.
  (scm_weak_cdr_cell): New.
  (scm_doubly_weak_cell): New.
  (SCM_WEAK_CELL_WORD_DELETED_P): New.
  (SCM_WEAK_CELL_WORD): New.
  (scm_fixup_weak_alist): New.
  (make_hash_table): Always use non-weak vectors.  Allocate
  `scm_t_hashtable' objects as pointerless.
  (scm_i_rehash): Always make NEW_BUCKETS a non-weak vector.
  (scm_hash_fn_get_handle): Call `scm_fixup_weak_alist ()' on weak
  buckets before calling ASSOC_FN.
  (scm_hash_fn_remove_x): Likewise.
  (scm_hash_fn_create_handle_x): Likewise.  Also, use `scm_.*weak.*cell
  ()' for HANDLE when needed.

* libguile/symbols.c (lookup_interned_symbol): Check for nullified
  pairs.

* libguile/vectors.c (scm_vector_elements): Abort on weak vectors.
  (scm_vector_writable_elements): Likewise.
  (scm_c_vector_ref): Check whether the referenced element has been
  nullified.
  (scm_c_vector_set_x): Use `GC_GENERAL_REGISTER_DISAPPEARING_LINK ()'.
  (scm_i_allocate_weak_vector): Use `scm_gc_malloc_pointerless ()'
  instead of `scm_gc_malloc ()' when allocating room for the vector
  itself.

* libguile/weaks.c (scm_make_weak_key_alist_vector): Use
  `scm_make_vector ()' instead of `scm_i_allocate_weak_vector ()'.
  (scm_make_weak_value_alist_vector): Likewise.
  (scm_make_doubly_weak_alist_vector): Likewise.
  (weak_vectors): Removed.
  (scm_i_init_weak_vectors_for_gc): Removed.
  (scm_i_mark_weak_vector): Removed.
  (scm_i_mark_weak_vector_non_weaks): Removed.
  (scm_i_mark_weak_vectors_non_weaks): Removed.
  (scm_i_remove_weaks_from_weak_vectors): Commented out.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-7
2008-09-05 00:46:53 +02:00
Ludovic Courtes
a82e795325 Fixed GC initialization and static roots.
* libguile/gc.c (scm_storage_prehistory): Call `GC_INIT ()'.  Invoke
  `GC_add_roots ()' as well.
  (scm_init_gc): Removed call to `GC_init ()'.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-6
2008-09-05 00:46:46 +02:00
Ludovic Courtes
c5018a2bbb Added scm_gc_malloc_pointerless ()', equivalent to GC_MALLOC_ATOMIC ()'.
* libguile/gc-malloc.c (scm_gc_register_collectable_memory): Tidied.
  (scm_gc_unregister_collectable_memory): Likewise.
  (scm_gc_malloc_pointerless): New.

* libguile/gc.h (scm_gc_malloc_pointer_less): New declaration.

* libguile/strings.c (make_stringbuf): Use it.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-5
2008-09-05 00:46:40 +02:00
Ludovic Courtes
6a4be32986 Fixed garbage collection of ports: basics work (no SMOBs, no guardians, no WHT).
* libguile/gc.c (scm_init_storage): Do not initialize SCM_I_PORT_TABLE
  here: this is done in `scm_ports_prehistory ()'.  This fixes the bug
  mentioned in the previous patch log.

* libguile/ports.c (scm_new_port_table_entry): Slightly clarified the
  code.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-4
2008-09-05 00:46:22 +02:00
Ludovic Courtes
fca4388748 First `working'' Guile! Crashes in flush-all-ports' (relates to SCM_I_PORT_TABLE).
* libguile/gc.c (scm_gc_stats): Fixed so that it returns a relevant
  result instead of just `SCM_EOL'.

* libguile/ports.c: Include `assert.h'.  Don't include `malloc.h'.
  (scm_make_port_type): Use `scm_gc_realloc ()' instead of `realloc ()'.
  (scm_new_port_table_entry): Likewise.
  (scm_flush): Added an assertion on the port number.
  (scm_ports_prehistory): Use `scm_gc_malloc ()' instead of `scm_malloc ()'.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-3
2008-09-05 00:46:14 +02:00
Ludovic Courtes
c812243ba1 Small fixes. Gets to the REPL and `abort ()'s soon after.
* libguile/inline.h (scm_cell): Re-added comment about the assignment
  order of CAR/CDR.

* libguile/srcprop.c (scm_make_srcprops): Use `scm_gc_malloc ()' instead
  of `malloc' + `scm_gc_register_collectable_memory ()'.

* libguile/threads.c (guilify_self_1): Likewise.
  (guilify_self_2): Likewise.

* libguile/strings.c (make_stringbuf): Use `GC_MALLOC_ATOMIC ()' instead
  of `scm_gc_malloc ()'.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-2
2008-09-05 00:46:07 +02:00
Ludovic Courtes
26224b3f5d Merge from lcourtes@laas.fr--2005-mobile
Patches applied:

 * lcourtes@laas.fr--2005-mobile/guile-core--boehm-gc--1.9  (base, patch 1)

   - tag of lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--base-0
   - Initial hack for Boehm's GC support: nothing works.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-1
2008-09-05 00:45:58 +02:00
Ludovic Courtès
2e77f7202b Changes from arch/CVS synchronization 2007-10-20 11:09:58 +00:00
Ludovic Courtès
d41668faec Changes from arch/CVS synchronization 2007-10-17 21:56:10 +00:00
Ludovic Courtès
24e59a9257 Changes from arch/CVS synchronization 2007-10-16 21:23:53 +00:00
Ludovic Courtès
a84251b06a Add missing file `HACKING'. 2007-10-16 17:00:21 +00:00
Ludovic Courtès
c8bb98a9fa Changes from arch/CVS synchronization 2007-10-10 20:15:08 +00:00
Ludovic Courtès
6630261802 Changes from arch/CVS synchronization 2007-10-10 16:46:26 +00:00
Ludovic Courtès
1445e4492f Changes from arch/CVS synchronization 2007-10-04 16:22:05 +00:00
Ludovic Courtès
29776e85da Changes from arch/CVS synchronization 2007-10-02 16:06:25 +00:00
Ludovic Courtès
dc061a74fd Changes from arch/CVS synchronization 2007-10-02 03:16:28 +00:00
Ludovic Courtès
61d3568bff Changes from arch/CVS synchronization 2007-10-01 20:22:08 +00:00
Ludovic Courtès
ed0042dda7 Changes from arch/CVS synchronization 2007-09-23 10:28:23 +00:00
Kevin Ryde
68eccd8bc2 *** empty log message *** 2007-09-11 00:47:34 +00:00
Kevin Ryde
5b7ecf1b30 (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
putenv("NAME") as the fallback everywhere else.  In particular this is
needed for solaris 9.  Reported by Frank Storbeck.
2007-09-11 00:46:15 +00:00
Ludovic Courtès
bc4ee34e1d Changes from arch/CVS synchronization 2007-09-10 18:28:15 +00:00
Ludovic Courtès
454866e052 Changes from arch/CVS synchronization 2007-09-03 16:58:20 +00:00
Ludovic Courtès
f43f362018 Changes from arch/CVS synchronization 2007-09-02 22:56:56 +00:00
Kevin Ryde
8d4d5dfcf9 *** empty log message *** 2007-09-02 22:40:23 +00:00
Kevin Ryde
b69471c107 (AC_CHECK_FUNCS): Move cexp and clog up into the main
funcs check block.  Remove carg which is now unused.
2007-09-02 22:39:45 +00:00
Kevin Ryde
90709cd75f (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
before using clog().  It's possible for gcc to provide the "complex
double" type, but for the system not to have the complex funcs.
(scm_exp): Ditto HAVE_CEXP for cexp().
(clog, cexp, carg): Remove fallback definitions.  These only
duplicated the code within scm_log and scm_exp, and the latter have to
exist for the case when there's no "complex double".  So better just
fix up the conditionals selecting between the complex funcs and plain
doubles than worry about fallbacks.
2007-09-02 22:36:23 +00:00
Ludovic Courtès
1ac5fb45bc Changes from arch/CVS synchronization 2007-09-02 10:55:58 +00:00
Ludovic Courtès
d7c0c26d88 Changes from arch/CVS synchronization 2007-09-01 16:54:26 +00:00
Han-Wen Nienhuys
e9966dbb9f ("port-for-each"): remove unresolved for
port-for-each memory test.
("fdes->port"): test fdes->port
2007-08-26 18:12:53 +00:00
Han-Wen Nienhuys
5dbc6c0679 replace port table with weak hash table. This simplifies
memory management, and fixes freed cells appearing in
port-for-each output.
2007-08-26 18:11:57 +00:00
Han-Wen Nienhuys
b87e6d0412 (cleanup_for_exit): abort cleanup if init_mutex is still
held.
2007-08-26 18:11:24 +00:00
Ludovic Courtès
492faee1e5 Changes from arch/CVS synchronization 2007-08-23 21:17:24 +00:00
Ludovic Courtès
2baec6a946 Changes from arch/CVS synchronization 2007-08-23 21:10:57 +00:00
Kevin Ryde
5dda5df742 *** empty log message *** 2007-08-23 00:32:00 +00:00
Kevin Ryde
256f34e7a4 (port-for-each): New test for passing freed cell,
marked as unresolved since problem not yet fixed.
2007-08-23 00:03:14 +00:00
Kevin Ryde
1f11c61a62 *** empty log message *** 2007-08-21 01:09:41 +00:00
Kevin Ryde
8f3aa0bd6a (scm_i_card_statistics): Record scm_tc7_number types as
tc16 values so big, real, complex and fraction can be distinguished.

(scm_i_tag_name): Return "number" for scm_tc7_number, not NULL.  NULL
was making numbers come out as "type 23" in gc-live-object-stats.
Fix tests of the tc16 number types, they were checked under
scm_tc7_number, but the values went down the tag>=255 smob case.
Put smob case under scm_tc7_smob instead of using tag>=255, per
recommendation in comments with scm_tc7_smob to use symbolic values.
Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
code.  Lose some unnecessary "break" statements.

(scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
element returned, rather than two lookups scm_hashq_ref and
scm_hashq_set_x.
2007-08-21 01:08:17 +00:00
Kevin Ryde
949ec9f963 *** empty log message *** 2007-08-16 23:34:58 +00:00
Kevin Ryde
9eec84a935 Add #define _REENTRANT, to get gmtime_r() prototype on
solaris 2.6.  Reported by anirkko.
2007-08-16 23:33:46 +00:00
Ludovic Courtès
b81a5bf26d Added `config.rpath'. 2007-08-14 14:32:38 +00:00
Ludovic Courtès
7ff6c169d5 Changes from arch/CVS synchronization 2007-08-11 10:49:59 +00:00
Ludovic Courtès
c9de3d45f3 Added SRFI-35 files. 2007-08-11 10:13:09 +00:00
Ludovic Courtès
f50ca8da5b Changes from arch/CVS synchronization 2007-08-11 10:08:10 +00:00
Ludovic Courtès
1fdd8ffa83 Changes from arch/CVS synchronization 2007-08-08 15:35:56 +00:00
Ludovic Courtès
3ba9acb1b4 Changes from arch/CVS synchronization 2007-08-08 14:56:02 +00:00
Ludovic Courtès
416fe978b0 Added `m4/gnulib-cache.m4'. 2007-07-29 15:30:09 +00:00
Ludovic Courtès
ca7406a9db Changes from arch/CVS synchronization 2007-07-29 15:27:24 +00:00
Ludovic Courtès
f743909974 Changes from arch/CVS synchronization 2007-07-29 15:16:46 +00:00
Ludovic Courtès
6caac03c93 Changes from arch/CVS synchronization 2007-07-29 14:58:21 +00:00