view runtime/array.c @ 58:4c22fe798779

Some small optimizations
author Mike Pavone <pavone@retrodev.com>
date Thu, 08 Oct 2009 03:03:48 -0400
parents d61550e2c001
children 3e20ed8959c4
line wrap: on
line source

#include "array.h"
#include "integer.h"

Func(Array,0,
	;)
	Ret(0, new_object(TYPE_ARRAY))
	Return
EndFunc

Method(Index,Array,2,
	_t_Int32 * idx;)
	Param(1,idx,Int32)
	if (idx->num < 0 || idx->num >= me->numels) {
		Ret(0, NULL)
		Ret(1, me)
	} else {
		Ret(1, NULL)
		if (me->contents_type) {
			Ret(0, copy_from_raw(me->conents_type, (char *)me + sizeof(*me) + (idx->num * sizeof(object *))))
		} else {
			Ret(0, add_ref((object *)((char *)me + sizeof(*me) + (idx->num * sizeof(object *)))))
		}
		release_ref(me);
	}
EndFunc