This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Get -Accflags=-DPERL_MEM_LOG compiling again
authorMatthew Horsfall <wolfsage@gmail.com>
Fri, 1 Apr 2016 16:44:49 +0000 (12:44 -0400)
committerDavid Mitchell <davem@iabyn.com>
Tue, 5 Apr 2016 11:08:24 +0000 (12:08 +0100)
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.

embed.fnc
embed.h
handy.h
pod/perlhacktips.pod
proto.h
util.c

index ec5921a..7f60ae1 100644 (file)
--- 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 (file)
--- a/embed.h
+++ b/embed.h
 #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 (file)
--- 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 *funcname);
-
-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 {
index 42b63d9..1dd715a 100644 (file)
@@ -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 (file)
--- 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 *funcname);
+#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 (file)
--- 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;