Re: Eliminate op_children
Stephen McCamant [Mon, 15 Jan 2001 17:14:37 +0000 (09:14 -0800)]
Message-ID: <14947.40656.841280.551785@soda.csua.berkeley.edu>

Replace #8444 and #8445.

p4raw-id: //depot/perl@8448

ext/B/B.xs
ext/B/B/Debug.pm

index 6b00e5a..25d69e9 100644 (file)
@@ -650,6 +650,18 @@ LOGOP_other(o)
 
 MODULE = B     PACKAGE = B::LISTOP             PREFIX = LISTOP_
 
+U32
+LISTOP_children(o)
+       B::LISTOP       o
+       OP *            kid = NO_INIT
+       int             i = NO_INIT
+    CODE:
+       ST(0) = sv_newmortal();
+       i = 0;
+       for (kid = o->op_first; kid; kid = kid->op_sibling)
+           i++;
+       sv_setiv(ST(0), i);
+
 #define PMOP_pmreplroot(o)     o->op_pmreplroot
 #define PMOP_pmreplstart(o)    o->op_pmreplstart
 #define PMOP_pmnext(o)         o->op_pmnext
index 2ae1cd3..1327591 100644 (file)
@@ -42,7 +42,7 @@ sub B::LOGOP::debug {
 sub B::LISTOP::debug {
     my ($op) = @_;
     $op->B::BINOP::debug();
-    printf "\top_last\t\t0x%x\n", ${$op->last};
+    printf "\top_children\t%d\n", $op->children;
 }
 
 sub B::PMOP::debug {