diff options
-rw-r--r-- | pp_hot.c | 16 |
1 files changed, 3 insertions, 13 deletions
@@ -1368,24 +1368,14 @@ PP(pp_defined) } defined = FALSE; - switch (SvTYPE(sv)) { - case SVt_PVAV: - if (AvMAX(sv) >= 0 || SvGMAGICAL(sv) || (SvRMAGICAL(sv) && mg_find(sv, PERL_MAGIC_tied))) - defined = TRUE; - break; - case SVt_PVHV: - if (HvARRAY(sv) || SvGMAGICAL(sv) || (SvRMAGICAL(sv) && mg_find(sv, PERL_MAGIC_tied))) - defined = TRUE; - break; - case SVt_PVCV: + if (UNLIKELY(SvTYPE(sv) == SVt_PVCV)) { if (CvROOT(sv) || CvXSUB(sv)) defined = TRUE; - break; - default: + } + else { SvGETMAGIC(sv); if (SvOK(sv)) defined = TRUE; - break; } if (is_dor) { |