SV *type_pkg;
SV *type_meth;
#endif /* !MULTIPLICITY */
- OP *(*pp_padsv)(pTHX);
+ OP *(*old_pp_padsv)(pTHX);
} lt_op_info;
-STATIC void lt_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV *type_meth, OP *(*pp_padsv)(pTHX)) {
+STATIC void lt_map_store(pTHX_ const OP *o, SV *orig_pkg, SV *type_pkg, SV *type_meth, OP *(*old_pp_padsv)(pTHX)) {
#define lt_map_store(O, OP, TP, TM, PP) lt_map_store(aTHX_ (O), (OP), (TP), (TM), (PP))
lt_op_info *oi;
oi->type_meth = type_meth;
#endif /* !MULTIPLICITY */
- oi->pp_padsv = pp_padsv;
+ oi->old_pp_padsv = old_pp_padsv;
#ifdef USE_ITHREADS
MUTEX_UNLOCK(<_op_map_mutex);
LEAVE;
}
- return CALL_FPTR(oi.pp_padsv)(aTHX);
+ return CALL_FPTR(oi.old_pp_padsv)(aTHX);
}
return CALL_FPTR(PL_ppaddr[OP_PADSV])(aTHX);
lt_initialized = 0;
}
-STATIC lt_setup(pTHX) {
+STATIC void lt_setup(pTHX) {
#define lt_setup() lt_setup(aTHX)
if (lt_initialized)
return;
- MY_CXT_INIT;
+ {
+ MY_CXT_INIT;
#if LT_THREADSAFE
- MY_CXT.tbl = ptable_new();
- MY_CXT.owner = aTHX;
+ MY_CXT.tbl = ptable_new();
+ MY_CXT.owner = aTHX;
#endif
- MY_CXT.pp_padsv_saved = 0;
- MY_CXT.default_meth = newSVpvn("TYPEDSCALAR", 11);
- SvREADONLY_on(MY_CXT.default_meth);
+ MY_CXT.pp_padsv_saved = 0;
+ MY_CXT.default_meth = newSVpvn("TYPEDSCALAR", 11);
+ SvREADONLY_on(MY_CXT.default_meth);
+ }
lt_old_ck_padany = PL_check[OP_PADANY];
PL_check[OP_PADANY] = MEMBER_TO_FPTR(lt_ck_padany);
PROTOTYPES: ENABLE
-BOOT:
-{
+BOOT:
+{
if (!lt_booted++) {
HV *stash;
ptable *t;
int *level;
SV *cloned_default_meth;
-CODE:
+PPCODE:
{
my_cxt_t ud;
dMY_CXT;
SAVEDESTRUCTOR_X(lt_thread_cleanup, level);
ENTER_with_name("sub");
}
+ XSRETURN(0);
#endif