summaryrefslogtreecommitdiff
path: root/ext/B/B/CC.pm
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1998-12-05 16:14:42 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1998-12-05 16:14:42 +0000
commit0cc1d052f2b5aa0a485e4a60aabe91829ddbe78c (patch)
treeb4979327e0d5279d1ca64dcbac71db825e46eaef /ext/B/B/CC.pm
parentcf86991c04b212c029b30807ecab507b784fd8ad (diff)
downloadperl-0cc1d052f2b5aa0a485e4a60aabe91829ddbe78c.tar.gz
Avoid hard-coding op numbers
Update CC.pm to save %INC, and to co-exist with new C.pm p4raw-id: //depot/perl@2453
Diffstat (limited to 'ext/B/B/CC.pm')
-rw-r--r--ext/B/B/CC.pm26
1 files changed, 15 insertions, 11 deletions
diff --git a/ext/B/B/CC.pm b/ext/B/B/CC.pm
index 80c3f9e614..e6c21bca75 100644
--- a/ext/B/B/CC.pm
+++ b/ext/B/B/CC.pm
@@ -9,7 +9,7 @@ package B::CC;
use strict;
use B qw(main_start main_root class comppadlist peekop svref_2object
timing_info init_av);
-use B::C qw(save_unused_subs objsym init_sections
+use B::C qw(save_unused_subs objsym init_sections mark_unused
output_all output_boilerplate output_main);
use B::Bblock qw(find_leaders);
use B::Stackobj qw(:types :flags);
@@ -1264,11 +1264,11 @@ sub pp_substcont {
write_back_stack();
doop($op);
my $pmop = $op->other;
- warn sprintf("substcont: op = %s, pmop = %s\n",
- peekop($op), peekop($pmop));#debug
-# my $pmopsym = objsym($pmop);
+ # warn sprintf("substcont: op = %s, pmop = %s\n",
+ # peekop($op), peekop($pmop));#debug
+# my $pmopsym = objsym($pmop);
my $pmopsym = $pmop->save; # XXX can this recurse?
- warn "pmopsym = $pmopsym\n";#debug
+# warn "pmopsym = $pmopsym\n";#debug
runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplstart) goto %s;",
$pmopsym, label($pmop->pmreplstart));
invalidate_lexicals();
@@ -1387,11 +1387,13 @@ sub cc_obj {
sub cc_main {
my @comppadlist = comppadlist->ARRAY;
- my $curpad_nam = $comppadlist[0]->save;
- my $curpad_sym = $comppadlist[1]->save;
- my $init_av = init_av->save;
+ my $curpad_nam = $comppadlist[0]->save;
+ my $curpad_sym = $comppadlist[1]->save;
+ my $init_av = init_av->save;
+ my $inc_hv = svref_2object(\%INC)->save;
+ my $inc_av = svref_2object(\@INC)->save;
my $start = cc_recurse("pp_main", main_root, main_start, @comppadlist);
- save_unused_subs(@unused_sub_packages);
+ save_unused_subs();
cc_recurse();
return if $errors;
@@ -1399,7 +1401,9 @@ sub cc_main {
$init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}),
"PL_main_start = $start;",
"PL_curpad = AvARRAY($curpad_sym);",
- "PL_initav = $init_av;",
+ "PL_initav = $init_av;",
+ "GvHV(PL_incgv) = $inc_hv;",
+ "GvAV(PL_incgv) = $inc_av;",
"av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));",
"av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));",
);
@@ -1463,7 +1467,7 @@ sub compile {
$module_name = $arg;
} elsif ($opt eq "u") {
$arg ||= shift @options;
- push(@unused_sub_packages, $arg);
+ mark_unused($arg,undef);
} elsif ($opt eq "f") {
$arg ||= shift @options;
my $value = $arg !~ s/^no-//;