/[guile]/guile/guile-core/libguile/weaks.c
ViewVC logotype

Diff of /guile/guile-core/libguile/weaks.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.49 by ttn, Thu Mar 14 03:47:43 2002 UTC revision 1.50 by xxhanwen, Sat Jul 20 14:08:34 2002 UTC
# Line 141  SCM_DEFINE (scm_weak_vector, "weak-vecto Line 141  SCM_DEFINE (scm_weak_vector, "weak-vecto
141    i = scm_ilength (l);    i = scm_ilength (l);
142    SCM_ASSERT (i >= 0, l, SCM_ARG1, FUNC_NAME);    SCM_ASSERT (i >= 0, l, SCM_ARG1, FUNC_NAME);
143    res = scm_make_weak_vector (SCM_MAKINUM (i), SCM_UNSPECIFIED);    res = scm_make_weak_vector (SCM_MAKINUM (i), SCM_UNSPECIFIED);
   data = SCM_VELTS (res);  
144    
145      /*
146        no alloc, so  this loop is safe.
147      */    
148      data = SCM_WRITABLE_VELTS (res);
149    while (!SCM_NULL_OR_NIL_P (l))    while (!SCM_NULL_OR_NIL_P (l))
150      {      {
151        *data++ = SCM_CAR (l);        *data++ = SCM_CAR (l);
# Line 261  scm_mark_weak_vector_spines (void *dummy Line 264  scm_mark_weak_vector_spines (void *dummy
264      {      {
265        if (SCM_IS_WHVEC_ANY (w))        if (SCM_IS_WHVEC_ANY (w))
266          {          {
267            SCM *ptr;            SCM const *ptr;
268            SCM obj;            SCM obj;
269            long j;            long j;
270            long n;            long n;
# Line 302  scm_scan_weak_vectors (void *dummy1 SCM_ Line 305  scm_scan_weak_vectors (void *dummy1 SCM_
305          {          {
306            register long j, n;            register long j, n;
307    
308            ptr = SCM_VELTS (w);            ptr = SCM_GC_WRITABLE_VELTS (w);
309            n = SCM_VECTOR_LENGTH (w);            n = SCM_VECTOR_LENGTH (w);
310            for (j = 0; j < n; ++j)            for (j = 0; j < n; ++j)
311              if (SCM_FREE_CELL_P (ptr[j]))              if (SCM_FREE_CELL_P (ptr[j]))
# Line 316  scm_scan_weak_vectors (void *dummy1 SCM_ Line 319  scm_scan_weak_vectors (void *dummy1 SCM_
319            int weak_keys = SCM_IS_WHVEC (obj) || SCM_IS_WHVEC_B (obj);            int weak_keys = SCM_IS_WHVEC (obj) || SCM_IS_WHVEC_B (obj);
320            int weak_values = SCM_IS_WHVEC_V (obj) || SCM_IS_WHVEC_B (obj);            int weak_values = SCM_IS_WHVEC_V (obj) || SCM_IS_WHVEC_B (obj);
321    
322            ptr = SCM_VELTS (w);            ptr = SCM_GC_WRITABLE_VELTS (w);
323    
324            for (j = 0; j < n; ++j)            for (j = 0; j < n; ++j)
325              {              {

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.50

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26