global_State *g = G(L);
BCReg slots;
setcframe_pc(cf, pc);
- slots = cur_topslot(pt, pc, cframe_multres(cf));
+ slots = cur_topslot(pt, pc, cframe_multres_n(cf));
L->top = L->base + slots; /* Fix top. */
#if LJ_HASJIT
{
#define CFRAME_OFS_MULTRES (5*4)
#define CFRAME_SIZE (12*4)
#define CFRAME_SIZE_JIT CFRAME_SIZE
+#define CFRAME_SHIFT_MULTRES 0
#elif LJ_TARGET_X64
#if _WIN64
#define CFRAME_OFS_PREV (13*8)
#define CFRAME_OFS_MULTRES (21*4)
#define CFRAME_SIZE (10*8)
#define CFRAME_SIZE_JIT (CFRAME_SIZE + 9*16 + 4*8)
+#define CFRAME_SHIFT_MULTRES 0
#else
#define CFRAME_OFS_PREV (4*8)
#define CFRAME_OFS_PC (7*4)
#define CFRAME_OFS_MULTRES (1*4)
#define CFRAME_SIZE (10*8)
#define CFRAME_SIZE_JIT (CFRAME_SIZE + 16)
+#define CFRAME_SHIFT_MULTRES 0
#endif
#elif LJ_TARGET_PPCSPE
#define CFRAME_OFS_ERRF 28
#define CFRAME_OFS_MULTRES 8
#define CFRAME_SIZE 176
#define CFRAME_SIZE_JIT CFRAME_SIZE
+#define CFRAME_SHIFT_MULTRES 3
#else
#error "Missing CFRAME_* definitions for this architecture"
#endif
#define cframe_nres(cf) (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES))
#define cframe_prev(cf) (*(void **)(((char *)(cf))+CFRAME_OFS_PREV))
#define cframe_multres(cf) (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES))
+#define cframe_multres_n(cf) (cframe_multres((cf)) >> CFRAME_SHIFT_MULTRES)
#define cframe_L(cf) \
(&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
#define cframe_pc(cf) \