From: Rafael Garcia-Suarez Date: Fri, 30 Apr 2004 11:32:03 +0000 (+0000) Subject: Follow-up to previous patch: the mX?PUSH[inup] macros X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=de4f22084117ab5700e8374e23e3cf00d62b7f48;p=p5sagit%2Fp5-mst-13.2.git Follow-up to previous patch: the mX?PUSH[inup] macros should handle 'set' magic, just like the X?PUSH[inup] counterparts. p4raw-id: //depot/perl@22757 --- diff --git a/pod/perlapi.pod b/pod/perlapi.pod index cc7fed8..b0381fe 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -2206,8 +2206,8 @@ Found in file pp.h =item mPUSHi Push an integer onto the stack. The stack must have room for this element. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. void mPUSHi(IV iv) @@ -2217,8 +2217,8 @@ Found in file pp.h =item mPUSHn Push a double onto the stack. The stack must have room for this element. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. void mPUSHn(NV nv) @@ -2228,8 +2228,8 @@ Found in file pp.h =item mPUSHp Push a string onto the stack. The stack must have room for this element. -The C indicates the length of the string. Does not handle 'set' magic. -Does not use C. See also C, C and C. +The C indicates the length of the string. Handles 'set' magic. Does +not use C. See also C, C and C. void mPUSHp(char* str, STRLEN len) @@ -2239,8 +2239,8 @@ Found in file pp.h =item mPUSHu Push an unsigned integer onto the stack. The stack must have room for this -element. Does not handle 'set' magic. Does not use C. See also -C, C and C. +element. Handles 'set' magic. Does not use C. See also C, +C and C. void mPUSHu(UV uv) @@ -2249,9 +2249,9 @@ Found in file pp.h =item mXPUSHi -Push an integer onto the stack, extending the stack if necessary. Does not -handle 'set' magic. Does not use C. See also C, C -and C. +Push an integer onto the stack, extending the stack if necessary. Handles +'set' magic. Does not use C. See also C, C and +C. void mXPUSHi(IV iv) @@ -2260,9 +2260,9 @@ Found in file pp.h =item mXPUSHn -Push a double onto the stack, extending the stack if necessary. Does not -handle 'set' magic. Does not use C. See also C, C -and C. +Push a double onto the stack, extending the stack if necessary. Handles +'set' magic. Does not use C. See also C, C and +C. void mXPUSHn(NV nv) @@ -2272,8 +2272,8 @@ Found in file pp.h =item mXPUSHp Push a string onto the stack, extending the stack if necessary. The C -indicates the length of the string. Does not handle 'set' magic. Does not -use C. See also C, C and C. +indicates the length of the string. Handles 'set' magic. Does not use +C. See also C, C and C. void mXPUSHp(char* str, STRLEN len) @@ -2283,8 +2283,8 @@ Found in file pp.h =item mXPUSHu Push an unsigned integer onto the stack, extending the stack if necessary. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. void mXPUSHu(UV uv) diff --git a/pp.h b/pp.h index 7178ae7..520f35d 100644 --- a/pp.h +++ b/pp.h @@ -231,23 +231,23 @@ C, C and C. =for apidoc Am|void|mPUSHp|char* str|STRLEN len Push a string onto the stack. The stack must have room for this element. -The C indicates the length of the string. Does not handle 'set' magic. -Does not use C. See also C, C and C. +The C indicates the length of the string. Handles 'set' magic. Does +not use C. See also C, C and C. =for apidoc Am|void|mPUSHn|NV nv Push a double onto the stack. The stack must have room for this element. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. =for apidoc Am|void|mPUSHi|IV iv Push an integer onto the stack. The stack must have room for this element. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. =for apidoc Am|void|mPUSHu|UV uv Push an unsigned integer onto the stack. The stack must have room for this -element. Does not handle 'set' magic. Does not use C. See also -C, C and C. +element. Handles 'set' magic. Does not use C. See also C, +C and C. =for apidoc Am|void|XPUSHmortal Push a new mortal SV onto the stack, extending the stack if necessary. Does @@ -256,23 +256,23 @@ C and C. =for apidoc Am|void|mXPUSHp|char* str|STRLEN len Push a string onto the stack, extending the stack if necessary. The C -indicates the length of the string. Does not handle 'set' magic. Does not -use C. See also C, C and C. +indicates the length of the string. Handles 'set' magic. Does not use +C. See also C, C and C. =for apidoc Am|void|mXPUSHn|NV nv -Push a double onto the stack, extending the stack if necessary. Does not -handle 'set' magic. Does not use C. See also C, C -and C. +Push a double onto the stack, extending the stack if necessary. Handles +'set' magic. Does not use C. See also C, C and +C. =for apidoc Am|void|mXPUSHi|IV iv -Push an integer onto the stack, extending the stack if necessary. Does not -handle 'set' magic. Does not use C. See also C, C -and C. +Push an integer onto the stack, extending the stack if necessary. Handles +'set' magic. Does not use C. See also C, C and +C. =for apidoc Am|void|mXPUSHu|UV uv Push an unsigned integer onto the stack, extending the stack if necessary. -Does not handle 'set' magic. Does not use C. See also C, -C and C. +Handles 'set' magic. Does not use C. See also C, C +and C. =cut */ @@ -304,16 +304,16 @@ C and C. #define XPUSHundef STMT_START { SvOK_off(TARG); XPUSHs(TARG); } STMT_END #define PUSHmortal(s) PUSHs(sv_newmortal()) -#define mPUSHp(p,l) STMT_START { sv_setpvn(PUSHmortal, (p), (l)); } STMT_END -#define mPUSHn(n) STMT_START { sv_setnv(PUSHmortal, (NV)(n)); } STMT_END -#define mPUSHi(i) STMT_START { sv_setiv(PUSHmortal, (IV)(i)); } STMT_END -#define mPUSHu(u) STMT_START { sv_setuv(PUSHmortal, (UV)(u)); } STMT_END +#define mPUSHp(p,l) STMT_START { sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END +#define mPUSHn(n) STMT_START { sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END +#define mPUSHi(i) STMT_START { sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END +#define mPUSHu(u) STMT_START { sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END #define XPUSHmortal(s) STMT_START { EXTEND(sp,1); PUSHmortal; } STMT_END -#define mXPUSHp(p,l) STMT_START { sv_setpvn(XPUSHmortal, (p), (l)); } STMT_END -#define mXPUSHn(n) STMT_START { sv_setnv(XPUSHmortal, (NV)(n)); } STMT_END -#define mXPUSHi(i) STMT_START { sv_setiv(XPUSHmortal, (IV)(i)); } STMT_END -#define mXPUSHu(u) STMT_START { sv_setuv(XPUSHmortal, (UV)(u)); } STMT_END +#define mXPUSHp(p,l) STMT_START { sv_setpvn_mg(XPUSHmortal, (p), (l)); } STMT_END +#define mXPUSHn(n) STMT_START { sv_setnv_mg(XPUSHmortal, (NV)(n)); } STMT_END +#define mXPUSHi(i) STMT_START { sv_setiv_mg(XPUSHmortal, (IV)(i)); } STMT_END +#define mXPUSHu(u) STMT_START { sv_setuv_mg(XPUSHmortal, (UV)(u)); } STMT_END #define SETs(s) (*sp = s) #define SETTARG STMT_START { SvSETMAGIC(TARG); SETs(TARG); } STMT_END