From d613ef02e4bf2ccbbac161910d879e49ce35ecd8 Mon Sep 17 00:00:00 2001 From: Gurusamy Sarathy Date: Thu, 26 Feb 1998 03:56:19 +0000 Subject: [PATCH] [win32] various cleanups so that B can be built as "just another extension" - 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 | 2 -- bytecode.pl | 24 +++++++++++++++--------- byterun.c | 16 ++++++++++++++-- byterun.h | 8 +------- embed.h | 2 ++ ext/B/B.xs | 16 ---------------- ext/B/Makefile.PL | 11 +---------- global.sym | 2 ++ perl.h | 2 ++ 9 files changed, 37 insertions(+), 46 deletions(-) diff --git a/bytecode.h b/bytecode.h index bfa4025..7ca7ffd 100644 --- a/bytecode.h +++ b/bytecode.h @@ -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 diff --git a/bytecode.pl b/bytecode.pl index e72d852..c545f41 100644 --- a/bytecode.pl +++ b/bytecode.pl @@ -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 diff --git a/byterun.c b/byterun.c index fe7d6d3..57c6620 100644 --- a/byterun.c +++ b/byterun.c @@ -11,8 +11,20 @@ #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) diff --git a/byterun.h b/byterun.h index f7185c7..edc043d 100644 --- 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 --- 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 @@ -910,6 +911,7 @@ #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 diff --git a/ext/B/B.xs b/ext/B/B.xs index 0bb7acb..3e519af 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -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) { diff --git a/ext/B/Makefile.PL b/ext/B/Makefile.PL index bc42a34..92f01e2 100644 --- a/ext/B/Makefile.PL +++ b/ext/B/Makefile.PL @@ -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 *~" } ); diff --git a/global.sym b/global.sym index f1d8c22..f908d3c 100644 --- a/global.sym +++ b/global.sym @@ -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 --- 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 -- 1.8.3.1