core: vector_to_list: Create less garbage.

* src/vector.c (vector_to_list): Create less garbage.
This commit is contained in:
Jan Nieuwenhuizen 2018-04-20 13:22:47 +02:00
parent 3330948a90
commit 62a369e6de
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273

View file

@ -23,7 +23,8 @@ make_vector__ (int k)
{ {
SCM v = alloc (k); SCM v = alloc (k);
SCM x = make_cell__ (TVECTOR, k, v); SCM x = make_cell__ (TVECTOR, k, v);
for (int i=0; i<k; i++) g_cells[v+i] = g_cells[vector_entry (cell_unspecified)]; for (int i=0; i<k; i++)
g_cells[v+i] = g_cells[vector_entry (cell_unspecified)];
return x; return x;
} }
@ -90,12 +91,12 @@ SCM
vector_to_list (SCM v) vector_to_list (SCM v)
{ {
SCM x = cell_nil; SCM x = cell_nil;
for (int i = 0; i < LENGTH (v); i++) for (int i = LENGTH (v); i; i--)
{ {
SCM e = VECTOR (v)+i; SCM e = VECTOR (v)+i-1;
if (TYPE (e) == TREF) if (TYPE (e) == TREF)
e = REF (e); e = REF (e);
x = append2 (x, cons (e, cell_nil)); x = cons (e, x);
} }
return x; return x;
} }