summaryrefslogtreecommitdiff
path: root/libguile/gc-mark.c
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2009-08-20 22:41:12 -0700
committerMichael Gran <spk121@yahoo.com>2009-08-20 22:41:12 -0700
commit90305ce9e429f0381ff79427e71287fdafd4d201 (patch)
treeb7a78041d473973a96cb4e9bbdd288c7dcaa1730 /libguile/gc-mark.c
parent832bbc95a239bdd1f07133be2377d485c3f43034 (diff)
downloadguile-90305ce9e429f0381ff79427e71287fdafd4d201.tar.gz
Use symbol accessors in scm_gc_mark_dependencies
* libguile/gc-mark.c (scm_gc_mark_dependencies): don't unpack symbols. Use symbol accessors.
Diffstat (limited to 'libguile/gc-mark.c')
-rw-r--r--libguile/gc-mark.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libguile/gc-mark.c b/libguile/gc-mark.c
index ccbcdcc2f..bb307b4c0 100644
--- a/libguile/gc-mark.c
+++ b/libguile/gc-mark.c
@@ -248,7 +248,6 @@ scm_gc_mark_dependencies (SCM p)
scm_t_bits * vtable_data = (scm_t_bits *) word0;
SCM layout = SCM_PACK (vtable_data [scm_vtable_index_layout]);
long len = scm_i_symbol_length (layout);
- const char *fields_desc = scm_i_symbol_chars (layout);
scm_t_bits *struct_data = (scm_t_bits *) SCM_STRUCT_DATA (ptr);
if (vtable_data[scm_struct_i_flags] & SCM_STRUCTF_ENTITY)
@@ -261,11 +260,12 @@ scm_gc_mark_dependencies (SCM p)
long x;
for (x = 0; x < len - 2; x += 2, ++struct_data)
- if (fields_desc[x] == 'p')
+ if (scm_i_symbol_ref (layout, x) == 'p')
scm_gc_mark (SCM_PACK (*struct_data));
- if (fields_desc[x] == 'p')
+ if (scm_i_symbol_ref (layout, x) == 'p')
{
- if (SCM_LAYOUT_TAILP (fields_desc[x + 1]))
+ scm_t_wchar ch = scm_i_symbol_ref (layout, x+1);
+ if (SCM_LAYOUT_TAILP (ch))
for (x = *struct_data++; x; --x, ++struct_data)
scm_gc_mark (SCM_PACK (*struct_data));
else