[win32] various cleanups so that B can be built as "just another extension"
Gurusamy Sarathy [Thu, 26 Feb 1998 03:56:19 +0000 (03:56 +0000)]
 - export symbols needed for building B
 - bset_obj_store() is needed by byterun(), so define it there instead
   of at B.xs, and export it
 - freadpv() is only used in B.xs, so move it there
 - byte*.h are now included by perl.h
 - regenerate embed*.h

p4raw-id: //depot/win32/perl@589

bytecode.h
bytecode.pl
byterun.c
byterun.h
embed.h
ext/B/B.xs
ext/B/Makefile.PL
global.sym
perl.h

index bfa4025..7ca7ffd 100644 (file)
@@ -8,8 +8,6 @@ typedef OP *opindex;
 typedef IV IV64;
 
 EXT int iv_overflows INIT(0);
-void *bset_obj_store _((void *, I32));
-void freadpv _((U32, void *));
 
 EXT SV *sv;
 #ifndef USE_THREADS
index e72d852..c545f41 100644 (file)
@@ -65,8 +65,20 @@ print BYTERUN_C $c_header, <<'EOT';
 
 #include "EXTERN.h"
 #include "perl.h"
-#include "bytecode.h"
-#include "byterun.h"
+
+void *
+bset_obj_store(void *obj, I32 ix)
+{
+    if (ix > obj_list_fill) {
+       if (obj_list_fill == -1)
+           New(666, obj_list, ix + 1, void*);
+       else
+           Renew(obj_list, ix + 1, void*);
+       obj_list_fill = ix;
+    }
+    obj_list[ix] = obj;
+    return obj;
+}
 
 #ifdef INDIRECT_BGET_MACROS
 void byterun(struct bytestream bs)
@@ -153,18 +165,12 @@ struct bytestream {
     int (*fread)(char *, size_t, size_t, void*);
     void (*freadpv)(U32, void*);
 };
-void freadpv _((U32, void *));
 void byterun _((struct bytestream));
 #else
 void byterun _((FILE *));
 #endif /* INDIRECT_BGET_MACROS */
 
-#ifndef PATCHLEVEL
-#include "patchlevel.h"
-#endif
-#if PATCHLEVEL < 4 || (PATCHLEVEL == 4 && SUBVERSION < 50)
-#define dTHR extern int errno
-#endif
+void *bset_obj_store _((void *, I32));
 
 enum {
 EOT
index fe7d6d3..57c6620 100644 (file)
--- a/byterun.c
+++ b/byterun.c
 
 #include "EXTERN.h"
 #include "perl.h"
-#include "bytecode.h"
-#include "byterun.h"
+
+void *
+bset_obj_store(void *obj, I32 ix)
+{
+    if (ix > obj_list_fill) {
+       if (obj_list_fill == -1)
+           New(666, obj_list, ix + 1, void*);
+       else
+           Renew(obj_list, ix + 1, void*);
+       obj_list_fill = ix;
+    }
+    obj_list[ix] = obj;
+    return obj;
+}
 
 #ifdef INDIRECT_BGET_MACROS
 void byterun(struct bytestream bs)
index f7185c7..edc043d 100644 (file)
--- a/byterun.h
+++ b/byterun.h
@@ -15,18 +15,12 @@ struct bytestream {
     int (*fread)(char *, size_t, size_t, void*);
     void (*freadpv)(U32, void*);
 };
-void freadpv _((U32, void *));
 void byterun _((struct bytestream));
 #else
 void byterun _((FILE *));
 #endif /* INDIRECT_BGET_MACROS */
 
-#ifndef PATCHLEVEL
-#include "patchlevel.h"
-#endif
-#if PATCHLEVEL < 4 || (PATCHLEVEL == 4 && SUBVERSION < 50)
-#define dTHR extern int errno
-#endif
+void *bset_obj_store _((void *, I32));
 
 enum {
     INSN_RET,                  /* 0 */
diff --git a/embed.h b/embed.h
index 22634a0..4f0a832 100644 (file)
--- a/embed.h
+++ b/embed.h
@@ -68,6 +68,7 @@
 #define bool__amg              Perl_bool__amg
 #define boot_core_UNIVERSAL    Perl_boot_core_UNIVERSAL
 #define bor_amg                        Perl_bor_amg
+#define bset_obj_store         Perl_bset_obj_store
 #define bxor_amg               Perl_bxor_amg
 #define byterun                        Perl_byterun
 #define call_list              Perl_call_list
 #define sle_amg                        Perl_sle_amg
 #define slt_amg                        Perl_slt_amg
 #define sne_amg                        Perl_sne_amg
+#define specialsv_list         Perl_specialsv_list
 #define sqrt_amg               Perl_sqrt_amg
 #define stack_grow             Perl_stack_grow
 #define start_subparse         Perl_start_subparse
index 0bb7acb..3e519af 100644 (file)
@@ -11,8 +11,6 @@
 #include "perl.h"
 #include "XSUB.h"
 #include "INTERN.h"
-#include "bytecode.h"
-#include "byterun.h"
 
 static char *svclassnames[] = {
     "B::NULL",
@@ -288,20 +286,6 @@ cchar(SV *sv)
     return sstr;
 }
 
-void *
-bset_obj_store(void *obj, I32 ix)
-{
-    if (ix > obj_list_fill) {
-       if (obj_list_fill == -1)
-           New(666, obj_list, ix + 1, void*);
-       else
-           Renew(obj_list, ix + 1, void*);
-       obj_list_fill = ix;
-    }
-    obj_list[ix] = obj;
-    return obj;
-}
-
 #ifdef INDIRECT_BGET_MACROS
 void freadpv(U32 len, void *data)
 {
index bc42a34..92f01e2 100644 (file)
@@ -4,7 +4,6 @@ use Config;
 my $e = $Config{'exe_ext'};
 my $o = $Config{'obj_ext'};
 my $exeout_flag = '-o ';
-my @extras = ();
 if ($^O eq 'MSWin32') {
     if ($Config{'cc'} =~ /^cl/i) {
        $exeout_flag = '-Fe';
@@ -12,21 +11,13 @@ if ($^O eq 'MSWin32') {
     elsif ($Config{'cc'} =~ /^bcc/i) {
        $exeout_flag = '-e';
     }
-    # XXX this probably applies to everyone else
-    @extras = (
-    OBJECT     => "B$o byterun$o",
-    depend     => {
-       "B$o"           => "B.c ../../bytecode.h ../../byterun.h",
-       "byterun$o"     => "../../byterun.c ../../bytecode.h ../../byterun.h",
-    });
 }
 
 WriteMakefile(
     NAME       => "B",
     VERSION    => "a5",
-    @extras,
     clean      => {
-       FILES           => "perl byteperl$e *$o B.c *~"
+       FILES           => "perl$e byteperl$e *$o B.c *~"
     }
 );
 
index f1d8c22..f908d3c 100644 (file)
@@ -100,6 +100,7 @@ sin_amg
 sle_amg
 slt_amg
 sne_amg
+specialsv_list
 sqrt_amg
 string_amg
 subtr_amg
@@ -198,6 +199,7 @@ block_end
 block_gimme
 block_start
 boot_core_UNIVERSAL
+bset_obj_store
 byterun
 call_list
 cando
diff --git a/perl.h b/perl.h
index 9b521b9..49032b5 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1100,6 +1100,8 @@ union any {
 #include "hv.h"
 #include "mg.h"
 #include "scope.h"
+#include "bytecode.h"
+#include "byterun.h"
 
 /* work around some libPW problems */
 #ifdef DOINIT