Acme-Goto-Line
view release on metacpan or search on metacpan
return 0;
if(op->op_type == OP_NEXTSTATE) {
COP* cop = (COP*) op;
// printf("Matching line %d == %d \n", cop->cop_line, line);
if(cop->cop_line == line) {
// printf("Matched line %d\n", line);
PL_op = op;
return 1;
}
}
if(op && op->op_flags & OPf_KIDS) {
UNOP* uop = (UNOP*) op;
OP* kid;
for(kid = uop->op_first; kid; kid = kid->op_sibling) {
IV ret = acme_goto_line_walkop(kid, line);
if(ret)
return 1;
}
}
return 0;
}
} else {
op = CvROOT(caller);
}
acme_goto_line_walkop(op, line);
}
OP* acme_goto_line_newgoto(aTHX_) {
dSP;
IV line;
if(PL_op->op_flags & OPf_STACKED) {
SV* top = POPs;
line = SvIV(top);
PUSHs(top);
} else {
char* label = cPVOP->op_pv;
SV* temp = newSVpv(label,0);
line = SvIV(temp);
SvREFCNT_dec(temp);
}
# define PTR2ul(p) INT2PTR(unsigned long,p)
#endif
#endif /* !INT2PTR */
#ifndef boolSV
# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
#endif
#ifndef gv_stashpvn
# define gv_stashpvn(str,len,flags) gv_stashpv(str,flags)
#endif
#ifndef newSVpvn
# define newSVpvn(data,len) ((len) ? newSVpv ((data), (len)) : newSVpv ("", 0))
#endif
#ifndef newRV_inc
/* Replace: 1 */
# define newRV_inc(sv) newRV(sv)
/* Replace: 0 */
( run in 3.795 seconds using v1.01-cache-2.11-cpan-94b05bcf43c )