- MY_CXT_INIT;
-#if I_THREADSAFE
- MY_CXT.tbl = ptable_new();
- MY_CXT.owner = aTHX;
-#endif
- MY_CXT.map = ptable_new();
- MY_CXT.linestr = NULL;
-
- indirect_old_ck_const = PL_check[OP_CONST];
- PL_check[OP_CONST] = MEMBER_TO_FPTR(indirect_ck_const);
- indirect_old_ck_rv2sv = PL_check[OP_RV2SV];
- PL_check[OP_RV2SV] = MEMBER_TO_FPTR(indirect_ck_rv2sv);
- indirect_old_ck_padany = PL_check[OP_PADANY];
- PL_check[OP_PADANY] = MEMBER_TO_FPTR(indirect_ck_padany);
- indirect_old_ck_scope = PL_check[OP_SCOPE];
- PL_check[OP_SCOPE] = MEMBER_TO_FPTR(indirect_ck_scope);
- indirect_old_ck_lineseq = PL_check[OP_LINESEQ];
- PL_check[OP_LINESEQ] = MEMBER_TO_FPTR(indirect_ck_scope);
-
- indirect_old_ck_method = PL_check[OP_METHOD];
- PL_check[OP_METHOD] = MEMBER_TO_FPTR(indirect_ck_method);
- indirect_old_ck_entersub = PL_check[OP_ENTERSUB];
- PL_check[OP_ENTERSUB] = MEMBER_TO_FPTR(indirect_ck_entersub);
+ PERL_HASH(indirect_hash, __PACKAGE__, __PACKAGE_LEN__);
+
+ stash = gv_stashpvn(__PACKAGE__, __PACKAGE_LEN__, 1);
+ newCONSTSUB(stash, "I_THREADSAFE", newSVuv(I_THREADSAFE));
+ newCONSTSUB(stash, "I_FORKSAFE", newSVuv(I_FORKSAFE));
+
+ indirect_ck_replace(OP_CONST, indirect_ck_const, &indirect_old_ck_const);
+ indirect_ck_replace(OP_RV2SV, indirect_ck_rv2sv, &indirect_old_ck_rv2sv);
+ indirect_ck_replace(OP_PADANY, indirect_ck_padany, &indirect_old_ck_padany);
+ indirect_ck_replace(OP_SCOPE, indirect_ck_scope, &indirect_old_ck_scope);
+ indirect_ck_replace(OP_LINESEQ, indirect_ck_scope, &indirect_old_ck_lineseq);
+
+ indirect_ck_replace(OP_METHOD, indirect_ck_method,
+ &indirect_old_ck_method);
+ indirect_ck_replace(OP_METHOD_NAMED, indirect_ck_method_named,
+ &indirect_old_ck_method_named);
+ indirect_ck_replace(OP_ENTERSUB, indirect_ck_entersub,
+ &indirect_old_ck_entersub);