On 08/06/10 17:27, Kentaro NAKAZAWA wrote:
> Hello.
> (sorry, my English is not so good ;)
>
> When I convert the following code into C language.
>
> ----------------
> void main () {
> int[] a = { };
> a += 1;
> a += 1;
> }
> ----------------
>
> It is converted into a redundant following C code.
>
> ----------------
> static void _vala_array_add1 (gint** array, int* length, int* size, gint
> value) {
> if ((*length) == (*size)) {
> *size = (*size) ? (2 * (*size)) : 4;
> *array = g_renew (gint, *array, *size);
> }
> (*array)[(*length)++] = value;
> }
>
> static void _vala_array_add2 (gint** array, int* length, int* size, gint
> value) {
> if ((*length) == (*size)) {
> *size = (*size) ? (2 * (*size)) : 4;
> *array = g_renew (gint, *array, *size);
> }
> (*array)[(*length)++] = value;
> }
> ----------------
>
> I think enough by one.
>
I think implementing an anti-redundancy method here would not mean much
better performance at runtime in "real" programs, because you would use
a for() loop instead:
----------------
void main () {
int[] a = { };
for (int i=0; i<2; i++) {
a += 1;
}
}
----------------
And the resulting C code will have one _vala_array_add%d function only.
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list