# define MY_CXT_CLONE NOOP
#endif
+#if VMG_THREADSAFE
+# define VMG_LOCK(M) MUTEX_LOCK(M)
+# define VMG_UNLOCK(M) MUTEX_UNLOCK(M)
+#else
+# define VMG_LOCK(M)
+# define VMG_UNLOCK(M)
+#endif
+
#if VMG_THREADSAFE
STATIC SV *vmg_clone(pTHX_ SV *sv, tTHX owner) {
# define PERL_MAGIC_tied 'P'
#endif
-#ifndef MGf_COPY
-# define MGf_COPY 0
-#endif
-
-#ifndef MGf_DUP
-# define MGf_DUP 0
-#endif
-
#ifndef MGf_LOCAL
# define MGf_LOCAL 0
#endif
SV *cb_data;
SV *cb_get, *cb_set, *cb_len, *cb_clear, *cb_free;
-#if MGf_COPY
SV *cb_copy;
-#endif /* MGf_COPY */
-#if MGf_DUP
SV *cb_dup;
-#endif /* MGf_DUP */
#if MGf_LOCAL
SV *cb_local;
#endif /* MGf_LOCAL */
SvREFCNT_dec(w->cb_len);
SvREFCNT_dec(w->cb_clear);
SvREFCNT_dec(w->cb_free);
-#if MGf_COPY
SvREFCNT_dec(w->cb_copy);
-#endif /* MGf_COPY */
-#if 0 /* MGf_DUP */
+#if 0
SvREFCNT_dec(w->cb_dup);
-#endif /* MGf_DUP */
+#endif
#if MGf_LOCAL
SvREFCNT_dec(w->cb_local);
#endif /* MGf_LOCAL */
VMG_CLONE_CB(len);
VMG_CLONE_CB(clear);
VMG_CLONE_CB(free);
-#if MGf_COPY
VMG_CLONE_CB(copy);
-#endif /* MGf_COPY */
-#if MGf_DUP
VMG_CLONE_CB(dup);
-#endif /* MGf_DUP */
#if MGf_LOCAL
VMG_CLONE_CB(local);
#endif /* MGf_LOCAL */
NULL, /* len */
NULL, /* clear */
vmg_wizard_free, /* free */
-#if MGf_COPY
NULL, /* copy */
-#endif /* MGf_COPY */
-#if MGf_DUP
NULL, /* dup */
-#endif /* MGf_DUP */
#if MGf_LOCAL
NULL, /* local */
#endif /* MGf_LOCAL */
(const char *) wiz, HEf_SVKEY);
SvREFCNT_dec(data);
mg->mg_private = SIG_WIZ;
-#if MGf_COPY
if (w->cb_copy)
mg->mg_flags |= MGf_COPY;
-#endif /* MGf_COPY */
-#if 0 /* MGf_DUP */
+#if 0
if (w->cb_dup)
mg->mg_flags |= MGf_DUP;
-#endif /* MGf_DUP */
+#endif
#if MGf_LOCAL
if (w->cb_local)
mg->mg_flags |= MGf_LOCAL;
#define vmg_op_info_init(W) vmg_op_info_init(aTHX_ (W))
switch (opinfo) {
case VMG_OP_INFO_NAME:
-#if VMG_THREADSAFE
- MUTEX_LOCK(&vmg_op_name_init_mutex);
-#endif
+ VMG_LOCK(&vmg_op_name_init_mutex);
if (!vmg_op_name_init) {
OPCODE t;
for (t = 0; t < OP_max; ++t)
vmg_op_name_len[t] = strlen(PL_op_name[t]);
vmg_op_name_init = 1;
}
-#if VMG_THREADSAFE
- MUTEX_UNLOCK(&vmg_op_name_init_mutex);
-#endif
+ VMG_UNLOCK(&vmg_op_name_init_mutex);
break;
case VMG_OP_INFO_OBJECT: {
dMY_CXT;
return ret;
}
-#if MGf_COPY
STATIC int vmg_svt_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *key,
# if VMG_HAS_PERL_MAINT(5, 11, 0, 33256) || VMG_HAS_PERL(5, 12, 0)
I32 keylen
return ret;
}
-#endif /* MGf_COPY */
-#if 0 /* MGf_DUP */
+#if 0
STATIC int vmg_svt_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *param) {
return 0;
}
-#endif /* MGf_DUP */
+#endif
#if MGf_LOCAL
STATIC int vmg_svt_local(pTHX_ SV *nsv, MAGIC *mg) {
CODE:
dMY_CXT;
- if (items != 7
-#if MGf_COPY
- + 1
-#endif /* MGf_COPY */
-#if MGf_DUP
- + 1
-#endif /* MGf_DUP */
+ if (items != 9
#if MGf_LOCAL
+ 1
#endif /* MGf_LOCAL */
VMG_SET_SVT_CB(ST(i++), len);
VMG_SET_SVT_CB(ST(i++), clear);
VMG_SET_SVT_CB(ST(i++), free);
-#if MGf_COPY
VMG_SET_SVT_CB(ST(i++), copy);
-#endif /* MGf_COPY */
-#if MGf_DUP
/* VMG_SET_SVT_CB(ST(i++), dup); */
i++;
t->svt_dup = NULL;
w->cb_dup = NULL;
-#endif /* MGf_DUP */
#if MGf_LOCAL
VMG_SET_SVT_CB(ST(i++), local);
#endif /* MGf_LOCAL */