Commit 493a4d05af for perl
commit 493a4d05afa477d72ecced41d8b456e11be11537
Author: Tony Cook <tony@develop-help.com>
Date: Thu Oct 29 12:57:13 2026 +1100
sv_isa_sv: other minor code cleanups
These seem to optimized into non-issues, but they're kind of dumb:
- cache access to SvRV(sv) like pp_blessed does
- don't dSP until we're past the isa CV check
- don't PUTBACK (sp = PL_stack_sp) when we only just did
dSP(SV **sp = PL_stacksp)
diff --git a/universal.c b/universal.c
index afd27b7876..9ea3f024b1 100644
--- a/universal.c
+++ b/universal.c
@@ -220,22 +220,21 @@ Perl_sv_isa_sv(pTHX_ SV *sv, SV *namesv)
GV *isagv;
- if(!SvROK(sv) || !SvOBJECT(SvRV(sv)))
+ SV *rv;
+ if(!SvROK(sv) || !SvOBJECT((rv = SvRV(sv))))
return FALSE;
- isagv = gv_fetchmeth_pvn(SvSTASH(SvRV(sv)), "isa", 3, -1, 0);
+ isagv = gv_fetchmeth_pvn(SvSTASH(rv), "isa", 3, -1, 0);
if (LIKELY(isagv)) {
- dSP;
CV *isacv = isGV(isagv) ? GvCV(isagv) : (CV *)isagv;
- if (CvISXSUB(isacv) && CvXSUB(isacv) == XS_UNIVERSAL_isa)
+ if (LIKELY(CvISXSUB(isacv) && CvXSUB(isacv) == XS_UNIVERSAL_isa))
goto default_isa;
-
+
+ dSP;
SV *retsv;
bool ret;
- PUTBACK;
-
ENTER;
SAVETMPS;