((f_gack)code->native_func)(t, (shred->reg - t->size), shred);
POP_REG(shred, t->size);
} else {
- prepare_call(shred, instr->m_val2);
+ const m_uint offset = ((m_uint)shred->mem - SIZEOF_REG) != ((m_uint)shred + sizeof(struct VM_Shred_)) ?
+ instr->m_val2 : 0;
+ prepare_call(shred, offset);
shred->code = code;
POP_REG(shred, SZ_INT*2);
}
sporkmemberfptr:
for(m_uint i = 0; i < VAL; i+= SZ_INT)
*(m_uint*)(child->reg + i) = *(m_uint*)(reg - VAL + i);
- *(m_uint*)(child->reg + VAL) = a.obj;
+ *(M_Object*)(child->reg + VAL) = a.obj;
*(m_uint*)(child->reg + VAL + SZ_INT) = *(m_uint*)(reg + VAL - SZ_INT*2);
child->reg += VAL + SZ_INT*2;
DISPATCH()