diff options
author | Ludovic Courtes <ludovic.courtes@laas.fr> | 2006-04-02 21:04:30 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2008-09-05 00:46:07 +0200 |
commit | c812243ba15a9d13bb6f1876892e7a1efea9bf4e (patch) | |
tree | f98d42018d65072f7542cae879f2ee45925a9e35 /libguile/inline.h | |
parent | 26224b3f5d795e523e921ec32ffec424893ea035 (diff) | |
download | guile-c812243ba15a9d13bb6f1876892e7a1efea9bf4e.tar.gz |
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
Diffstat (limited to 'libguile/inline.h')
-rw-r--r-- | libguile/inline.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libguile/inline.h b/libguile/inline.h index 5337c90a5..122455cee 100644 --- a/libguile/inline.h +++ b/libguile/inline.h @@ -73,8 +73,12 @@ scm_cell (scm_t_bits car, scm_t_bits cdr) { SCM cell = SCM_PACK ((scm_t_bits) (GC_malloc (sizeof (scm_t_cell)))); - SCM_GC_SET_CELL_WORD (cell, 0, car); + /* Initialize the type slot last so that the cell is ignored by the GC + until it is completely initialized. This is only relevant when the GC + can actually run during this code, which it can't since the GC only runs + when all other threads are stopped. */ SCM_GC_SET_CELL_WORD (cell, 1, cdr); + SCM_GC_SET_CELL_WORD (cell, 0, car); return cell; } |