Skip to content

Commit

Permalink
Re: new C3 MRO patch
Browse files Browse the repository at this point in the history
From: "Brandon Black" <blblack@gmail.com>
Message-ID: <84621a60704171114k29b0460el5b08ce5185d55ed5@mail.gmail.com>

p4raw-id: //depot/perl@30980
  • Loading branch information
blblack authored and rgs committed Apr 19, 2007
1 parent 0a31136 commit e1a479c
Show file tree
Hide file tree
Showing 60 changed files with 3,984 additions and 213 deletions.
32 changes: 32 additions & 0 deletions MANIFEST
Expand Up @@ -2252,6 +2252,7 @@ lib/Module/Pluggable/t/lib/No/Middle.pm Module::Pluggable tests
lib/Module/Pluggable/t/lib/OddTest/Plugin/-Dodgy.pm Module::Pluggable tests
lib/Module/Pluggable/t/lib/OddTest/Plugin/Foo.pm Module::Pluggable tests
lib/Module/Pluggable/t/lib/TA/C/A/I.pm Module::Pluggable tests
lib/mro.pm mro extension
lib/Net/Changes.libnet libnet
lib/Net/Cmd.pm libnet
lib/Net/Config.eg libnet
Expand Down Expand Up @@ -2955,6 +2956,7 @@ mpeix/mpeixish.h MPE/iX port
mpeix/mpeix_setjmp.c MPE/iX port
mpeix/nm MPE/iX port
mpeix/relink MPE/iX port
mro.c Method Resolution Order code
myconfig.SH Prints summary of the current configuration
NetWare/bat/Buildtype.bat NetWare port
NetWare/bat/SetCodeWar.bat NetWare port
Expand Down Expand Up @@ -3621,6 +3623,36 @@ t/lib/warnings/toke Tests for toke.c for warnings.t
t/lib/warnings/universal Tests for universal.c for warnings.t
t/lib/warnings/utf8 Tests for utf8.c for warnings.t
t/lib/warnings/util Tests for util.c for warnings.t
t/mro/basic_01_c3.t mro tests
t/mro/basic_01_dfs.t mro tests
t/mro/basic_02_c3.t mro tests
t/mro/basic_02_dfs.t mro tests
t/mro/basic_03_c3.t mro tests
t/mro/basic_03_dfs.t mro tests
t/mro/basic_04_c3.t mro tests
t/mro/basic_04_dfs.t mro tests
t/mro/basic_05_c3.t mro tests
t/mro/basic_05_dfs.t mro tests
t/mro/basic.t mro tests
t/mro/c3_with_overload.t mro tests
t/mro/complex_c3.t mro tests
t/mro/complex_dfs.t mro tests
t/mro/dbic_c3.t mro tests
t/mro/dbic_dfs.t mro tests
t/mro/inconsistent_c3.t mro tests
t/mro/method_caching.t mro tests
t/mro/next_method_edge_cases.t mro tests
t/mro/next_method_in_anon.t mro tests
t/mro/next_method_in_eval.t mro tests
t/mro/next_method_skip.t mro tests
t/mro/next_method.t mro tests
t/mro/next_method_used_with_NEXT.t mro tests
t/mro/overload_c3.t mro tests
t/mro/overload_dfs.t mro tests
t/mro/recursion_c3.t mro tests
t/mro/recursion_dfs.t mro tests
t/mro/vulcan_c3.t mro tests
t/mro/vulcan_dfs.t mro tests
Todo.micro The Wishlist for microperl
toke.c The tokener
t/op/64bitint.t See if 64 bit integers work
Expand Down
4 changes: 2 additions & 2 deletions Makefile.SH
Expand Up @@ -367,15 +367,15 @@ h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
h5 = utf8.h warnings.h
h = $(h1) $(h2) $(h3) $(h4) $(h5)
c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c perl.c
c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c perl.c
c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
c3 = taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c globals.c
c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c
c5 = $(madlysrc) $(mallocsrc)
c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c perlmain.c opmini.c
obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT)
obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT)
obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) perl$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)
Expand Down
5 changes: 4 additions & 1 deletion Makefile.micro
Expand Up @@ -10,7 +10,7 @@ PERL = perl
all: microperl

O = uav$(_O) udeb$(_O) udoio$(_O) udoop$(_O) udump$(_O) \
uglobals$(_O) ugv$(_O) uhv$(_O) \
uglobals$(_O) ugv$(_O) uhv$(_O) umro$(_O)\
umg$(_O) uperlmain$(_O) uop$(_O) ureentr$(_O) \
upad$(_O) uperl$(_O) uperlio$(_O) uperly$(_O) upp$(_O) \
upp_ctl$(_O) upp_hot$(_O) upp_sys$(_O) upp_pack$(_O) upp_sort$(_O) \
Expand Down Expand Up @@ -76,6 +76,9 @@ uglobals$(_O): $(H) globals.c INTERN.h perlapi.h
ugv$(_O): $(HE) gv.c
$(CC) -c -o $@ $(CFLAGS) gv.c

umro$(_O): $(HE) mro.c
$(CC) -c -o $@ $(CFLAGS) mro.c

uhv$(_O): $(HE) hv.c
$(CC) -c -o $@ $(CFLAGS) hv.c

