Algorithm-AM
view release on metacpan or search on metacpan
15430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466
for
(;;) {
/* we may be in a higher stacklevel, so dig down deeper */
while
(cxix < 0 && top_si->si_type != PERLSI_MAIN) {
top_si = top_si->si_prev;
ccstack = top_si->si_cxstack;
cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix);
}
if
(cxix < 0)
return
NULL;
/*
caller
() should not report the automatic calls to
&DB::sub
*/
if
(PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 &&
ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
level++;
if
(!level--)
break;
cxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
}
cx =
&ccstack
[cxix];
if
(dbcxp)
*dbcxp
= cx;
if
(CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
/* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the
field below is
defined
for
any cx. */
/*
caller
() should not report the automatic calls to
&DB::sub
*/
if
(PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
cx =
&ccstack
[dbcxix];
}
return
cx;
}
# endif
#endif /* caller_cx */
#endif /* 5.6.0 */
( run in 0.764 second using v1.01-cache-2.11-cpan-95122f20152 )