Chip noticed that the intended optionality of the 'IV' was
[p5sagit/p5-mst-13.2.git] / ext / B / B.xs
index 111116a..db7b8d3 100644 (file)
@@ -95,7 +95,8 @@ cc_opclass(pTHX_ OP *o)
        return ((o->op_private & OPpASSIGN_BACKWARDS) ? OPc_UNOP : OPc_BINOP);
 
 #ifdef USE_ITHREADS
-    if (o->op_type == OP_GV || o->op_type == OP_GVSV || o->op_type == OP_AELEMFAST)
+    if (o->op_type == OP_GV || o->op_type == OP_GVSV ||
+       o->op_type == OP_AELEMFAST || o->op_type == OP_RCATLINE)
        return OPc_PADOP;
 #endif
 
@@ -446,6 +447,7 @@ BOOT:
 
 #define B_main_cv()    PL_main_cv
 #define B_init_av()    PL_initav
+#define B_check_av()   PL_checkav_save
 #define B_begin_av()   PL_beginav_save
 #define B_end_av()     PL_endav
 #define B_main_root()  PL_main_root
@@ -463,6 +465,9 @@ B::AV
 B_init_av()
 
 B::AV
+B_check_av()
+
+B::AV
 B_begin_av()
 
 B::AV
@@ -621,14 +626,6 @@ cchar(sv)
 void
 threadsv_names()
     PPCODE:
-#ifdef USE_5005THREADS
-       int i;
-       STRLEN len = strlen(PL_threadsv_names);
-
-       EXTEND(sp, len);
-       for (i = 0; i < len; i++)
-           PUSHs(sv_2mortal(newSVpvn(&PL_threadsv_names[i], 1)));
-#endif
 
 
 #define OP_next(o)     o->op_next
@@ -786,11 +783,11 @@ PMOP_pmoffset(o)
 
 #endif
 
-U16
+U32
 PMOP_pmflags(o)
        B::PMOP         o
 
-U16
+U32
 PMOP_pmpermflags(o)
        B::PMOP         o
 
@@ -822,10 +819,10 @@ SVOP_gv(o)
        B::SVOP o
 
 #define PADOP_padix(o) o->op_padix
-#define PADOP_sv(o)    (o->op_padix ? PL_curpad[o->op_padix] : Nullsv)
+#define PADOP_sv(o)    (o->op_padix ? PAD_SVl(o->op_padix) : Nullsv)
 #define PADOP_gv(o)    ((o->op_padix \
-                         && SvTYPE(PL_curpad[o->op_padix]) == SVt_PVGV) \
-                        ? (GV*)PL_curpad[o->op_padix] : Nullgv)
+                         && SvTYPE(PAD_SVl(o->op_padix)) == SVt_PVGV) \
+                        ? (GV*)PAD_SVl(o->op_padix) : Nullgv)
 
 MODULE = B     PACKAGE = B::PADOP              PREFIX = PADOP_
 
@@ -1073,6 +1070,15 @@ MODULE = B       PACKAGE = B::MAGIC      PREFIX = Mg
 B::MAGIC
 MgMOREMAGIC(mg)
        B::MAGIC        mg
+     CODE:
+       if( MgMOREMAGIC(mg) ) {
+           RETVAL = MgMOREMAGIC(mg);
+       }
+       else {
+           XSRETURN_UNDEF;
+       }
+     OUTPUT:
+       RETVAL
 
 U16
 MgPRIVATE(mg)
@@ -1407,6 +1413,10 @@ B::CV
 CvOUTSIDE(cv)
        B::CV   cv
 
+U32
+CvOUTSIDE_SEQ(cv)
+       B::CV   cv
+
 void
 CvXSUB(cv)
        B::CV   cv