Alien-LibJIT
view release on metacpan or search on metacpan
libjit/dpas/dpas-function.c view on Meta::CPAN
dpas_out_of_memory();
}
function_stack = (jit_function_t *)jit_realloc
(function_stack, sizeof(jit_function_t) * (function_stack_size + 1));
if(!function_stack)
{
dpas_out_of_memory();
}
function_stack[function_stack_size++] = func;
return func;
}
void dpas_pop_function(void)
{
if(function_stack_size > 0)
{
--function_stack_size;
}
}
int dpas_function_is_nested(void)
{
return (function_stack_size > 1);
}
dpas_semvalue dpas_lvalue_to_rvalue(dpas_semvalue value)
{
if(dpas_sem_is_lvalue_ea(value))
{
jit_type_t type = dpas_sem_get_type(value);
jit_value_t rvalue = dpas_sem_get_value(value);
rvalue = jit_insn_load_relative
(dpas_current_function(), rvalue, 0, type);
if(!rvalue)
{
dpas_out_of_memory();
}
dpas_sem_set_rvalue(value, type, rvalue);
}
return value;
}
void dpas_add_main_function(jit_function_t func)
{
main_list = (jit_function_t *)jit_realloc
(main_list, sizeof(jit_function_t) * (main_list_size + 1));
if(!main_list)
{
dpas_out_of_memory();
}
main_list[main_list_size++] = func;
}
int dpas_run_main_functions(void)
{
int index;
for(index = 0; index < main_list_size; ++index)
{
if(!jit_function_apply(main_list[index], 0, 0))
{
fprintf(stderr, "Exception 0x%lx thrown past top level\n",
(long)(jit_nint)(jit_exception_get_last()));
return 0;
}
}
return 1;
}
( run in 0.365 second using v1.01-cache-2.11-cpan-119454b85a5 )