U8 => [qw(char)],
);
-my @optype= qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP);
-
-# Nullsv *must* come first in the following so that the condition
-# ($$sv == 0) can continue to be used to test (sv == Nullsv).
-my @specialsv = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no
- (SV*)pWARN_ALL (SV*)pWARN_NONE (SV*)pWARN_STD);
-
my (%alias_from, $from, $tos);
while (($from, $tos) = each %alias_to) {
map { $alias_from{$_} = $from } @$tos;
print ASMDATA_PM $perl_header, <<'EOT';
package B::Asmdata;
-our $VERSION = '1.01';
+our $VERSION = '1.02';
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name);
-our(%insn_data, @insn_name, @optype, @specialsv_name);
+our(%insn_data, @insn_name);
+use B qw(@optype @specialsv_name);
EOT
print ASMDATA_PM <<"EOT";
-\@optype = qw(@optype);
-\@specialsv_name = qw(@specialsv);
# XXX insn_data is initialised this way because with a large
# %insn_data = (foo => [...], bar => [...], ...) initialiser
# I get a hard-to-track-down stack underflow and segfault.
EOT
-my $size = @specialsv;
-
my (@insn_name, $insn_num, $insn, $lvalue, $argtype, $flags, $fundtype);
while (<DATA>) {
walkoptree_slow walkoptree walkoptree_exec walksymtable
parents comppadlist sv_undef compile_stats timing_info
begin_av init_av check_av end_av regex_padav dowarn defstash
- curstash warnhook diehook inc_gv
+ curstash warnhook diehook inc_gv @optype @specialsv_name
);
push @EXPORT_OK, qw(unitcheck_av) if $] > 5.009;
@B::SPECIAL::ISA = 'B::OBJECT';
+@B::optype = qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP);
+# bytecode.pl contained the following comment:
+# Nullsv *must* come first in the following so that the condition
+# ($$sv == 0) can continue to be used to test (sv == Nullsv).
+@B::specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no
+ (SV*)pWARN_ALL (SV*)pWARN_NONE (SV*)pWARN_STD);
+
{
# Stop "-w" from complaining about the lack of a real B::OBJECT class
package B::OBJECT;
=back
+=head2 Exported utility variabiles
+
+=over 4
+
+=item @optype
+
+ my $op_type = $optype[$op_type_num];
+A simple mapping of the op type number to its type (like 'COP' or 'BINOP').
+
+=item @specialsv_name
+
+ my $sv_name = $specialsv_name[$sv_index];
+
+Certain SV types are considered 'special'. They're represented by
+B::SPECIAL and are referred to by a number from the specialsv_list.
+This array maps that number back to the name of the SV (like 'Nullsv'
+or '&PL_sv_undef').
+
+=back
=head1 OVERVIEW OF CLASSES
#
package B::Asmdata;
-our $VERSION = '1.01';
+our $VERSION = '1.02';
use Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name);
-our(%insn_data, @insn_name, @optype, @specialsv_name);
+our(%insn_data, @insn_name);
-@optype = qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP);
-@specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no (SV*)pWARN_ALL (SV*)pWARN_NONE (SV*)pWARN_STD);
+use B qw(@optype @specialsv_name);
# XXX insn_data is initialised this way because with a large
# %insn_data = (foo => [...], bar => [...], ...) initialiser
package B::Debug;
-our $VERSION = '1.03';
+our $VERSION = '1.04';
use strict;
use B qw(peekop class walkoptree walkoptree_exec
- main_start main_root cstring sv_undef);
-use B::Asmdata qw(@specialsv_name);
+ main_start main_root cstring sv_undef @specialsv_name);
my %done_gv;
package B::Terse;
-our $VERSION = '1.04';
+our $VERSION = '1.05';
use strict;
-use B qw(class);
-use B::Asmdata qw(@specialsv_name);
+use B qw(class @specialsv_name);
use B::Concise qw(concise_subref set_style_standard);
use Carp;