]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix memoize
authorfennecdjay <astor.jeremie@wanadoo.fr>
Mon, 1 Apr 2019 16:27:58 +0000 (18:27 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Mon, 1 Apr 2019 16:27:58 +0000 (18:27 +0200)
include/memoize.h
src/emit/memoize.c

index f6ac0a09bed8b1523116b68a1156e21b949ead72..a5a8e7e26ed336d6aa2d7a434c96ccfd657c6931 100644 (file)
@@ -5,7 +5,7 @@
 #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);
index f6d0f407cccf079f422cf21fe17a8e2b467ed2bb..2061be56893b54f0a6be4a89b160dd36500f7038 100644 (file)
@@ -44,7 +44,7 @@ static void(*mreturn[])(m_bit*, const m_bit*, const m_uint) =
 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;