static void fake_entertry() { PERL_CONTEXT *cx; I32 gimme; dCTXP; PL_op = (OP*)&dummy_op; gimme = GIMME_V; ENTER; SAVETMPS; cx->blk_sub.retop = aTHX_ Nullop; Perl_push_return(aTHX_ Nullop); PUSHBLOCK(cx, (CXt_EVAL|CXp_TRYBLOCK), PL_stack_sp); PUSHEVAL(cx, 0, 0); PL_eval_root = PL_op; PL_in_eval = EVAL_INEVAL; sv_setpvn(ERRSV, "", 0); } static void fake_leavetry(I32 oldscope) { dCTXP; if (PL_scopestack_ix > oldscope) { PERL_CONTEXT *cx; PMOP *newpm; I32 optype; SV **newsp; I32 gimme; POPBLOCK(cx,newpm); POPEVAL(cx); Perl_pop_return(aTHX); PL_curpm = newpm; } FREETMPS; LEAVE; }