"B::PVNV",
"B::PVMG",
"B::BM",
+ "B::GV",
"B::PVLV",
"B::AV",
"B::HV",
"B::CV",
- "B::GV",
"B::FM",
"B::IO",
};
{
for(; o; o = o->op_next) {
SV *opsv;
- if (o->op_seq == 0)
+ if (o->op_opt == 0)
break;
- o->op_seq = 0;
+ o->op_opt = 0;
opsv = sv_newmortal();
sv_setiv(newSVrv(opsv, cc_opclassname(aTHX_ (OP*)o)), PTR2IV(o));
XPUSHs(opsv);
SP = oplist(aTHX_ cPMOPo->op_pmreplstart, SP);
continue;
case OP_SORT:
- if (o->op_flags & (OPf_STACKED|OPf_SPECIAL)) {
+ if (o->op_flags & OPf_STACKED && o->op_flags & OPf_SPECIAL) {
OP *kid = cLISTOPo->op_first->op_sibling; /* pass pushmark */
kid = kUNOP->op_first; /* pass rv2gv */
kid = kUNOP->op_first; /* pass leave */
- SP = oplist(aTHX_ kid, SP);
+ SP = oplist(aTHX_ kid->op_next, SP);
}
continue;
}
#define OP_desc(o) PL_op_desc[o->op_type]
#define OP_targ(o) o->op_targ
#define OP_type(o) o->op_type
-#define OP_seq(o) o->op_seq
+#define OP_opt(o) o->op_opt
+#define OP_static(o) o->op_static
#define OP_flags(o) o->op_flags
#define OP_private(o) o->op_private
OP_type(o)
B::OP o
-U16
-OP_seq(o)
+U8
+OP_opt(o)
+ B::OP o
+
+U8
+OP_static(o)
B::OP o
U8
SvTYPE(sv)
B::SV sv
+#define object_2svref(sv) sv
+#define SVREF SV *
+
+SVREF
+object_2svref(sv)
+ B::SV sv
+
MODULE = B PACKAGE = B::SV PREFIX = Sv
U32
XPUSHs(make_sv_object(aTHX_ sv_newmortal(), svp[i]));
}
+void
+AvARRAYelt(av, idx)
+ B::AV av
+ int idx
+ PPCODE:
+ if (idx >= 0 && AvFILL(av) >= 0 && idx <= AvFILL(av))
+ XPUSHs(make_sv_object(aTHX_ sv_newmortal(), (AvARRAY(av)[idx])));
+ else
+ XPUSHs(make_sv_object(aTHX_ sv_newmortal(), NULL));
+
+
MODULE = B PACKAGE = B::AV
U8