summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorBrandon Black <blblack@gmail.com>2007-08-12 06:36:14 -0700
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-08-31 09:07:51 +0000
commit89c14e2ec1b845cd5ec17986d2c65288a7da7ba8 (patch)
tree49daca85a19bfaf40679d19633871f2933add12b /mg.c
parent53e0272ff6711924ddbd8568bad2a01574e7b545 (diff)
downloadperl-89c14e2ec1b845cd5ec17986d2c65288a7da7ba8.tar.gz
Re: optimize push @ISA, (was Re: parent.pm at http://corion.net/perl-dev)
From: "Brandon Black" <blblack@gmail.com> Message-ID: <84621a60708121336m13dcf9e5uac624fb246f2a79c@mail.gmail.com> p4raw-id: //depot/perl@31770
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mg.c b/mg.c
index 89f4c32910..c4fc190185 100644
--- a/mg.c
+++ b/mg.c
@@ -1528,6 +1528,10 @@ Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg)
/* Bail out if destruction is going on */
if(PL_dirty) return 0;
+ /* Skip _isaelem because _isa will handle it shortly */
+ if (PL_delaymagic & DM_ARRAY && mg->mg_type == PERL_MAGIC_isaelem)
+ return 0;
+
/* XXX Once it's possible, we need to
detect that our @ISA is aliased in
other stashes, and act on the stashes
@@ -1542,10 +1546,7 @@ Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg)
: (GV*)SvMAGIC(mg->mg_obj)->mg_obj
);
- if(PL_delaymagic)
- PL_delayedisa = stash;
- else
- mro_isa_changed_in(stash);
+ mro_isa_changed_in(stash);
return 0;
}