Mercurial > repos > rhope
diff 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 |
line wrap: on
line diff
--- a/runtime/array.c Wed Aug 11 03:13:28 2010 -0400 +++ b/runtime/array.c Tue Aug 24 23:22:17 2010 -0400 @@ -18,6 +18,23 @@ release_ref(val); } +void _internal_array_copychunk(object * src, int32_t srcidx, object * dest, int32_t destidx, int32_t len) +{ + int32_t idx; + object * cur; + t_Array *sarr,*darr; + sarr = (t_Array *)src; + darr = (t_Array *)dest; + 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); + cur = (object *)((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx - sizeof(object)); + for (idx = 0; idx < len; ++idx) + { + darr->payload.Eltype->bp->copy(cur); + cur++; + } + release_ref(src); +} + object * _internal_array_getboxed(object * array, int32_t index) { object * ret;