#define POPp (SvPVx(POPs, na))
#define POPn (SvNVx(POPs))
#define POPi ((IV)SvIVx(POPs))
-#define POPu ((UV)SvIVx(POPs))
+#define POPu ((UV)SvUVx(POPs))
#define POPl ((long)SvIVx(POPs))
#define TOPs (*sp)
#define TOPp (SvPV(TOPs, na))
#define TOPn (SvNV(TOPs))
#define TOPi ((IV)SvIV(TOPs))
-#define TOPu ((UV)SvIV(TOPs))
+#define TOPu ((UV)SvUV(TOPs))
#define TOPl ((long)SvIV(TOPs))
/* Go to some pains in the rare event that we must extend the stack. */
-#define EXTEND(p,n) STMT_START { if (stack_max - p < (n)) { \
- sp = stack_grow(sp,p, (int) (n)); \
+#define EXTEND(p,n) STMT_START { if (stack_max - p < (n)) { \
+ sp = stack_grow(sp,p, (int) (n)); \
} } STMT_END
/* Same thing, but update mark register too. */
-#define MEXTEND(p,n) STMT_START {if (stack_max - p < (n)) { \
- int markoff = mark - stack_base; \
- sp = stack_grow(sp,p,(int) (n)); \
- mark = stack_base + markoff; \
+#define MEXTEND(p,n) STMT_START {if (stack_max - p < (n)) { \
+ int markoff = mark - stack_base; \
+ sp = stack_grow(sp,p,(int) (n)); \
+ mark = stack_base + markoff; \
} } STMT_END
#define PUSHs(s) (*++sp = (s))
#define dPOPPOPssrl SV *right = POPs; SV *left = POPs
#define dPOPPOPnnrl double right = POPn; double left = POPn
#define dPOPPOPiirl IV right = POPi; IV left = POPi
-#define dPOPPOPuurl UV right = POPu; UV left = POPu
#define dPOPTOPssrl SV *right = POPs; SV *left = TOPs
#define dPOPTOPnnrl double right = POPn; double left = TOPn
#define dPOPTOPiirl IV right = POPi; IV left = TOPi
-#define dPOPTOPuurl UV right = POPu; UV left = TOPu
#define RETPUSHYES RETURNX(PUSHs(&sv_yes))
#define RETPUSHNO RETURNX(PUSHs(&sv_no))
sp = stack_sp = stack_base + AvFILL(t); \
curstack = t;
+#define EXTEND_MORTAL(n) \
+ STMT_START { \
+ if (tmps_ix + (n) >= tmps_max) \
+ Renew(tmps_stack, tmps_max = tmps_ix + (n) + 1, SV*); \
+ } STMT_END
+
#ifdef OVERLOAD
#define AMGf_noright 1