summaryrefslogtreecommitdiff
path: root/opcode.pl
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-02-02 18:52:27 -0800
committerLarry Wall <lwall@sems.com>1996-02-02 18:52:27 -0800
commitc07a80fdfe3926b5eb0585b674aa5d1f57b32ade (patch)
tree6d56135571eb9ea6635748469bdaf72ad481247a /opcode.pl
parent91b7def858c29dac014df40946a128c06b3aa2ed (diff)
downloadperl-c07a80fdfe3926b5eb0585b674aa5d1f57b32ade.tar.gz
perl5.002beta3
[editor's note: no patch file was found for this release, so no fine-grained changes] I can't find the password for our ftp server, so I had to drop it into ftp://ftp.sems.com/pub/incoming/perl5.002b3.tar.gz, which is a drop directory you can't ls. The current plan is that Andy is gonna whack on this a little more, and then release a gamma in a few days when he's happy with it. So don't get carried away. This is now *late* beta. In other words, have less than the appropriate amount of fun. :-) Larry
Diffstat (limited to 'opcode.pl')
-rwxr-xr-xopcode.pl38
1 files changed, 32 insertions, 6 deletions
diff --git a/opcode.pl b/opcode.pl
index f1da5b6cc6..ce40acb831 100755
--- a/opcode.pl
+++ b/opcode.pl
@@ -9,9 +9,15 @@ while (<DATA>) {
chop;
next unless $_;
next if /^#/;
- ($key, $name, $check, $flags, $args) = split(/\t+/, $_, 5);
+ ($key, $desc, $check, $flags, $args) = split(/\t+/, $_, 5);
+
+ warn qq[Description "$desc" duplicates $seen{$desc}\n] if $seen{$desc};
+ die qq[Opcode "$key" duplicates $seen{$key}\n] if $seen{$key};
+ $seen{$desc} = qq[description of opcode "$key"];
+ $seen{$key} = qq[opcode "$key"];
+
push(@ops, $key);
- $name{$key} = $name;
+ $desc{$key} = $desc;
$check{$key} = $check;
$ckname{$check}++;
$flags{$key} = $flags;
@@ -36,7 +42,7 @@ print "\t", &tab(3,"OP_max"), "\n";
print "} opcode;\n";
print "\n#define MAXO ", scalar @ops, "\n\n";
-# Emit opnames.
+# Emit op names and descriptions.
print <<END;
#ifndef DOINIT
@@ -46,7 +52,24 @@ EXT char *op_name[] = {
END
for (@ops) {
- print qq(\t"$name{$_}",\n);
+ print qq(\t"$_",\n);
+}
+
+print <<END;
+};
+#endif
+
+END
+
+print <<END;
+#ifndef DOINIT
+EXT char *op_desc[];
+#else
+EXT char *op_desc[] = {
+END
+
+for (@ops) {
+ print qq(\t"$desc{$_}",\n);
}
print <<END;
@@ -176,6 +199,7 @@ const constant item ck_svconst s
gvsv scalar variable ck_null ds
gv glob value ck_null ds
+gelem glob elem ck_null d S S
padsv private variable ck_null ds
padav private array ck_null d
padhv private hash ck_null d
@@ -186,11 +210,11 @@ pushre push regexp ck_null 0
# References and stuff.
rv2gv ref-to-glob cast ck_rvconst ds
-sv2len scalar value length ck_null ist
rv2sv scalar deref ck_rvconst ds
av2arylen array length ck_null is
rv2cv subroutine deref ck_rvconst d
anoncode anonymous subroutine ck_null 0
+prototype subroutine prototype ck_null s S
refgen reference constructor ck_spair m L
srefgen scalar ref constructor ck_null fs S
ref reference-type operator ck_fun stu S?
@@ -223,7 +247,7 @@ chomp safe chop ck_spair mts L
schomp scalar safe chop ck_null stu S?
defined defined operator ck_rfun isu S?
undef undef operator ck_lfun s S?
-study study ck_fun stu S?
+study study ck_fun su S?
pos match position ck_lfun stu S?
preinc preincrement ck_lfun dIs S
@@ -428,6 +452,7 @@ binmode binmode ck_fun s F
tie tie ck_fun idms R S L
untie untie ck_fun is R
+tied tied ck_fun st R
dbmopen dbmopen ck_fun is H S S
dbmclose dbmclose ck_fun is H
@@ -442,6 +467,7 @@ leavewrite write exit ck_null 0
prtf printf ck_listiob ims F? L
print print ck_listiob ims F? L
+sysopen sysopen ck_fun st F S S S?
sysread sysread ck_fun imst F R S S?
syswrite syswrite ck_fun imst F S S S?