diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-05 05:16:46 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-05 05:16:46 +0000 |
commit | 6ab08d2e8dd0c382d41e477f8255d7d6e4e67d9b (patch) | |
tree | eb5005287a495637cb849619d43dd717e0bcb4ad | |
parent | 3105141c7d7a02af9b724dfa6374f4579a9eff02 (diff) |
configure.in, missing.h: jemalloc mangling
* configure.in (with-jemalloc): also check for header, for ABIs
which JEMALLOC_MANGLE is needed, i.e., Mach-O and PE-COFF
platforms. [ruby-core:62939] [Feature #9113]
* include/ruby/missing.h: include alternative malloc header to
replace memory management functions.
* dln.c, io.c, parse.y, st.c: undef malloc family before
re-definition to suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | configure.in | 18 | ||||
-rw-r--r-- | dln.c | 1 | ||||
-rw-r--r-- | include/ruby/missing.h | 3 | ||||
-rw-r--r-- | io.c | 1 | ||||
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | st.c | 4 |
7 files changed, 41 insertions, 2 deletions
@@ -1,3 +1,15 @@ +Thu Jun 5 14:16:41 2014 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * configure.in (with-jemalloc): also check for header, for ABIs + which JEMALLOC_MANGLE is needed, i.e., Mach-O and PE-COFF + platforms. [ruby-core:62939] [Feature #9113] + + * include/ruby/missing.h: include alternative malloc header to + replace memory management functions. + + * dln.c, io.c, parse.y, st.c: undef malloc family before + re-definition to suppress warnings. + Thu Jun 5 12:52:18 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com> * man/ruby.1: remove rubyforge entry. diff --git a/configure.in b/configure.in index 90219af803..555c323321 100644 --- a/configure.in +++ b/configure.in @@ -1177,8 +1177,22 @@ AC_ARG_WITH([jemalloc], [AS_HELP_STRING([--with-jemalloc],[use jemalloc allocator])], [with_jemalloc=yes], [with_jemalloc=no]) AS_IF([test "x$with_jemalloc" = xyes],[ - AC_CHECK_LIB([jemalloc],[malloc_conf],[LIBS="-ljemalloc $LIBS"], - [AC_MSG_ERROR([jemalloc requested but not found])])]) + AC_CHECK_LIB([jemalloc],[malloc_conf],[], [with_jemalloc=no]) + AS_IF([test "x$with_jemalloc" != xyes],[ + AC_CHECK_HEADER(jemalloc/jemalloc.h, [ + AC_DEFINE(RUBY_ALTERNATIVE_MALLOC_HEADER, [<jemalloc/jemalloc.h>]) + AC_DEFINE(JEMALLOC_MANGLE) + with_jemalloc=yes + ]) + ]) + AS_IF([test "x$with_jemalloc" = xyes], + [ + ac_cv_func_malloc_usable_size=yes + LIBS="-ljemalloc $LIBS" + ], + [AC_MSG_ERROR([jemalloc requested but not found]) + ]) +]) dnl check for large file stuff mv confdefs.h confdefs1.h @@ -47,6 +47,7 @@ void *xcalloc(); void *xrealloc(); #endif +#undef free #define free(x) xfree(x) #include <stdio.h> diff --git a/include/ruby/missing.h b/include/ruby/missing.h index 53e0833814..161d95430a 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -21,6 +21,9 @@ extern "C" { #include "ruby/config.h" #include <stddef.h> #include <math.h> /* for INFINITY and NAN */ +#ifdef RUBY_ALTERNATIVE_MALLOC_HEADER +# include RUBY_ALTERNATIVE_MALLOC_HEADER +#endif #ifdef RUBY_EXTCONF_H #include RUBY_EXTCONF_H #endif @@ -21,6 +21,7 @@ #include <errno.h> #include "ruby_atomic.h" +#undef free #define free(x) xfree(x) #if defined(DOSISH) || defined(__CYGWIN__) @@ -35,6 +35,10 @@ #define YYREALLOC(ptr, size) rb_parser_realloc(parser, (ptr), (size)) #define YYCALLOC(nelem, size) rb_parser_calloc(parser, (nelem), (size)) #define YYFREE(ptr) rb_parser_free(parser, (ptr)) +#undef malloc +#undef realloc +#undef calloc +#undef free #define malloc YYMALLOC #define realloc YYREALLOC #define calloc YYCALLOC @@ -73,6 +73,10 @@ static const struct st_hash_type type_strcasehash = { static void rehash(st_table *); #ifdef RUBY +#undef malloc +#undef realloc +#undef calloc +#undef free #define malloc xmalloc #define calloc xcalloc #define realloc xrealloc |