for (i = 0; i <= (I32) HvMAX(stash); i++) {
const HE *entry;
for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
- const GV * const gv = (const GV *)HeVAL(entry);
+ GV * gv = (GV *)HeVAL(entry);
+ if (SvROK(gv) && SvTYPE(SvRV(gv)) == SVt_PVCV)
+ /* unfake a fake GV */
+ (void)CvGV(SvRV(gv));
if (SvTYPE(gv) != SVt_PVGV || !GvGP(gv))
continue;
if (GvCVu(gv))
sv_catpv(tmpsv, &PL_op_private_labels[label]);
sv_catpv(tmpsv, "=");
}
- sv_catpv(tmpsv, &PL_op_private_labels[enum_label]);
+ if (enum_label == -1)
+ Perl_sv_catpvf(aTHX_ tmpsv, "0x%"UVxf, (UV)val);
+ else
+ sv_catpv(tmpsv, &PL_op_private_labels[enum_label]);
}
else {
/* return a temporary SV containing a stringified representation of
- * the op_aux field of a UNOP_AUX op, associated with CV cv
+ * the op_aux field of a MULTIDEREF op, associated with CV cv
*/
SV*
-Perl_unop_aux_stringify(pTHX_ const OP *o, CV *cv)
+Perl_multideref_stringify(pTHX_ const OP *o, CV *cv)
{
UNOP_AUX_item *items = cUNOP_AUXo->op_aux;
UV actions = items->uv;
PAD *comppad = PadlistARRAY(padlist)[1];
#endif
- PERL_ARGS_ASSERT_UNOP_AUX_STRINGIFY;
+ PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY;
while (!last) {
switch (actions & MDEREF_ACTION_MASK) {
case MDEREF_reload:
actions = (++items)->uv;
continue;
+ NOT_REACHED; /* NOTREACHED */
case MDEREF_HV_padhv_helem:
is_hash = TRUE;
+ /* FALLTHROUGH */
case MDEREF_AV_padav_aelem:
derefs = 1;
S_append_padvar(aTHX_ (++items)->pad_offset, cv, out, 1, 0, 1);
goto do_elem;
+ NOT_REACHED; /* NOTREACHED */
case MDEREF_HV_gvhv_helem:
is_hash = TRUE;
+ /* FALLTHROUGH */
case MDEREF_AV_gvav_aelem:
derefs = 1;
sv = ITEM_SV(++items);
S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_elem;
+ NOT_REACHED; /* NOTREACHED */
case MDEREF_HV_gvsv_vivify_rv2hv_helem:
is_hash = TRUE;
+ /* FALLTHROUGH */
case MDEREF_AV_gvsv_vivify_rv2av_aelem:
sv = ITEM_SV(++items);
S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_vivify_rv2xv_elem;
+ NOT_REACHED; /* NOTREACHED */
case MDEREF_HV_padsv_vivify_rv2hv_helem:
is_hash = TRUE;
+ /* FALLTHROUGH */
case MDEREF_AV_padsv_vivify_rv2av_aelem:
S_append_padvar(aTHX_ (++items)->pad_offset, cv, out, 1, 0, 1);
goto do_vivify_rv2xv_elem;
+ NOT_REACHED; /* NOTREACHED */
case MDEREF_HV_pop_rv2hv_helem:
case MDEREF_HV_vivify_rv2hv_helem:
is_hash = TRUE;
+ /* FALLTHROUGH */
do_vivify_rv2xv_elem:
case MDEREF_AV_pop_rv2av_aelem:
case MDEREF_AV_vivify_rv2av_aelem:
case OP_MULTIDEREF:
PerlIO_printf(Perl_debug_log, "(%-p)",
- unop_aux_stringify(o, deb_curcv(cxstack_ix)));
+ multideref_stringify(o, deb_curcv(cxstack_ix)));
break;
default: