pike.git/
src/
array.c
Branch:
Tag:
Non-build tags
All tags
No tags
2000-12-07
2000-12-07 23:05:44 by Fredrik Noring <noring@nocrew.org>
cc51e9d8e70931d5c4723c87597c50fde66a1b2a (
22
lines) (+
20
/-
2
)
[
Show
|
Annotate
]
Branch:
7.9
Made reverse_array in-place for refs = 1.
Rev: src/array.c:1.98
23:
#include "stuff.h" #include "bignum.h"
-
RCSID("$Id: array.c,v 1.
97
2000/12/
01
08
:
09
:
43
hubbe
Exp $");
+
RCSID("$Id: array.c,v 1.
98
2000/12/
07
23
:
05
:
44
noring
Exp $");
PMOD_EXPORT struct array empty_array= {
1867:
INT32 e; struct array *ret;
-
/*
FIXME:
Check
refs
so
we
might
optimize
*
/
+
if(a->refs == 1)
+
/*
Reverse
in-place.
*/
+
{
+
struct svalue
*
tmp0, *tmp1, swap;
+
+
tmp0 = ITEM(a);
+
tmp1 = ITEM(a) + a->size;
+
for(e = a->size>>1; 0 < e; e--)
+
{
+
swap = *tmp0;
+
*(tmp0++) = *(--tmp1);
+
*tmp1 = swap;
+
}
+
+
add_ref(a);
+
return a;
+
}
+
ret=allocate_array_no_init(a->size,0); for(e=0;e<a->size;e++) assign_svalue_no_free(ITEM(ret)+e,ITEM(a)+a->size+~e);