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;