X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/edba15b0ccf22f00ea6d7cc58eb2c173437a09cc..3b17061e8900d0a8d6eb91ef692333d2c3b2c5e9:/pp.h diff --git a/pp.h b/pp.h index 945d1e5..d3d8f98 100644 --- a/pp.h +++ b/pp.h @@ -56,45 +56,56 @@ Refetch the stack pointer. Used after a callback. See L. #define TARG targ #if defined(DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) -#define PUSHMARK(p) \ + +# define PUSHMARK(p) \ STMT_START { \ I32 * mark_stack_entry; \ - if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) == PL_markstack_max)) \ + if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) \ + == PL_markstack_max)) \ mark_stack_entry = markstack_grow(); \ *mark_stack_entry = (I32)((p) - PL_stack_base); \ - DEBUG_s(PerlIO_printf(Perl_debug_log, "MARK push %p %d\n", \ - PL_markstack_ptr, *mark_stack_entry)); \ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ + "MARK push %p %"IVdf"\n", \ + PL_markstack_ptr, (IV)*mark_stack_entry))); \ } STMT_END -#define TOPMARK \ + +# define TOPMARK \ ({ \ - DEBUG_s(PerlIO_printf(Perl_debug_log, "MARK top %p %d\n", \ - PL_markstack_ptr, *PL_markstack_ptr)); \ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ + "MARK top %p %"IVdf"\n", \ + PL_markstack_ptr, (IV)*PL_markstack_ptr))); \ *PL_markstack_ptr; \ }) -#define POPMARK \ + +# define POPMARK \ ({ \ - DEBUG_s(PerlIO_printf(Perl_debug_log, "MARK pop %p %d\n", \ - (PL_markstack_ptr-1), *(PL_markstack_ptr-1))); \ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ + "MARK pop %p %"IVdf"\n", \ + (PL_markstack_ptr-1), (IV)*(PL_markstack_ptr-1)))); \ assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");\ *PL_markstack_ptr--; \ }) -#define INCMARK \ + +# define INCMARK \ ({ \ - DEBUG_s(PerlIO_printf(Perl_debug_log, "MARK inc %p %d\n", \ - (PL_markstack_ptr+1), *(PL_markstack_ptr+1))); \ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ + "MARK inc %p %"IVdf"\n", \ + (PL_markstack_ptr+1), (IV)*(PL_markstack_ptr+1)))); \ *PL_markstack_ptr++; \ }) + #else -#define PUSHMARK(p) \ + +# define PUSHMARK(p) \ STMT_START { \ I32 * mark_stack_entry; \ if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) == PL_markstack_max)) \ mark_stack_entry = markstack_grow(); \ *mark_stack_entry = (I32)((p) - PL_stack_base); \ } STMT_END -#define TOPMARK (*PL_markstack_ptr) -#define POPMARK (*PL_markstack_ptr--) -#define INCMARK (*PL_markstack_ptr++) +# define TOPMARK (*PL_markstack_ptr) +# define POPMARK (*PL_markstack_ptr--) +# define INCMARK (*PL_markstack_ptr++) #endif #define dSP SV **sp = PL_stack_sp @@ -377,7 +388,7 @@ Does not use C. See also C>, C> and C>. STMT_START { \ IV TARGi_iv = i; \ if (LIKELY( \ - ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST)) == SVt_IV) \ + ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST|SVf_IVisUV)) == SVt_IV) \ & (do_taint ? !TAINT_get : 1))) \ { \ /* Cheap SvIOK_only(). \ @@ -399,7 +410,7 @@ Does not use C. See also C>, C> and C>. STMT_START { \ UV TARGu_uv = u; \ if (LIKELY( \ - ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST)) == SVt_IV) \ + ((SvFLAGS(TARG) & (SVTYPEMASK|SVf_THINKFIRST|SVf_IVisUV)) == SVt_IV) \ & (do_taint ? !TAINT_get : 1) \ & (TARGu_uv <= (UV)IV_MAX))) \ { \ @@ -570,7 +581,7 @@ Does not use C. See also C>, C> and C>. dSP; \ SV *tmpsv; \ SV *arg= *sp; \ - int gimme = GIMME_V; \ + U8 gimme = GIMME_V; \ if (UNLIKELY(SvAMAGIC(arg) && \ (tmpsv = amagic_call(arg, &PL_sv_undef, meth, \ AMGf_want_list | AMGf_noright \ @@ -603,7 +614,7 @@ Does not use C. See also C>, C> and C>. while (jump_o->op_type == OP_NULL) \ jump_o = jump_o->op_next; \ assert(jump_o->op_type == OP_ENTERSUB); \ - POPMARK; \ + (void)POPMARK; \ return jump_o->op_next; \ } \ return NORMAL; \