In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/6fb87544af0ff2b9b9c12038bc0fb261f56a7d88?hp=726368e016b611dfdf44e3a9a53e572b2e25de73>
- Log ----------------------------------------------------------------- commit 6fb87544af0ff2b9b9c12038bc0fb261f56a7d88 Author: Matthew Horsfall <[email protected]> Date: Fri Apr 1 12:44:49 2016 -0400 Get -Accflags=-DPERL_MEM_LOG compiling again It had rotted a bit Well, more than one probably. Move the declarations of the functions Perl_mem_log_alloc etc from handy.h into embed.fnc where whey belong, and where Malloc_t will have already been defined. ----------------------------------------------------------------------- Summary of changes: embed.fnc | 6 ++++++ embed.h | 5 +++++ handy.h | 6 ------ pod/perlhacktips.pod | 11 ++++++----- proto.h | 11 +++++++++++ util.c | 6 ++++++ 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/embed.fnc b/embed.fnc index ec5921a..7f60ae1 100644 --- a/embed.fnc +++ b/embed.fnc @@ -2563,6 +2563,12 @@ sn |void |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \ #endif #endif +#if defined(PERL_MEM_LOG) +pn |Malloc_t |mem_log_alloc |const UV nconst|UV typesize|NN const char *type_name|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname +pn |Malloc_t |mem_log_realloc |const UV n|const UV typesize|NN const char *type_name|Malloc_t oldalloc|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname +pn |Malloc_t |mem_log_free |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname +#endif + #if defined(PERL_IN_NUMERIC_C) #ifndef USE_QUADMATH sn |NV|mulexp10 |NV value|I32 exponent diff --git a/embed.h b/embed.h index ab76937..c24eb31 100644 --- a/embed.h +++ b/embed.h @@ -1814,6 +1814,11 @@ #define mem_log_common S_mem_log_common # endif # endif +# if defined(PERL_MEM_LOG) +#define mem_log_alloc Perl_mem_log_alloc +#define mem_log_free Perl_mem_log_free +#define mem_log_realloc Perl_mem_log_realloc +# endif # if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C) #define pidgone(a,b) S_pidgone(aTHX_ a,b) # endif diff --git a/handy.h b/handy.h index a0a7cde..932a874 100644 --- a/handy.h +++ b/handy.h @@ -2049,12 +2049,6 @@ PoisonWith(0xEF) for catching access to freed memory. * - lots of ENV reads */ -PERL_CALLCONV Malloc_t Perl_mem_log_alloc(const UV n, const UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname); - -PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcnam ... [3 chars truncated] - -PERL_CALLCONV Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname); - # ifdef PERL_CORE # ifndef PERL_MEM_LOG_NOIMPL enum mem_log_type { diff --git a/pod/perlhacktips.pod b/pod/perlhacktips.pod index 42b63d9..1dd715a 100644 --- a/pod/perlhacktips.pod +++ b/pod/perlhacktips.pod @@ -1451,12 +1451,13 @@ C<-DPERL_MEM_LOG> instead. =head2 PERL_MEM_LOG -If compiled with C<-DPERL_MEM_LOG>, both memory and SV allocations go -through logging functions, which is handy for breakpoint setting. +If compiled with C<-DPERL_MEM_LOG> (C<-Accflags=-DPERL_MEM_LOG>), both +memory and SV allocations go through logging functions, which is +handy for breakpoint setting. -Unless C<-DPERL_MEM_LOG_NOIMPL> is also compiled, the logging functions -read $ENV{PERL_MEM_LOG} to determine whether to log the event, and if -so how: +Unless C<-DPERL_MEM_LOG_NOIMPL> (C<-Accflags=-DPERL_MEM_LOG_NOIMPL>) is +also compiled, the logging functions read $ENV{PERL_MEM_LOG} to +determine whether to log the event, and if so how: $ENV{PERL_MEM_LOG} =~ /m/ Log all memory ops $ENV{PERL_MEM_LOG} =~ /s/ Log all SV ops diff --git a/proto.h b/proto.h index c43c4fc..4beb21b 100644 --- a/proto.h +++ b/proto.h @@ -5473,6 +5473,17 @@ STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesiz assert(type_name); assert(filename); assert(funcname) # endif #endif +#if defined(PERL_MEM_LOG) +PERL_CALLCONV Malloc_t Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname); +#define PERL_ARGS_ASSERT_MEM_LOG_ALLOC \ + assert(type_name); assert(filename); assert(funcname) +PERL_CALLCONV Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname); +#define PERL_ARGS_ASSERT_MEM_LOG_FREE \ + assert(filename); assert(funcname) +PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcnam ... [3 chars truncated] +#define PERL_ARGS_ASSERT_MEM_LOG_REALLOC \ + assert(type_name); assert(filename); assert(funcname) +#endif #if defined(PERL_OP_PARENT) PERL_CALLCONV OP* Perl_op_parent(OP *o); #define PERL_ARGS_ASSERT_OP_PARENT \ diff --git a/util.c b/util.c index 9ad40c1..89c44e7 100644 --- a/util.c +++ b/util.c @@ -5018,6 +5018,8 @@ Perl_mem_log_alloc(const UV n, const UV typesize, const char *type_name, const char *filename, const int linenumber, const char *funcname) { + PERL_ARGS_ASSERT_MEM_LOG_ALLOC; + mem_log_common_if(MLT_ALLOC, n, typesize, type_name, NULL, NULL, newalloc, filename, linenumber, funcname); @@ -5030,6 +5032,8 @@ Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, const char *filename, const int linenumber, const char *funcname) { + PERL_ARGS_ASSERT_MEM_LOG_REALLOC; + mem_log_common_if(MLT_REALLOC, n, typesize, type_name, NULL, oldalloc, newalloc, filename, linenumber, funcname); @@ -5041,6 +5045,8 @@ Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname) { + PERL_ARGS_ASSERT_MEM_LOG_FREE; + mem_log_common_if(MLT_FREE, 0, 0, "", NULL, oldalloc, NULL, filename, linenumber, funcname); return oldalloc; -- Perl5 Master Repository
