VMS patches from Dan Sugalski <sugalskd@osshe.edu>
[p5sagit/p5-mst-13.2.git] / opcode.pl
index c67f142..a97bb16 100755 (executable)
--- a/opcode.pl
+++ b/opcode.pl
@@ -77,6 +77,9 @@ print <<END;
 };
 #endif
 
+#ifndef PERL_OBJECT
+START_EXTERN_C
+
 END
 
 # Emit function declarations.
@@ -95,10 +98,14 @@ for (@ops) {
 
 print <<END;
 
+END_EXTERN_C
+#endif /* PERL_OBJECT */
+
 #ifndef DOINIT
-EXT OP * (*ppaddr[])();
+EXT OP * (CPERLscope(*ppaddr)[])(ARGSproto);
 #else
-EXT OP * (*ppaddr[])() = {
+#ifndef PERL_OBJECT
+EXT OP * (CPERLscope(*ppaddr)[])(ARGSproto) = {
 END
 
 for (@ops) {
@@ -107,6 +114,7 @@ for (@ops) {
 
 print <<END;
 };
+#endif /* PERL_OBJECT */
 #endif
 
 END
@@ -115,9 +123,10 @@ END
 
 print <<END;
 #ifndef DOINIT
-EXT OP * (*check[]) _((OP *op));
+EXT OP * (CPERLscope(*check)[]) _((OP *op));
 #else
-EXT OP * (*check[]) _((OP *op)) = {
+#ifndef PERL_OBJECT
+EXT OP * (CPERLscope(*check)[]) _((OP *op)) = {
 END
 
 for (@ops) {
@@ -126,6 +135,7 @@ for (@ops) {
 
 print <<END;
 };
+#endif /* PERL_OBJECT */
 #endif
 
 END
@@ -197,6 +207,17 @@ print <<END;
 #endif
 END
 
+close OC or die "Error closing opcode.h: $!";
+
+unlink "pp_proto.h";
+open PP, '>pp_proto.h' or die "Error creating pp_proto.h: $!";
+for (@ops) {
+    next if /^i_(pre|post)(inc|dec)$/;
+    print PP "PPDEF(pp_$_)\n";
+}
+
+close PP or die "Error closing pp_proto.h: $!";
+
 ###########################################################################
 sub tab {
     local($l, $t) = @_;
@@ -227,7 +248,7 @@ padav               private array           ck_null         d0
 padhv          private hash            ck_null         d0
 padany         private something       ck_null         d0
 
-pushre         push regexp             ck_null         /
+pushre         push regexp             ck_null         d/
 
 # References and stuff.
 
@@ -237,8 +258,8 @@ av2arylen   array length            ck_null         is1
 rv2cv          subroutine deref        ck_rvconst      d1
 anoncode       anonymous subroutine    ck_anoncode     $       
 prototype      subroutine prototype    ck_null         s%      S
-refgen         reference constructor   ck_spair        m0      L
-srefgen                scalar ref constructor  ck_null         fs0     S
+refgen         reference constructor   ck_spair        m1      L
+srefgen                scalar ref constructor  ck_null         fs1     S
 ref            reference-type operator ck_fun          stu%    S?
 bless          bless                   ck_fun          s@      S S?
 
@@ -253,8 +274,10 @@ rcatline   append I/O operator     ck_null         t%
 # Bindable operators.
 
 regcmaybe      regexp comp once        ck_fun          s1      S
+regcreset      regexp reset interpolation flag ck_fun          s1      S
 regcomp                regexp compilation      ck_null         s|      S
 match          pattern match           ck_match        d/
+qr             pattern quote           ck_match        s/
 subst          substitution            ck_null         dis/    S
 substcont      substitution cont       ck_null         dis|    
 trans          character translation   ck_null         is"     S
@@ -358,7 +381,7 @@ abs         abs                     ck_fun          fstu%   S?
 # String stuff.
 
 length         length                  ck_lengthconst  istu%   S?
-substr         substr                  ck_fun          st@     S S S?
+substr         substr                  ck_fun          st@     S S S? S?
 vec            vec                     ck_fun          ist@    S S S
 
 index          index                   ck_index        ist@    S S S?