eAllocWord,
eAllocWord2,
eAllocWord3,
- eAllocWord4,
eint_plus,
eint_minus,
eint_mul,
#define AllocWord (f_instr)eAllocWord
#define AllocWord2 (f_instr)eAllocWord2
#define AllocWord3 (f_instr)eAllocWord3
-#define AllocWord4 (f_instr)eAllocWord4
#define int_plus (f_instr)eint_plus
#define int_minus (f_instr)eint_minus
#define int_mul (f_instr)eint_mul
AllocWord
AllocWord2
AllocWord3
-AllocWord4
int_plus
int_minus
int_mul
static const f_instr dotstatic[] = { DotStatic, DotStatic2, DotStatic3, RegPushImm };
static const f_instr dotmember[] = { DotMember, DotMember2, DotMember3, DotMember4 };
static const f_instr allocmember[] = { RegPushImm, RegPushImm2, RegPushImm3, AllocMember4 };
-static const f_instr allocword[] = { AllocWord, AllocWord2, AllocWord3, AllocWord4 };
+static const f_instr allocword[] = { AllocWord, AllocWord2, AllocWord3, RegPushMem4 };
ANN static inline Exp this_exp(const Emitter emit, const Type t, const loc_t pos) {
const Exp exp = new_exp_prim_id(emit->gwion->mp, insert_symbol("this"),
&®pushme, &®pushmaybe,
&&funcreturn,
&&_goto,
- &&allocint, &&allocfloat, &&allocother, &&allocaddr,
+ &&allocint, &&allocfloat, &&allocother,
&&intplus, &&intminus, && intmul, &&intdiv, &&intmod,
// int relationnal
&&inteq, &&intne, &&intand, &&intor,
*(m_uint*)(reg+i) = (*(m_uint*)(mem+instr->m_val+i) = 0);
reg += instr->m_val2;
DISPATCH()
-allocaddr:
- *(m_bit**)reg = mem + instr->m_val;
- reg += SZ_INT;
- DISPATCH()
+
intplus: INT_OP(+)
intminus: INT_OP(-)
intmul: INT_OP(*)
reg -= SZ_FLOAT - SZ_INT;
*(m_int*)(reg-SZ_INT) = (m_int)*(m_float*)(reg-SZ_INT);
DISPATCH()
-
timeadv:
reg -= SZ_FLOAT;
shredule(s, shred, *(m_float*)(reg-SZ_FLOAT));