aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-05 05:16:46 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-06-05 05:16:46 +0000
commit6ab08d2e8dd0c382d41e477f8255d7d6e4e67d9b (patch)
treeeb5005287a495637cb849619d43dd717e0bcb4ad
parent3105141c7d7a02af9b724dfa6374f4579a9eff02 (diff)
downloadruby-6ab08d2e8dd0c382d41e477f8255d7d6e4e67d9b.tar.gz
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--ChangeLog12
-rw-r--r--configure.in18
-rw-r--r--dln.c1
-rw-r--r--include/ruby/missing.h3
-rw-r--r--io.c1
-rw-r--r--parse.y4
-rw-r--r--st.c4
7 files changed, 41 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f4e9ca16c1..5f46c2efa4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/dln.c b/dln.c
index b3522f111c..25e40cf1e6 100644
--- a/dln.c
+++ b/dln.c
@@ -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
diff --git a/io.c b/io.c
index 40ee3d435d..6926316569 100644
--- a/io.c
+++ b/io.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include "ruby_atomic.h"
+#undef free
#define free(x) xfree(x)
#if defined(DOSISH) || defined(__CYGWIN__)
diff --git a/parse.y b/parse.y
index 580088eeab..2e73d64401 100644
--- a/parse.y
+++ b/parse.y
@@ -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
diff --git a/st.c b/st.c
index ff5bb305ab..f26443f99c 100644
--- a/st.c
+++ b/st.c
@@ -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