summaryrefslogtreecommitdiff
path: root/ext/Devel/PPPort/PPPort.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/Devel/PPPort/PPPort.pm')
-rw-r--r--ext/Devel/PPPort/PPPort.pm80
1 files changed, 68 insertions, 12 deletions
diff --git a/ext/Devel/PPPort/PPPort.pm b/ext/Devel/PPPort/PPPort.pm
index ac035d6694..68a5b06f77 100644
--- a/ext/Devel/PPPort/PPPort.pm
+++ b/ext/Devel/PPPort/PPPort.pm
@@ -143,9 +143,11 @@ in older Perl releases:
dTHXa
dTHXoa
dUNDERBAR
+ END_EXTERN_C
ERRSV
eval_pv
eval_sv
+ EXTERN_C
get_av
get_cv
get_hv
@@ -183,6 +185,7 @@ in older Perl releases:
mXPUSHp
mXPUSHu
MY_CXT
+ MY_CXT_CLONE
MY_CXT_INIT
newCONSTSUB
newRV_inc
@@ -196,6 +199,7 @@ in older Perl releases:
NVgf
NVTYPE
PERL_BCDVERSION
+ PERL_GCC_BRACE_GROUPS_FORBIDDEN
PERL_INT_MAX
PERL_INT_MIN
PERL_LONG_MAX
@@ -305,7 +309,10 @@ in older Perl releases:
PUSHmortal
PUSHu
SAVE_DEFSV
+ START_EXTERN_C
START_MY_CXT
+ STMT_END
+ STMT_START
sv_2pv_nolen
sv_2pvbyte
sv_2uv
@@ -866,7 +873,7 @@ require DynaLoader;
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.02 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
@@ -1300,9 +1307,11 @@ CvPADLIST|||
CvSTASH|||
CvWEAKOUTSIDE|||
DEFSV|5.004050||p
+END_EXTERN_C|5.005000||p
ENTER|||
ERRSV|5.004050||p
EXTEND|||
+EXTERN_C|5.005000||p
FREETMPS|||
GIMME_V||5.004000|n
GIMME|||n
@@ -1343,6 +1352,7 @@ IVdf|5.006000||p
LEAVE|||
LVRET|||
MARK|||
+MY_CXT_CLONE|5.009002||p
MY_CXT_INIT|5.007003||p
MY_CXT|5.007003||p
MoveD|5.009002||p
@@ -1379,6 +1389,7 @@ PAD_SET_CUR|||
PAD_SVl|||
PAD_SV|||
PERL_BCDVERSION|5.009002||p
+PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
PERL_INT_MAX|5.004000||p
PERL_INT_MIN|5.004000||p
PERL_LONG_MAX|5.004000||p
@@ -1452,34 +1463,34 @@ PL_compiling|5.004050||p
PL_copline|5.005000||p
PL_curcop|5.004050||p
PL_curstash|5.004050||p
-PL_debstash|||p
+PL_debstash|5.004050||p
PL_defgv|5.004050||p
-PL_diehook|||p
+PL_diehook|5.004050||p
PL_dirty|5.004050||p
PL_dowarn|||pn
-PL_errgv|||p
+PL_errgv|5.004050||p
PL_hexdigit|5.005000||p
PL_hints|5.005000||p
PL_last_in_gv|||n
PL_modglobal||5.005000|n
PL_na|5.004050||pn
-PL_no_modify|||p
+PL_no_modify|5.006000||p
PL_ofs_sv|||n
-PL_perl_destruct_level|||p
+PL_perl_destruct_level|5.004050||p
PL_perldb|5.004050||p
-PL_ppaddr|||p
+PL_ppaddr|5.006000||p
PL_rsfp_filters|5.004050||p
PL_rsfp|5.004050||p
PL_rs|||n
-PL_stack_base|||p
-PL_stack_sp|||p
+PL_stack_base|5.004050||p
+PL_stack_sp|5.004050||p
PL_stdingv|5.004050||p
-PL_sv_arenaroot|||p
+PL_sv_arenaroot|5.004050||p
PL_sv_no|5.004050||pn
PL_sv_undef|5.004050||pn
PL_sv_yes|5.004050||pn
-PL_tainted|||p
-PL_tainting|||p
+PL_tainted|5.004050||p
+PL_tainting|5.004050||p
POPi|||n
POPl|||n
POPn|||n
@@ -1533,7 +1544,10 @@ SAVETMPS|||
SAVE_DEFSV|5.004050||p
SPAGAIN|||
SP|||
+START_EXTERN_C|5.005000||p
START_MY_CXT|5.007003||p
+STMT_END|||p
+STMT_START|||p
ST|||
SVt_IV|||
SVt_NV|||
@@ -3915,6 +3929,40 @@ typedef NVTYPE NV;
# endif
#endif /* !INT2PTR */
+
+#undef START_EXTERN_C
+#undef END_EXTERN_C
+#undef EXTERN_C
+#ifdef __cplusplus
+# define START_EXTERN_C extern "C" {
+# define END_EXTERN_C }
+# define EXTERN_C extern "C"
+#else
+# define START_EXTERN_C
+# define END_EXTERN_C
+# define EXTERN_C extern
+#endif
+
+#ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
+# if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC)
+# define PERL_GCC_BRACE_GROUPS_FORBIDDEN
+# endif
+#endif
+
+#undef STMT_START
+#undef STMT_END
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
+# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */
+# define STMT_END )
+#else
+# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
+# define STMT_START if (1)
+# define STMT_END else (void)0
+# else
+# define STMT_START do
+# define STMT_END while (0)
+# endif
+#endif
#ifndef boolSV
# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
#endif
@@ -4297,6 +4345,13 @@ DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv)
Zero(my_cxtp, 1, my_cxt_t); \
sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+/* Clones the per-interpreter data. */
+#define MY_CXT_CLONE \
+ dMY_CXT_SV; \
+ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
+ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+
/* This macro must be used to access members of the my_cxt_t structure.
* e.g. MYCXT.some_data */
#define MY_CXT (*my_cxtp)
@@ -4316,6 +4371,7 @@ DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv)
#define dMY_CXT_SV dNOOP
#define dMY_CXT dNOOP
#define MY_CXT_INIT NOOP
+#define MY_CXT_CLONE NOOP
#define MY_CXT my_cxt
#define pMY_CXT void