]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Thread detection macros overhaul
authorVincent Pit <vince@profvince.com>
Sat, 20 Sep 2008 21:05:31 +0000 (23:05 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 20 Sep 2008 21:05:31 +0000 (23:05 +0200)
Magic.xs

index 1ac63cbf205ae3ac2ed6090033cb57530e5459c5..00384fe62b8fa1eff3ecb353ed5d646c2940fb82 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
 
 #define VMG_HAS_PERL_AND(P, R, V, S) (PERL_VERSION_GE((R), (V), (S)) && (!VMG_PERL_PATCHLEVEL || (VMG_PERL_PATCHLEVEL >= (P))))
 
-/* --- Compatibility ------------------------------------------------------- */
+/* --- Threads and multiplicity -------------------------------------------- */
 
-#ifndef Newx
-# define Newx(v, n, c) New(0, v, n, c)
+#ifndef NOOP
+# define NOOP
 #endif
 
-#ifndef SvMAGIC_set
-# define SvMAGIC_set(sv, val) (SvMAGIC(sv) = (val))
+#ifndef dNOOP
+# define dNOOP
 #endif
 
-#ifndef mPUSHi
-# define mPUSHi(I) PUSHs(sv_2mortal(newSViv(I)))
+#if defined(MULTIPLICITY) || defined(PERL_IMPLICIT_CONTEXT)
+# define VMG_MULTIPLICITY 1
+# ifndef tTHX
+#  define tTHX PerlInterpreter*
+# endif
+#else
+# define VMG_MULTIPLICITY 0
 #endif
 
-#ifndef dMY_CXT
-# define dMY_CXT
+#if VMG_MULTIPLICITY && defined(dMY_CXT) && defined(MY_CXT) && defined(START_MY_CXT) && defined(MY_CXT_INIT) && defined(MY_CXT_CLONE)
+# define VMG_THREADSAFE 1
+#else
+# define VMG_THREADSAFE 0
+# undef  dMY_CXT
+# define dMY_CXT      dNOOP
 # undef  MY_CXT
 # define MY_CXT vmg_globaldata
 # undef  START_MY_CXT
 # define START_MY_CXT STATIC my_cxt_t MY_CXT;
 # undef  MY_CXT_INIT
-# define MY_CXT_INIT
+# define MY_CXT_INIT  NOOP
 # undef  MY_CXT_CLONE
-# undef  aMY_CXT
-# undef  pMY_CXT
-# define VMG_THREADSAFE 0
-#else
-# define VMG_THREADSAFE 1
+# define MY_CXT_CLONE NOOP
+#endif
+
+/* --- Compatibility ------------------------------------------------------- */
+
+#ifndef Newx
+# define Newx(v, n, c) New(0, v, n, c)
+#endif
+
+#ifndef SvMAGIC_set
+# define SvMAGIC_set(sv, val) (SvMAGIC(sv) = (val))
+#endif
+
+#ifndef mPUSHi
+# define mPUSHi(I) PUSHs(sv_2mortal(newSViv(I)))
 #endif
 
 #ifndef PERL_MAGIC_ext