Expand Down
1 change: 1 addition & 0 deletions NetWare/Makefile
Expand Up @@ -701,6 +701,7 @@ MICROCORE_SRC = \
..\dump.c \
..\globals.c \
..\gv.c \
..\mro.c \
..\hv.c \
..\locale.c \
..\mathoms.c \
Expand Down
10 changes: 10 additions & 0 deletions embed.fnc
Expand Up @@ -282,6 +282,16 @@ Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|boo
Ap |GV* |gv_fetchfile |NN const char* name
Ap |GV* |gv_fetchfile_flags|NN const char *const name|const STRLEN len\
|const U32 flags
ApM |struct mro_meta* |mro_meta_init |NN HV* stash
#if defined(USE_ITHREADS)
ApM |struct mro_meta* |mro_meta_dup |NN struct mro_meta* smeta|NN CLONE_PARAMS* param
#endif
ApM |AV* |mro_get_linear_isa|NN HV* stash
ApM |AV* |mro_get_linear_isa_c3|NN HV* stash|I32 level
ApM |AV* |mro_get_linear_isa_dfs|NN HV* stash|I32 level
ApM |void |mro_isa_changed_in|NN HV* stash
ApM |void |mro_method_changed_in |NN HV* stash
ApM |void |boot_core_mro
Apd |GV* |gv_fetchmeth |NULLOK HV* stash|NN const char* name|STRLEN len|I32 level
Apd |GV* |gv_fetchmeth_autoload |NULLOK HV* stash|NN const char* name|STRLEN len|I32 level
Apdmb |GV* |gv_fetchmethod |NULLOK HV* stash|NN const char* name
Expand Down
20 changes: 20 additions & 0 deletions embed.h
Expand Up @@ -267,6 +267,16 @@
#define gv_efullname4 Perl_gv_efullname4
#define gv_fetchfile Perl_gv_fetchfile
#define gv_fetchfile_flags Perl_gv_fetchfile_flags
#define mro_meta_init Perl_mro_meta_init
#if defined(USE_ITHREADS)
#define mro_meta_dup Perl_mro_meta_dup
#endif
#define mro_get_linear_isa Perl_mro_get_linear_isa
#define mro_get_linear_isa_c3 Perl_mro_get_linear_isa_c3
#define mro_get_linear_isa_dfs Perl_mro_get_linear_isa_dfs
#define mro_isa_changed_in Perl_mro_isa_changed_in
#define mro_method_changed_in Perl_mro_method_changed_in
#define boot_core_mro Perl_boot_core_mro
#define gv_fetchmeth Perl_gv_fetchmeth
#define gv_fetchmeth_autoload Perl_gv_fetchmeth_autoload
#define gv_fetchmethod_autoload Perl_gv_fetchmethod_autoload
Expand Down Expand Up @@ -2511,6 +2521,16 @@
#define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d)
#define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a)
#define gv_fetchfile_flags(a,b,c) Perl_gv_fetchfile_flags(aTHX_ a,b,c)
#define mro_meta_init(a) Perl_mro_meta_init(aTHX_ a)
#if defined(USE_ITHREADS)
#define mro_meta_dup(a,b) Perl_mro_meta_dup(aTHX_ a,b)
#endif
#define mro_get_linear_isa(a) Perl_mro_get_linear_isa(aTHX_ a)
#define mro_get_linear_isa_c3(a,b) Perl_mro_get_linear_isa_c3(aTHX_ a,b)
#define mro_get_linear_isa_dfs(a,b) Perl_mro_get_linear_isa_dfs(aTHX_ a,b)
#define mro_isa_changed_in(a) Perl_mro_isa_changed_in(aTHX_ a)
#define mro_method_changed_in(a) Perl_mro_method_changed_in(aTHX_ a)
#define boot_core_mro() Perl_boot_core_mro(aTHX)
#define gv_fetchmeth(a,b,c,d) Perl_gv_fetchmeth(aTHX_ a,b,c,d)
#define gv_fetchmeth_autoload(a,b,c,d) Perl_gv_fetchmeth_autoload(aTHX_ a,b,c,d)
#define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c)
Expand Down
2 changes: 1 addition & 1 deletion ext/B/t/b.t
Expand Up @@ -169,7 +169,7 @@ is(B::opnumber("chop"), 38, "Testing opnumber with opname (chop)");
{
no warnings 'once';
my $sg = B::sub_generation();
*Whatever::hand_waving = sub { };
*UNIVERSAL::hand_waving = sub { };
ok( $sg < B::sub_generation, "sub_generation increments" );
}

Expand Down
8 changes: 8 additions & 0 deletions global.sym
Expand Up @@ -135,6 +135,14 @@ Perl_gv_efullname3
Perl_gv_efullname4
Perl_gv_fetchfile
Perl_gv_fetchfile_flags
Perl_mro_meta_init
Perl_mro_meta_dup
Perl_mro_get_linear_isa
Perl_mro_get_linear_isa_c3
Perl_mro_get_linear_isa_dfs
Perl_mro_isa_changed_in
Perl_mro_method_changed_in
Perl_boot_core_mro
Perl_gv_fetchmeth
Perl_gv_fetchmeth_autoload
Perl_gv_fetchmethod
Expand Down

0 comments on commit e1a479c

Please sign in to comment.