1 === lib/Devel/BeginLift.xs
2 ==================================================================
3 --- lib/Devel/BeginLift.xs (revision 80093)
4 +++ lib/Devel/BeginLift.xs (local)
8 return newGVOP(OP_GV, 0, (GV*)sv);
10 + if (SvROK(sv) && sv_derived_from(sv, "B::OP")) {
11 + /* taken from B's typemap file, T_OP_OBJ */
12 + return INT2PTR(OP *,SvIV((SV *)SvRV(sv)));
15 return newSVOP(OP_CONST, 0, sv);
17 /* this bit not lifted, handles the 'sub doesn't return stuff' case
19 ==================================================================
20 --- t/generate.t (revision 80093)
21 +++ t/generate.t (local)
28 + plan skip_all => "B::Generate required" unless eval { require B::Generate };
33 + return B::SVOP->new("const", 0, 42);
36 +use Devel::BeginLift qw(foo);
38 +sub bar { 7 + foo() }
40 +is( bar(), 49, "optree injected" );