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); |
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; |
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])) |
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 |
{ |
{ |