deadcode removal
[p5sagit/p5-mst-13.2.git] / embed.pl
index 6f22017..ef8fc80 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -257,16 +257,11 @@ sub objxsub_var ($$) {
     undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
 }
 
-sub embedvar ($) {
-    my ($sym) = @_;
-#   hide($sym, "Perl_$sym");
-    return '';
-}
-
 sub multon ($$$) {
     my ($sym,$pre,$ptr) = @_;
     hide("PL_$sym", "($ptr$pre$sym)");
 }
+
 sub multoff ($$) {
     my ($sym,$pre) = @_;
     return hide("PL_$pre$sym", "PL_$sym");
@@ -533,42 +528,45 @@ print EM <<'END';
 
 /* (Doing namespace management portably in C is really gross.) */
 
-/* Put interpreter-specific symbols into a struct? */
-
-#ifdef MULTIPLICITY
-
-#ifndef USE_THREADS
-/* If we do not have threads then per-thread vars are per-interpreter */
-
-#ifdef PERL_IMPLICIT_CONTEXT
-
-/* everything has an implicit context pointer */
-
-END
-
-for $sym (sort keys %thread) {
-    print EM multon($sym,'T','my_perl->');
-}
-
-print EM <<'END';
+/*
+   The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT
+   and PERL_IMPLICIT_CONTEXT are supported:
+     1) none
+     2) MULTIPLICITY   # supported for compatibility
+     3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
+     4) USE_THREADS && PERL_IMPLICIT_CONTEXT
+     5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT
+     6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT
+
+   All other combinations of these flags are errors.
+
+   #3, #4, #5, and #6 are supported directly, while #2 is a special
+   case of #3 (supported by redefining vTHX appropriately).
+*/
 
-#else /* !PERL_IMPLICIT_CONTEXT */
+#if defined(MULTIPLICITY)
+/* cases 2, 3 and 5 above */
 
-/* traditional MULTIPLICITY (intepreter is in a global) */
+#  if defined(PERL_IMPLICIT_CONTEXT)
+#    define vTHX       aTHX
+#  else
+#    define vTHX       PERL_GET_INTERP
+#  endif
 
 END
 
-
 for $sym (sort keys %thread) {
-    print EM multon($sym,'T','PERL_GET_INTERP->');
+    print EM multon($sym,'T','vTHX->');
 }
 
 print EM <<'END';
 
-#endif /* !PERL_IMPLICIT_CONTEXT */
-#endif /* !USE_THREADS */
+#  if defined(PERL_OBJECT)
+#    include "error: PERL_OBJECT + MULTIPLICITY don't go together"
+#  endif
 
-/* These are always per-interpreter if there is more than one */
+#  if defined(USE_THREADS)
+/* case 5 above */
 
 END
 
@@ -578,66 +576,56 @@ for $sym (sort keys %intrp) {
 
 print EM <<'END';
 
-#else  /* !MULTIPLICITY */
+#  else                /* !USE_THREADS */
+/* cases 2 and 3 above */
 
 END
 
 for $sym (sort keys %intrp) {
-    print EM multoff($sym,'I');
-}
-
-print EM <<'END';
-
-#ifndef USE_THREADS
-
-END
-
-for $sym (sort keys %thread) {
-    print EM multoff($sym,'T');
+    print EM multon($sym,'I','vTHX->');
 }
 
 print EM <<'END';
 
-#endif /* USE_THREADS */
+#  endif       /* USE_THREADS */
 
-/* Hide what would have been interpreter-specific symbols? */
+#else  /* !MULTIPLICITY */
+/* cases 1, 4 and 6 above */
 
 END
 
 for $sym (sort keys %intrp) {
-    print EM embedvar($sym);
+    print EM multoff($sym,'I');
 }
 
 print EM <<'END';
 
-#ifndef USE_THREADS
+#  if defined(USE_THREADS)
+/* case 4 above */
 
 END
 
 for $sym (sort keys %thread) {
-    print EM embedvar($sym);
+    print EM multon($sym,'T','aTHX->');
 }
 
 print EM <<'END';
 
-#endif /* USE_THREADS */
-#endif /* MULTIPLICITY */
-
-/* Now same trickey for per-thread variables */
-
-#ifdef USE_THREADS
+#  else                /* !USE_THREADS */
+/* cases 1 and 6 above */
 
 END
 
 for $sym (sort keys %thread) {
-    print EM multon($sym,'T','thr->');
+    print EM multoff($sym,'T');
 }
 
 print EM <<'END';
 
-#endif /* USE_THREADS */
+#  endif       /* USE_THREADS */
+#endif /* MULTIPLICITY */
 
-#ifdef PERL_GLOBAL_STRUCT
+#if defined(PERL_GLOBAL_STRUCT)
 
 END
 
@@ -657,20 +645,8 @@ for $sym (sort keys %globvar) {
 
 print EM <<'END';
 
-END
-
-for $sym (sort keys %globvar) {
-    print EM embedvar($sym);
-}
-
-print EM <<'END';
-
 #endif /* PERL_GLOBAL_STRUCT */
 
-END
-
-print EM <<'END';
-
 #ifdef PERL_POLLUTE            /* disabled by default in 5.006 */
 
 END
@@ -684,7 +660,6 @@ print EM <<'END';
 #endif /* PERL_POLLUTE */
 END
 
-
 close(EM);
 
 unlink 'objXSUB.h';
@@ -781,8 +756,6 @@ print CAPIH <<'EOT';
 #  define aTHXo                        pPerl
 #  undef  aTHXo_
 #  define aTHXo_               aTHXo,
-#  undef  _aTHXo
-#  define _aTHXo               ,aTHXo
 #endif /* PERL_OBJECT */
 
 START_EXTERN_C
@@ -995,9 +968,9 @@ EOT
 __END__
 
 # Lines are of the form:
-#    flags|return_type|function_name|return_type|arg1|arg2|...|argN
+#    flags|return_type|function_name|arg1|arg2|...|argN
 #
-# They may continue on multiple lines when \w| begins the next line.
+# A line may be continued on another by ending it with a backslash.
 # Leading and trailing whitespace will be ignored in each component.
 #
 # flags are single letters with following meanings:
@@ -1143,6 +1116,7 @@ p |void   |do_sprintf     |SV* sv|I32 len|SV** sarg
 p      |Off_t  |do_sysseek     |GV* gv|Off_t pos|int whence
 p      |Off_t  |do_tell        |GV* gv
 p      |I32    |do_trans       |SV* sv
+p      |UV     |do_vecget      |SV* sv|I32 offset|I32 size
 p      |void   |do_vecset      |SV* sv
 p      |void   |do_vop         |I32 optype|SV* sv|SV* left|SV* right
 p      |OP*    |dofile         |OP* term