summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-10-09 20:34:29 +0100
committerNicholas Clark <nick@ccl4.org>2010-10-09 20:34:29 +0100
commit74e8ce349633219f5a1aba2c2aaa959675e24299 (patch)
tree47bcedeac972068130a0a4ae5118feb2b069919e /toke.c
parentd9159685e05b3d86d58992e4879989b659852d4a (diff)
downloadperl-74e8ce349633219f5a1aba2c2aaa959675e24299.tar.gz
Create populate_isa() to de-duplicate logic to populate @ISA.
Previously yylex() was conditionally populating @AnyDBM_File::ISA (if it was not set, and the token dbmopen was seen), and init_predump_symbols() was populating @IO::File::ISA (unconditionally, but this is so early that nothing previously could have set it). This refactoring eliminates code duplication.
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/toke.c b/toke.c
index 55b1970f92..832b9e9b6a 100644
--- a/toke.c
+++ b/toke.c
@@ -6914,23 +6914,13 @@ Perl_yylex(pTHX)
UNI(OP_DELETE);
case KEY_dbmopen:
- {
- /* NOTE: No support for tied ISA */
- AV *isa = get_av("AnyDBM_File::ISA", GV_ADD | GV_ADDMULTI);
-
- if(AvFILLp(isa) == -1) {
- av_push(isa, newSVpvs("NDBM_File"));
- gv_stashpvs("NDBM_File", GV_ADD);
- av_push(isa, newSVpvs("DB_File"));
- gv_stashpvs("DB_File", GV_ADD);
- av_push(isa, newSVpvs("GDBM_File"));
- gv_stashpvs("GDBM_File", GV_ADD);
- av_push(isa, newSVpvs("SDBM_File"));
- gv_stashpvs("SDBM_File", GV_ADD);
- av_push(isa, newSVpvs("ODBM_File"));
- gv_stashpvs("ODBM_File", GV_ADD);
- }
- }
+ Perl_populate_isa(aTHX_ STR_WITH_LEN("AnyDBM_File::ISA"),
+ STR_WITH_LEN("NDBM_File::"),
+ STR_WITH_LEN("DB_File::"),
+ STR_WITH_LEN("GDBM_File::"),
+ STR_WITH_LEN("SDBM_File::"),
+ STR_WITH_LEN("ODBM_File::"),
+ NULL);
LOP(OP_DBMOPEN,XTERM);
case KEY_dbmclose: