#define MEMOIZE_CALL const Instr memoize = !GET_FLAG(f, pure) ? NULL : emit_add_instr(emit, MemoizeCall);
#define MEMOIZE_SET(a) if(memoize)memoize->m_val = a + 1;
#define MEMOIZE_STORE if(GET_FLAG(emit->env->func, pure)) emit_add_instr(emit, MemoizeStore);
-#define MEMOIZE_INI if(GET_FLAG(func, pure)) func->code->memoize = memoize_ini(func, kindof(func->def->ret_type->size, !func->def->ret_type->size));
+#define MEMOIZE_INI if(GET_FLAG(func, pure)) func->code->memoize = memoize_ini(func, kindof(func->def->base->ret_type->size, !func->def->base->ret_type->size));
typedef struct Memoize_ * Memoize;
Memoize memoize_ini(const Func f, const enum Kind);
void memoize_end(Memoize m);
Memoize memoize_ini(const Func f, const enum Kind kind) {
Memoize m = mp_alloc(Memoize);
vector_init(&m->v);
- m->ret_sz = f->def->ret_type->size;
+ m->ret_sz = f->def->base->ret_type->size;
m->kind = kind;
if(!GET_FLAG(f, member))
m->arg_sz = f->def->stack_depth;