X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=opcode.pl;h=bfafce70ab5703185301ac34ab5a05195e198e9e;hb=3d3d4f39342abc069c6470bf0947f2d00d3ead72;hp=f897bb9688a8bcd1824af904858cfaaa9fddb5f7;hpb=2de3dbccea8bcb1d17328cd596713c4aa8443082;p=p5sagit%2Fp5-mst-13.2.git diff --git a/opcode.pl b/opcode.pl index f897bb9..bfafce7 100755 --- a/opcode.pl +++ b/opcode.pl @@ -1,9 +1,9 @@ #!/usr/bin/perl -chmod 0666, "opcode.h", "opnames.h"; -unlink "opcode.h", "opnames.h"; -open(OC, ">opcode.h") || die "Can't create opcode.h: $!\n"; -open(ON, ">opnames.h") || die "Can't create opnames.h: $!\n"; +$opcode_new = 'opcode.h-new'; +$opname_new = 'opnames.h-new'; +open(OC, ">$opcode_new") || die "Can't create $opcode_new: $!\n"; +open(ON, ">$opname_new") || die "Can't create $opname_new: $!\n"; select OC; # Read data. @@ -67,6 +67,12 @@ print <op_type == OP_CUSTOM ? custom_op_name(o) : \\ + PL_op_name[o->op_type]) +#define OP_DESC(o) (o->op_type == OP_CUSTOM ? custom_op_desc(o) : \\ + PL_op_desc[o->op_type]) + #ifndef DOINIT EXT char *PL_op_name[]; #else @@ -132,7 +138,7 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = { END for (@ops) { - print "\tMEMBER_TO_FPTR(Perl_pp_$_),\n"; + print "\tMEMBER_TO_FPTR(Perl_pp_$_),\n" unless $_ eq "custom"; } print <pp_proto.h' or die "Error creating pp_proto.h: $!"; -open PPSYM, '>pp.sym' or die "Error creating pp.sym: $!"; +chmod 0600, 'opcode.h'; # required by dosish filesystems +chmod 0600, 'opnames.h'; # required by dosish filesystems + +rename $opcode_new, 'opcode.h' or die "renaming opcode.h: $!\n"; +rename $opname_new, 'opnames.h' or die "renaming opnames.h: $!\n"; + +$pp_proto_new = 'pp_proto.h-new'; +$pp_sym_new = 'pp.sym-new'; + +open PP, ">$pp_proto_new" or die "Error creating $pp_proto_new: $!"; +open PPSYM, ">$pp_sym_new" or die "Error creating $pp_sym_new: $!"; print PP <<"END"; /* !!!!!!! DO NOT EDIT THIS FILE !!!!!!! @@ -289,6 +301,7 @@ print PP "\n\n"; for (@ops) { next if /^i_(pre|post)(inc|dec)$/; + next if /^custom$/; print PP "PERL_PPDEF(Perl_pp_$_)\n"; print PPSYM "Perl_pp_$_\n"; } @@ -296,6 +309,12 @@ for (@ops) { close PP or die "Error closing pp_proto.h: $!"; close PPSYM or die "Error closing pp.sym: $!"; +chmod 0600, 'pp_proto.h'; # required by dosish filesystems +chmod 0600, 'pp.sym'; # required by dosish filesystems + +rename $pp_proto_new, 'pp_proto.h' or die "rename pp_proto.h: $!\n"; +rename $pp_sym_new, 'pp.sym' or die "rename pp.sym: $!\n"; + ########################################################################### sub tab { local($l, $t) = @_; @@ -436,8 +455,8 @@ bless bless ck_fun s@ S S? backtick quoted execution (``, qx) ck_open t% # glob defaults its first arg to $_ glob glob ck_glob t@ S? -readline ck_null t% -rcatline append I/O operator ck_null t% +readline ck_null t% F? +rcatline append I/O operator ck_null t$ # Bindable operators. @@ -633,7 +652,7 @@ leavesub subroutine exit ck_null 1 leavesublv lvalue subroutine return ck_null 1 caller caller ck_fun t% S? warn warn ck_fun imst@ L -die die ck_fun dimst@ L +die die ck_die dimst@ L reset symbol reset ck_fun is% S? lineseq line sequence ck_null @ @@ -879,3 +898,5 @@ threadsv per-thread value ck_null ds0 # Control (contd.) setstate set statement info ck_null s; method_named method with known name ck_null d$ + +custom unknown custom operator ck_null 0