-DPERL_CAPI
p4raw-id: //depot/maint-5.005/perl@3186
};
XSLockManager g_XSLock;
+CPerlObj* pPerl;
class XSLock
{
public:
- XSLock() { g_XSLock.Enter(); };
+ XSLock(CPerlObj *p) {
+ g_XSLock.Enter();
+ ::pPerl = p;
+ };
~XSLock() { g_XSLock.Leave(); };
};
-CPerlObj* pPerl;
-
+/* PERL_CAPI does its own locking in xs_handler() */
+#if defined(PERL_OBJECT) && !defined(PERL_CAPI)
#undef dXSARGS
#define dXSARGS \
- dSP; dMARK; \
- I32 ax = mark - PL_stack_base + 1; \
- I32 items = sp - mark; \
- XSLock localLock; \
- ::pPerl = pPerl
-
+ XSLock localLock(pPerl); \
+ dSP; dMARK; \
+ I32 ax = mark - PL_stack_base + 1; \
+ I32 items = sp - mark
+#endif /* PERL_OBJECT && !PERL_CAPI */
#endif
void xs_handler(CV* cv, CPerlObj* p)
{
+#ifndef NO_XSLOCKS
+ XSLock localLock(p);
+#endif
void(*func)(CV*);
SV* sv;
MAGIC* m = pPerl->Perl_mg_find((SV*)cv, '~');
-@erase $(WIN32_OBJ)
-@erase $(DLL_OBJ)
-@erase $(X2P_OBJ)
- -@erase ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp
+ -@erase ..\*$(o) ..\*.lib ..\*.exp ..\*.res *$(o) *.lib *.exp *.res
-@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
-@erase ..\x2p\*.exe ..\x2p\*.bat
-@erase *.ilk
-@erase $(WIN32_OBJ)
-@erase $(DLL_OBJ)
-@erase $(X2P_OBJ)
- -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp
+ -@erase ..\*$(o) ..\*$(a) ..\*.exp ..\*.res *$(o) *$(a) *.exp *.res
-@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
-@erase ..\x2p\*.exe ..\x2p\*.bat
-@erase *.ilk