mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
(scm_array_handle_release): New, changed all uses of
scm_t_array_handle to properly call it. (scm_vector_get_handle, scm_generalized_vector_get_handle): Renamed former to latter, changed all uses.
This commit is contained in:
parent
fea99690f2
commit
c8857a4db4
7 changed files with 49 additions and 12 deletions
|
@ -79,6 +79,8 @@ SCM2CTYPES (SCM obj, CTYPE *data)
|
|||
for (i = 0; i < len; i++, uvec_elements += inc)
|
||||
data[i] = uvec_elements[i];
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -114,6 +116,8 @@ CTYPES2UVECT (const CTYPE *data, long n)
|
|||
for (i = 0; i < n; i++)
|
||||
uvec_elements[i] = data[i];
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return uvec;
|
||||
}
|
||||
|
||||
|
@ -134,6 +138,8 @@ CTYPES2UVECT_2 (const CTYPE_2 *data, long n)
|
|||
for (i = 0; i < n; i++)
|
||||
uvec_elements[i] = data[i];
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return uvec;
|
||||
}
|
||||
|
||||
|
|
|
@ -258,9 +258,11 @@ gh_scm2chars (SCM obj, char *m)
|
|||
scm_list_1 (obj));
|
||||
if (m == 0)
|
||||
m = (char *) malloc (len);
|
||||
if (m != NULL)
|
||||
memcpy (m, elts, len);
|
||||
scm_array_handle_release (&handle);
|
||||
if (m == NULL)
|
||||
return NULL;
|
||||
memcpy (m, elts, len);
|
||||
break;
|
||||
}
|
||||
else
|
||||
|
@ -296,9 +298,11 @@ scm2whatever (SCM obj, void *m, size_t size)
|
|||
|
||||
if (m == 0)
|
||||
m = malloc (len * sizeof (size));
|
||||
if (m == NULL)
|
||||
return NULL;
|
||||
memcpy (m, elts, len * size);
|
||||
if (m != NULL)
|
||||
memcpy (m, elts, len * size);
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
|
|
@ -1904,6 +1904,7 @@ sort_applicable_methods (SCM method_list, long size, SCM const *targs)
|
|||
}
|
||||
|
||||
/* If we are here, that's that we did it the hard way... */
|
||||
scm_array_handle_release (&handle);
|
||||
return scm_vector_to_list (vector);
|
||||
}
|
||||
|
||||
|
@ -1963,6 +1964,9 @@ scm_compute_applicable_methods (SCM gf, SCM args, long len, int find_method_p)
|
|||
}
|
||||
}
|
||||
|
||||
if (len >= BUFFSIZE)
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
if (find_method_p)
|
||||
|
@ -2188,17 +2192,15 @@ SCM_DEFINE (scm_sys_method_more_specific_p, "%method-more-specific?", 3, 0, 0,
|
|||
v = scm_c_make_vector (len, SCM_EOL);
|
||||
v_elts = scm_vector_writable_elements (v, &handle, NULL, NULL);
|
||||
|
||||
for (i = 0, l = targs; !scm_is_null (l); i++, l = SCM_CDR (l))
|
||||
for (i = 0, l = targs; i < len && scm_is_pair (l); i++, l = SCM_CDR (l))
|
||||
{
|
||||
SCM_ASSERT (SCM_CLASSP (SCM_CAR (l)), targs, SCM_ARG3, FUNC_NAME);
|
||||
v_elts[i] = SCM_CAR(l);
|
||||
}
|
||||
|
||||
/* V_ELTS is only protected as long as HANDLE is, so we need to make
|
||||
sure that more_specificp is not tail-called.
|
||||
*/
|
||||
result = more_specificp (m1, m2, v_elts) ? SCM_BOOL_T: SCM_BOOL_F;
|
||||
scm_remember_upto_here_1 (v);
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return result;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
|
|
@ -446,6 +446,8 @@ vector_scale_x (SCM v, double c)
|
|||
|
||||
for (i = 0; i < len; i++, elts += inc)
|
||||
*elts *= c;
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -479,6 +481,7 @@ vector_sum_squares (SCM v)
|
|||
sum += x * x;
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
@ -545,7 +548,7 @@ SCM_DEFINE (scm_random_normal_vector_x, "random:normal-vector!", 1, 1, 0,
|
|||
state = SCM_VARIABLE_REF (scm_var_random_state);
|
||||
SCM_VALIDATE_RSTATE (2, state);
|
||||
|
||||
scm_vector_get_handle (v, &handle);
|
||||
scm_generalized_vector_get_handle (v, &handle);
|
||||
dim = scm_array_handle_dims (&handle);
|
||||
|
||||
if (scm_is_vector (v))
|
||||
|
@ -562,6 +565,8 @@ SCM_DEFINE (scm_random_normal_vector_x, "random:normal-vector!", 1, 1, 0,
|
|||
*elts = scm_c_normal01 (SCM_RSTATE (state));
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
|
|
@ -93,6 +93,8 @@ SCM_DEFINE (scm_restricted_vector_sort_x, "restricted-vector-sort!", 4, 0, 0,
|
|||
else
|
||||
quicksort (velts + spos*vinc, len, vinc, cmp, less);
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -158,6 +160,8 @@ SCM_DEFINE (scm_sorted_p, "sorted?", 2, 0, 0,
|
|||
}
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -509,6 +513,9 @@ SCM_DEFINE (scm_stable_sort_x, "stable-sort!", 2, 0, 0,
|
|||
|
||||
scm_merge_vector_step (vec_elts, temp_elts, cmp, less, 0, len-1, inc);
|
||||
|
||||
scm_array_handle_release (&temp_handle);
|
||||
scm_array_handle_release (&vec_handle);
|
||||
|
||||
return items;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -177,13 +177,15 @@ SCM_DEFINE (scm_vector, "vector", 0, 0, 1,
|
|||
res = scm_c_make_vector (len, SCM_UNSPECIFIED);
|
||||
data = scm_vector_writable_elements (res, &handle, NULL, NULL);
|
||||
i = 0;
|
||||
while (!SCM_NULL_OR_NIL_P (l) && i < len)
|
||||
while (scm_is_pair (l) && i < len)
|
||||
{
|
||||
data[i] = SCM_CAR (l);
|
||||
l = SCM_CDR (l);
|
||||
i += 1;
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return res;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -353,6 +355,7 @@ SCM_DEFINE (scm_vector_copy, "vector-copy", 1, 0, 0,
|
|||
dst = scm_gc_malloc (len * sizeof (SCM), "vector");
|
||||
for (i = 0; i < len; i++, src += inc)
|
||||
dst[i] = *src;
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return scm_cell ((len << 8) | scm_tc7_vector, (scm_t_bits) dst);
|
||||
}
|
||||
|
@ -425,6 +428,7 @@ SCM_DEFINE (scm_vector_to_list, "vector->list", 1, 0, 0,
|
|||
i -= inc;
|
||||
res = scm_cons (data[i], res);
|
||||
}
|
||||
scm_array_handle_release (&handle);
|
||||
return res;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -444,6 +448,7 @@ SCM_DEFINE (scm_vector_fill_x, "vector-fill!", 2, 0, 0,
|
|||
data = scm_vector_writable_elements (v, &handle, &len, &inc);
|
||||
for (i = 0; i < len; i += inc)
|
||||
data[i] = fill;
|
||||
scm_array_handle_release (&handle);
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -492,6 +497,9 @@ SCM_DEFINE (scm_vector_move_left_x, "vector-move-left!", 5, 0, 0,
|
|||
for (; i < e; i += inc1, j += inc2)
|
||||
elts2[j] = elts1[i];
|
||||
|
||||
scm_array_handle_release (&handle2);
|
||||
scm_array_handle_release (&handle1);
|
||||
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
@ -531,6 +539,9 @@ SCM_DEFINE (scm_vector_move_right_x, "vector-move-right!", 5, 0, 0,
|
|||
elts2[j] = elts1[e];
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle2);
|
||||
scm_array_handle_release (&handle1);
|
||||
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
|
|
@ -107,6 +107,8 @@ SCM_DEFINE (scm_weak_vector, "weak-vector", 0, 0, 1,
|
|||
i--;
|
||||
}
|
||||
|
||||
scm_array_handle_release (&handle);
|
||||
|
||||
return res;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue