view runtime/rhopefuncs_prolog.c @ 186:ba35ab624ec2

Add support for raw C function output from C backend as well as an option to use Boehm-GC instead of reference counting
author Mike Pavone <pavone@retrodev.com>
date Fri, 07 Oct 2011 00:10:02 -0700
parents e57c151f351e
children
line wrap: on
line source

#ifdef RAW_FUNC
FuncDef(Build)
FuncDef(BlueprintSP_Of)
FuncDef(ID)
FuncDef(BlueprintSP_FromSP_ID)

object * tmp;
#else

#ifdef ENABLE_PROFILING
uint64_t profile_counts[END];
uint64_t profile_nestedcounts[END];
uint64_t profile_totals[END];
uint64_t profile_selftotals[END];
uint64_t profile_activationlevel[END];
#endif

int32_t rhope(uint32_t func, object ** params, uint16_t numparams, uint16_t callspace)
{
#ifdef ENABLE_PROFILING
	struct timeval proftime;
#endif
	uint16_t resume,idx, vcparam_offset, last_vcparam;
	uint32_t *bytecode, *cur_instruction, op1, op2, accum;
	object ** interp_consts;
	void * interp_dispatch[] = {
		&&interp_call,
		&&interp_param,
		&&interp_load,
		&&interp_and,
		&&interp_or,
		&&interp_not,
		&&interp_branch,
		&&interp_saveresult,
		&&interp_addref,
		&&interp_release,
		&&interp_move,
		&&interp_return,
		&&interp_nop,
		&&interp_nop,
		&&interp_nop,
		&&interp_nop,
		&&interp_nop
	};
	
	context *ct,*temp_ct;
	void *tmp;
	calldata * cdata, *temp_cdata, *my_cdata;
	DispatchVar
	FuncDef(Build)
	FuncDef(BlueprintSP_Of)
	FuncDef(ID)
	FuncDef(BlueprintSP_FromSP_ID)
	void ** lv_RunSP_Bytecode;
#endif //RAW_FUNC