diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-01-20 09:11:18 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-01-20 09:11:18 +0100 |
commit | fbb3ee5af3d428706b9b8e224ae54dd344172e02 (patch) | |
tree | 5759044438706958809d191a27c2d9a4200c8773 /sv.c | |
parent | 85a8a980a9693eec73613792ab6c1f1c4fdd098d (diff) | |
download | perl-fbb3ee5af3d428706b9b8e224ae54dd344172e02.tar.gz |
Optimize away calls to empty DESTROY methods
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -5655,7 +5655,11 @@ Perl_sv_clear(pTHX_ register SV *const sv) CV* destructor; stash = SvSTASH(sv); destructor = StashHANDLER(stash,DESTROY); - if (destructor) { + if (destructor + /* Don't bother calling an empty destructor */ + && (CvISXSUB(destructor) + || CvSTART(destructor)->op_next->op_type != OP_LEAVESUB)) + { SV* const tmpref = newRV(sv); SvREADONLY_on(tmpref); /* DESTROY() could be naughty */ ENTER; |