comparison runtime/array.c @ 105:43cc42df26cc

Various compiler improvements
author Mike Pavone <pavone@retrodev.com>
date Tue, 24 Aug 2010 23:22:17 -0400
parents 7428aa5d6ade
children 439db471f595
comparison
equal deleted inserted replaced
103:7428aa5d6ade 105:43cc42df26cc
14 { 14 {
15 t_Array * arr = (t_Array *)array; 15 t_Array * arr = (t_Array *)array;
16 memcpy(((char *)array) + sizeof(t_Array) + arr->payload.Eltype->bp->size * index, ((char *)val) + sizeof(object), arr->payload.Eltype->bp->size); 16 memcpy(((char *)array) + sizeof(t_Array) + arr->payload.Eltype->bp->size * index, ((char *)val) + sizeof(object), arr->payload.Eltype->bp->size);
17 get_blueprint(val)->copy(val); 17 get_blueprint(val)->copy(val);
18 release_ref(val); 18 release_ref(val);
19 }
20
21 void _internal_array_copychunk(object * src, int32_t srcidx, object * dest, int32_t destidx, int32_t len)
22 {
23 int32_t idx;
24 object * cur;
25 t_Array *sarr,*darr;
26 sarr = (t_Array *)src;
27 darr = (t_Array *)dest;
28 memcpy((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx, (char *)(sarr+1) + sarr->payload.Eltype->bp->size * srcidx, len*sarr->payload.Eltype->bp->size);
29 cur = (object *)((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx - sizeof(object));
30 for (idx = 0; idx < len; ++idx)
31 {
32 darr->payload.Eltype->bp->copy(cur);
33 cur++;
34 }
35 release_ref(src);
19 } 36 }
20 37
21 object * _internal_array_getboxed(object * array, int32_t index) 38 object * _internal_array_getboxed(object * array, int32_t index)
22 { 39 {
23 object * ret; 40 object * ret;