Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
2753acf1
Commit
2753acf1
authored
Nov 25, 2011
by
Salvatore Sanfilippo
Browse files
Merge pull request #208 from jbergstroem/jemalloc-2.2.5
Update to jemalloc 2.2.5
parents
3e0a975e
1d03c1c9
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
deps/jemalloc/ChangeLog
View file @
2753acf1
...
...
@@ -6,6 +6,43 @@ found in the git revision history:
http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
git://canonware.com/jemalloc.git
* 2.2.5 (November 14, 2011)
Bug fixes:
- Fix huge_ralloc() race when using mremap(2). This is a serious bug that
could cause memory corruption and/or crashes.
- Fix huge_ralloc() to maintain chunk statistics.
- Fix malloc_stats_print(..., "a") output.
* 2.2.4 (November 5, 2011)
Bug fixes:
- Initialize arenas_tsd before using it. This bug existed for 2.2.[0-3], as
well as for --disable-tls builds in earlier releases.
- Do not assume a 4 KiB page size in test/rallocm.c.
* 2.2.3 (August 31, 2011)
This version fixes numerous bugs related to heap profiling.
Bug fixes:
- Fix a prof-related race condition. This bug could cause memory corruption,
but only occurred in non-default configurations (prof_accum:false).
- Fix off-by-one backtracing issues (make sure that prof_alloc_prep() is
excluded from backtraces).
- Fix a prof-related bug in realloc() (only triggered by OOM errors).
- Fix prof-related bugs in allocm() and rallocm().
- Fix prof_tdata_cleanup() for --disable-tls builds.
- Fix a relative include path, to fix objdir builds.
* 2.2.2 (July 30, 2011)
Bug fixes:
- Fix a build error for --disable-tcache.
- Fix assertions in arena_purge() (for real this time).
- Add the --with-private-namespace option. This is a workaround for symbol
conflicts that can inadvertently arise when using static libraries.
* 2.2.1 (March 30, 2011)
Bug fixes:
...
...
deps/jemalloc/INSTALL
View file @
2753acf1
...
...
@@ -42,6 +42,12 @@ any of the following arguments (not a definitive list) to 'configure':
jemalloc overlays the default malloc zone, but makes no attempt to actually
replace the "malloc", "calloc", etc. symbols.
--with-private-namespace=<prefix>
Prefix all library-private APIs with <prefix>. For shared libraries,
symbol visibility mechanisms prevent these symbols from being exported, but
for static libraries, naming collisions are a real possibility. By
default, the prefix is "" (empty string).
--with-install-suffix=<suffix>
Append <suffix> to the base name of all installed files, such that multiple
versions of jemalloc can coexist in the same installation directory. For
...
...
deps/jemalloc/Makefile.in
View file @
2753acf1
...
...
@@ -136,9 +136,9 @@ doc: $(DOCS)
@objroot@lib/libjemalloc@install_suffix@.$(SO)
@
mkdir
-p
$
(
@D
)
ifneq
(@RPATH@, )
$(CC)
-o
$@
$<
@RPATH@@objroot@lib
-L
@objroot@lib
-ljemalloc
@install_suffix@
$(CC)
-o
$@
$<
@RPATH@@objroot@lib
-L
@objroot@lib
-ljemalloc
@install_suffix@
-lpthread
else
$(CC)
-o
$@
$<
-L
@objroot@lib
-ljemalloc
@install_suffix@
$(CC)
-o
$@
$<
-L
@objroot@lib
-ljemalloc
@install_suffix@
-lpthread
endif
install_bin
:
...
...
deps/jemalloc/VERSION
View file @
2753acf1
2.2.
1
-0-g
5ef7abf6d846720fb3fb8c737861c99b5ad1d862
2.2.
5
-0-g
fc1bb70e5f0d9a58b39efa39cc549b5af5104760
deps/jemalloc/configure
View file @
2753acf1
...
...
@@ -617,8 +617,6 @@ enable_prof
enable_stats
enable_debug
install_suffix
jemalloc_cprefix
jemalloc_prefix
AUTOCONF
LD
AR
...
...
@@ -705,6 +703,7 @@ with_xslroot
with_rpath
enable_autogen
with_jemalloc_prefix
with_private_namespace
with_install_suffix
enable_cc_silence
enable_debug
...
...
@@ -1375,6 +1374,8 @@ Optional Packages:
--with-rpath=<rpath> Colon-separated rpath (ELF systems only)
--with-jemalloc-prefix=<prefix>
Prefix to prepend to all public APIs
--with-private-namespace=<prefix>
Prefix to prepend to all library-private APIs
--with-install-suffix=<suffix>
Suffix to append to all installed files
--with-static-libunwind=<libunwind.a>
...
...
@@ -4800,12 +4801,33 @@ _ACEOF
#define JEMALLOC_CPREFIX "
$JEMALLOC_CPREFIX
"
_ACEOF
jemalloc_prefix
=
"
$JEMALLOC_PREFIX
"
jemalloc_cprefix
=
"
$JEMALLOC_CPREFIX
"
cat
>>
confdefs.h
<<
_ACEOF
#define JEMALLOC_P(string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix)
${
JEMALLOC_PREFIX
}
##string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix
_ACEOF
fi
# Check whether --with-private_namespace was given.
if
test
"
${
with_private_namespace
+set
}
"
=
set
;
then
:
withval
=
$with_private_namespace
;
JEMALLOC_PRIVATE_NAMESPACE
=
"
$with_private_namespace
"
else
JEMALLOC_PRIVATE_NAMESPACE
=
""
fi
cat
>>
confdefs.h
<<
_ACEOF
#define JEMALLOC_PRIVATE_NAMESPACE "
$JEMALLOC_PRIVATE_NAMESPACE
"
_ACEOF
if
test
"x
$JEMALLOC_PRIVATE_NAMESPACE
"
!=
"x"
;
then
cat
>>
confdefs.h
<<
_ACEOF
#define JEMALLOC_P(string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix)
${
JEMALLOC_PREFIX
}
##string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix
#define JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix)
${
JEMALLOC_PRIVATE_NAMESPACE
}
##string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix
_ACEOF
else
cat
>>
confdefs.h
<<
_ACEOF
#define JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix) string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix
_ACEOF
fi
...
...
@@ -5508,7 +5530,7 @@ fi
if
test
-d
"
${
srcroot
}
.
./.
git"
;
then
if
test
-d
"
${
srcroot
}
.git"
;
then
git describe
--long
--abbrev
=
40
>
${
srcroot
}
VERSION
fi
jemalloc_version
=
`
cat
${
srcroot
}
VERSION
`
...
...
@@ -7346,6 +7368,10 @@ $as_echo "abs_objroot : ${abs_objroot}" >&6; }
$as_echo
""
>
&6
;
}
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result: JEMALLOC_PREFIX :
${
JEMALLOC_PREFIX
}
"
>
&5
$as_echo
"JEMALLOC_PREFIX :
${
JEMALLOC_PREFIX
}
"
>
&6
;
}
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result: JEMALLOC_PRIVATE_NAMESPACE"
>
&5
$as_echo
"JEMALLOC_PRIVATE_NAMESPACE"
>
&6
;
}
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result: :
${
JEMALLOC_PRIVATE_NAMESPACE
}
"
>
&5
$as_echo
" :
${
JEMALLOC_PRIVATE_NAMESPACE
}
"
>
&6
;
}
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result: install_suffix :
${
install_suffix
}
"
>
&5
$as_echo
"install_suffix :
${
install_suffix
}
"
>
&6
;
}
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result: autogen :
${
enable_autogen
}
"
>
&5
...
...
deps/jemalloc/configure.ac
View file @
2753acf1
...
...
@@ -292,13 +292,22 @@ if test "x$JEMALLOC_PREFIX" != "x" ; then
JEMALLOC_CPREFIX=`echo ${JEMALLOC_PREFIX} | tr "a-z" "A-Z"`
AC_DEFINE_UNQUOTED([JEMALLOC_PREFIX], ["$JEMALLOC_PREFIX"])
AC_DEFINE_UNQUOTED([JEMALLOC_CPREFIX], ["$JEMALLOC_CPREFIX"])
jemalloc_prefix="$JEMALLOC_PREFIX"
jemalloc_cprefix="$JEMALLOC_CPREFIX"
AC_SUBST([jemalloc_prefix])
AC_SUBST([jemalloc_cprefix])
AC_DEFINE_UNQUOTED([JEMALLOC_P(string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix)], [${JEMALLOC_PREFIX}##string_that_no_one_should_want_to_use_as_a_jemalloc_API_prefix])
fi
dnl Do not mangle library-private APIs by default.
AC_ARG_WITH([private_namespace],
[AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],
[JEMALLOC_PRIVATE_NAMESPACE="$with_private_namespace"],
[JEMALLOC_PRIVATE_NAMESPACE=""]
)
AC_DEFINE_UNQUOTED([JEMALLOC_PRIVATE_NAMESPACE], ["$JEMALLOC_PRIVATE_NAMESPACE"])
if test "x$JEMALLOC_PRIVATE_NAMESPACE" != "x" ; then
AC_DEFINE_UNQUOTED([JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix)], [${JEMALLOC_PRIVATE_NAMESPACE}##string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix])
else
AC_DEFINE_UNQUOTED([JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix)], [string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix])
fi
dnl Do not add suffix to installed files by default.
AC_ARG_WITH([install_suffix],
[AS_HELP_STRING([--with-install-suffix=<suffix>], [Suffix to append to all installed files])],
...
...
@@ -688,7 +697,7 @@ dnl jemalloc configuration.
dnl
dnl Set VERSION if source directory has an embedded git repository.
if test -d "${srcroot}.
./.
git" ; then
if test -d "${srcroot}.git" ; then
git describe --long --abbrev=40 > ${srcroot}VERSION
fi
jemalloc_version=`cat ${srcroot}VERSION`
...
...
@@ -905,6 +914,8 @@ AC_MSG_RESULT([objroot : ${objroot}])
AC_MSG_RESULT([abs_objroot : ${abs_objroot}])
AC_MSG_RESULT([])
AC_MSG_RESULT([JEMALLOC_PREFIX : ${JEMALLOC_PREFIX}])
AC_MSG_RESULT([JEMALLOC_PRIVATE_NAMESPACE])
AC_MSG_RESULT([ : ${JEMALLOC_PRIVATE_NAMESPACE}])
AC_MSG_RESULT([install_suffix : ${install_suffix}])
AC_MSG_RESULT([autogen : ${enable_autogen}])
AC_MSG_RESULT([cc-silence : ${enable_cc_silence}])
...
...
deps/jemalloc/doc/jemalloc.3
View file @
2753acf1
...
...
@@ -2,12 +2,12 @@
.\" Title: JEMALLOC
.\" Author: Jason Evans
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\" Date:
03/30
/2011
.\" Date:
11/14
/2011
.\" Manual: User Manual
.\" Source: jemalloc 2.2.
1
-0-g
5ef7abf6d846720fb3fb8c737861c99b5ad1d862
.\" Source: jemalloc 2.2.
5
-0-g
fc1bb70e5f0d9a58b39efa39cc549b5af5104760
.\" Language: English
.\"
.TH "JEMALLOC" "3" "
03/30
/2011" "jemalloc 2.2.
1
-0-g
5ef7abf6d846
" "User Manual"
.TH "JEMALLOC" "3" "
11/14
/2011" "jemalloc 2.2.
5
-0-g
fc1bb70e5f0d
" "User Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
...
...
@@ -31,7 +31,7 @@
jemalloc \- general purpose memory allocation functions
.SH "LIBRARY"
.PP
This manual describes jemalloc 2\&.2\&.
1
\-0\-g
5ef7abf6d846720fb3fb8c737861c99b5ad1d862
\&. More information can be found at the
This manual describes jemalloc 2\&.2\&.
5
\-0\-g
fc1bb70e5f0d9a58b39efa39cc549b5af5104760
\&. More information can be found at the
\m[blue]\fBjemalloc website\fR\m[]\&\s-2\u[1]\d\s+2\&.
.SH "SYNOPSIS"
.sp
...
...
@@ -1215,7 +1215,7 @@ is successfully written to\&.
Number of file descriptors in use for swap\&.
.RE
.PP
"swap\&.fds" (\fBint *\fR) r
\-
[\fB\-\-enable\-swap\fR]
"swap\&.fds" (\fBint *\fR) r
w
[\fB\-\-enable\-swap\fR]
.RS 4
When written to, the files associated with the specified file descriptors are contiguously mapped via
\fBmmap\fR(2)\&. The resulting virtual memory region is preferred over anonymous
...
...
deps/jemalloc/doc/jemalloc.html
View file @
2753acf1
This diff is collapsed.
Click to expand it.
deps/jemalloc/doc/jemalloc.xml.in
View file @
2753acf1
...
...
@@ -2025,7 +2025,7 @@ malloc_conf = "xmalloc:true";]]></programlisting>
<term>
<mallctl>
swap.fds
</mallctl>
(
<type>
int *
</type>
)
<literal>
r
-
</literal>
<literal>
r
w
</literal>
[
<option>
--enable-swap
</option>
]
</term>
<listitem><para>
When written to, the files associated with the
...
...
deps/jemalloc/include/jemalloc/internal/chunk.h
View file @
2753acf1
...
...
@@ -50,7 +50,7 @@ extern size_t map_bias; /* Number of arena chunk header pages. */
extern
size_t
arena_maxclass
;
/* Max size class for arenas. */
void
*
chunk_alloc
(
size_t
size
,
bool
base
,
bool
*
zero
);
void
chunk_dealloc
(
void
*
chunk
,
size_t
size
);
void
chunk_dealloc
(
void
*
chunk
,
size_t
size
,
bool
unmap
);
bool
chunk_boot
(
void
);
#endif
/* JEMALLOC_H_EXTERNS */
...
...
deps/jemalloc/include/jemalloc/internal/hash.h
View file @
2753acf1
...
...
@@ -26,7 +26,7 @@ uint64_t hash(const void *key, size_t len, uint64_t seed);
JEMALLOC_INLINE
uint64_t
hash
(
const
void
*
key
,
size_t
len
,
uint64_t
seed
)
{
const
uint64_t
m
=
0xc6a4a7935bd1e995
;
const
uint64_t
m
=
0xc6a4a7935bd1e995
LLU
;
const
int
r
=
47
;
uint64_t
h
=
seed
^
(
len
*
m
);
const
uint64_t
*
data
=
(
const
uint64_t
*
)
key
;
...
...
deps/jemalloc/include/jemalloc/internal/jemalloc_internal.h.in
View file @
2753acf1
...
...
@@ -33,6 +33,8 @@
#define JEMALLOC_MANGLE
#include "../jemalloc@install_suffix@.h"
#include "jemalloc/internal/private_namespace.h"
#if (defined(JEMALLOC_OSATOMIC) || defined(JEMALLOC_OSSPIN))
#include <libkern/OSAtomic.h>
#endif
...
...
@@ -633,7 +635,11 @@ ipalloc(size_t usize, size_t alignment, bool zero)
if (usize <= arena_maxclass && alignment <= PAGE_SIZE)
ret = arena_malloc(usize, zero);
else {
size_t run_size = 0;
size_t run_size
#ifdef JEMALLOC_CC_SILENCE
= 0
#endif
;
/*
* Ideally we would only ever call sa2u() once per aligned
...
...
deps/jemalloc/include/jemalloc/internal/private_namespace.h
0 → 100644
View file @
2753acf1
#define arena_bin_index JEMALLOC_N(arena_bin_index)
#define arena_boot JEMALLOC_N(arena_boot)
#define arena_dalloc JEMALLOC_N(arena_dalloc)
#define arena_dalloc_bin JEMALLOC_N(arena_dalloc_bin)
#define arena_dalloc_large JEMALLOC_N(arena_dalloc_large)
#define arena_malloc JEMALLOC_N(arena_malloc)
#define arena_malloc_large JEMALLOC_N(arena_malloc_large)
#define arena_malloc_small JEMALLOC_N(arena_malloc_small)
#define arena_new JEMALLOC_N(arena_new)
#define arena_palloc JEMALLOC_N(arena_palloc)
#define arena_prof_accum JEMALLOC_N(arena_prof_accum)
#define arena_prof_ctx_get JEMALLOC_N(arena_prof_ctx_get)
#define arena_prof_ctx_set JEMALLOC_N(arena_prof_ctx_set)
#define arena_prof_promoted JEMALLOC_N(arena_prof_promoted)
#define arena_purge_all JEMALLOC_N(arena_purge_all)
#define arena_ralloc JEMALLOC_N(arena_ralloc)
#define arena_ralloc_no_move JEMALLOC_N(arena_ralloc_no_move)
#define arena_run_regind JEMALLOC_N(arena_run_regind)
#define arena_salloc JEMALLOC_N(arena_salloc)
#define arena_salloc_demote JEMALLOC_N(arena_salloc_demote)
#define arena_stats_merge JEMALLOC_N(arena_stats_merge)
#define arena_tcache_fill_small JEMALLOC_N(arena_tcache_fill_small)
#define arenas_bin_i_index JEMALLOC_N(arenas_bin_i_index)
#define arenas_extend JEMALLOC_N(arenas_extend)
#define arenas_lrun_i_index JEMALLOC_N(arenas_lrun_i_index)
#define atomic_add_uint32 JEMALLOC_N(atomic_add_uint32)
#define atomic_add_uint64 JEMALLOC_N(atomic_add_uint64)
#define atomic_sub_uint32 JEMALLOC_N(atomic_sub_uint32)
#define atomic_sub_uint64 JEMALLOC_N(atomic_sub_uint64)
#define base_alloc JEMALLOC_N(base_alloc)
#define base_boot JEMALLOC_N(base_boot)
#define base_node_alloc JEMALLOC_N(base_node_alloc)
#define base_node_dealloc JEMALLOC_N(base_node_dealloc)
#define bitmap_full JEMALLOC_N(bitmap_full)
#define bitmap_get JEMALLOC_N(bitmap_get)
#define bitmap_info_init JEMALLOC_N(bitmap_info_init)
#define bitmap_info_ngroups JEMALLOC_N(bitmap_info_ngroups)
#define bitmap_init JEMALLOC_N(bitmap_init)
#define bitmap_set JEMALLOC_N(bitmap_set)
#define bitmap_sfu JEMALLOC_N(bitmap_sfu)
#define bitmap_size JEMALLOC_N(bitmap_size)
#define bitmap_unset JEMALLOC_N(bitmap_unset)
#define bt_init JEMALLOC_N(bt_init)
#define buferror JEMALLOC_N(buferror)
#define choose_arena JEMALLOC_N(choose_arena)
#define choose_arena_hard JEMALLOC_N(choose_arena_hard)
#define chunk_alloc JEMALLOC_N(chunk_alloc)
#define chunk_alloc_dss JEMALLOC_N(chunk_alloc_dss)
#define chunk_alloc_mmap JEMALLOC_N(chunk_alloc_mmap)
#define chunk_alloc_mmap_noreserve JEMALLOC_N(chunk_alloc_mmap_noreserve)
#define chunk_alloc_swap JEMALLOC_N(chunk_alloc_swap)
#define chunk_boot JEMALLOC_N(chunk_boot)
#define chunk_dealloc JEMALLOC_N(chunk_dealloc)
#define chunk_dealloc_dss JEMALLOC_N(chunk_dealloc_dss)
#define chunk_dealloc_mmap JEMALLOC_N(chunk_dealloc_mmap)
#define chunk_dealloc_swap JEMALLOC_N(chunk_dealloc_swap)
#define chunk_dss_boot JEMALLOC_N(chunk_dss_boot)
#define chunk_in_dss JEMALLOC_N(chunk_in_dss)
#define chunk_in_swap JEMALLOC_N(chunk_in_swap)
#define chunk_mmap_boot JEMALLOC_N(chunk_mmap_boot)
#define chunk_swap_boot JEMALLOC_N(chunk_swap_boot)
#define chunk_swap_enable JEMALLOC_N(chunk_swap_enable)
#define ckh_bucket_search JEMALLOC_N(ckh_bucket_search)
#define ckh_count JEMALLOC_N(ckh_count)
#define ckh_delete JEMALLOC_N(ckh_delete)
#define ckh_evict_reloc_insert JEMALLOC_N(ckh_evict_reloc_insert)
#define ckh_insert JEMALLOC_N(ckh_insert)
#define ckh_isearch JEMALLOC_N(ckh_isearch)
#define ckh_iter JEMALLOC_N(ckh_iter)
#define ckh_new JEMALLOC_N(ckh_new)
#define ckh_pointer_hash JEMALLOC_N(ckh_pointer_hash)
#define ckh_pointer_keycomp JEMALLOC_N(ckh_pointer_keycomp)
#define ckh_rebuild JEMALLOC_N(ckh_rebuild)
#define ckh_remove JEMALLOC_N(ckh_remove)
#define ckh_search JEMALLOC_N(ckh_search)
#define ckh_string_hash JEMALLOC_N(ckh_string_hash)
#define ckh_string_keycomp JEMALLOC_N(ckh_string_keycomp)
#define ckh_try_bucket_insert JEMALLOC_N(ckh_try_bucket_insert)
#define ckh_try_insert JEMALLOC_N(ckh_try_insert)
#define create_zone JEMALLOC_N(create_zone)
#define ctl_boot JEMALLOC_N(ctl_boot)
#define ctl_bymib JEMALLOC_N(ctl_bymib)
#define ctl_byname JEMALLOC_N(ctl_byname)
#define ctl_nametomib JEMALLOC_N(ctl_nametomib)
#define extent_tree_ad_first JEMALLOC_N(extent_tree_ad_first)
#define extent_tree_ad_insert JEMALLOC_N(extent_tree_ad_insert)
#define extent_tree_ad_iter JEMALLOC_N(extent_tree_ad_iter)
#define extent_tree_ad_iter_recurse JEMALLOC_N(extent_tree_ad_iter_recurse)
#define extent_tree_ad_iter_start JEMALLOC_N(extent_tree_ad_iter_start)
#define extent_tree_ad_last JEMALLOC_N(extent_tree_ad_last)
#define extent_tree_ad_new JEMALLOC_N(extent_tree_ad_new)
#define extent_tree_ad_next JEMALLOC_N(extent_tree_ad_next)
#define extent_tree_ad_nsearch JEMALLOC_N(extent_tree_ad_nsearch)
#define extent_tree_ad_prev JEMALLOC_N(extent_tree_ad_prev)
#define extent_tree_ad_psearch JEMALLOC_N(extent_tree_ad_psearch)
#define extent_tree_ad_remove JEMALLOC_N(extent_tree_ad_remove)
#define extent_tree_ad_reverse_iter JEMALLOC_N(extent_tree_ad_reverse_iter)
#define extent_tree_ad_reverse_iter_recurse JEMALLOC_N(extent_tree_ad_reverse_iter_recurse)
#define extent_tree_ad_reverse_iter_start JEMALLOC_N(extent_tree_ad_reverse_iter_start)
#define extent_tree_ad_search JEMALLOC_N(extent_tree_ad_search)
#define extent_tree_szad_first JEMALLOC_N(extent_tree_szad_first)
#define extent_tree_szad_insert JEMALLOC_N(extent_tree_szad_insert)
#define extent_tree_szad_iter JEMALLOC_N(extent_tree_szad_iter)
#define extent_tree_szad_iter_recurse JEMALLOC_N(extent_tree_szad_iter_recurse)
#define extent_tree_szad_iter_start JEMALLOC_N(extent_tree_szad_iter_start)
#define extent_tree_szad_last JEMALLOC_N(extent_tree_szad_last)
#define extent_tree_szad_new JEMALLOC_N(extent_tree_szad_new)
#define extent_tree_szad_next JEMALLOC_N(extent_tree_szad_next)
#define extent_tree_szad_nsearch JEMALLOC_N(extent_tree_szad_nsearch)
#define extent_tree_szad_prev JEMALLOC_N(extent_tree_szad_prev)
#define extent_tree_szad_psearch JEMALLOC_N(extent_tree_szad_psearch)
#define extent_tree_szad_remove JEMALLOC_N(extent_tree_szad_remove)
#define extent_tree_szad_reverse_iter JEMALLOC_N(extent_tree_szad_reverse_iter)
#define extent_tree_szad_reverse_iter_recurse JEMALLOC_N(extent_tree_szad_reverse_iter_recurse)
#define extent_tree_szad_reverse_iter_start JEMALLOC_N(extent_tree_szad_reverse_iter_start)
#define extent_tree_szad_search JEMALLOC_N(extent_tree_szad_search)
#define hash JEMALLOC_N(hash)
#define huge_boot JEMALLOC_N(huge_boot)
#define huge_dalloc JEMALLOC_N(huge_dalloc)
#define huge_malloc JEMALLOC_N(huge_malloc)
#define huge_palloc JEMALLOC_N(huge_palloc)
#define huge_prof_ctx_get JEMALLOC_N(huge_prof_ctx_get)
#define huge_prof_ctx_set JEMALLOC_N(huge_prof_ctx_set)
#define huge_ralloc JEMALLOC_N(huge_ralloc)
#define huge_ralloc_no_move JEMALLOC_N(huge_ralloc_no_move)
#define huge_salloc JEMALLOC_N(huge_salloc)
#define iallocm JEMALLOC_N(iallocm)
#define icalloc JEMALLOC_N(icalloc)
#define idalloc JEMALLOC_N(idalloc)
#define imalloc JEMALLOC_N(imalloc)
#define ipalloc JEMALLOC_N(ipalloc)
#define iralloc JEMALLOC_N(iralloc)
#define isalloc JEMALLOC_N(isalloc)
#define ivsalloc JEMALLOC_N(ivsalloc)
#define jemalloc_darwin_init JEMALLOC_N(jemalloc_darwin_init)
#define jemalloc_postfork JEMALLOC_N(jemalloc_postfork)
#define jemalloc_prefork JEMALLOC_N(jemalloc_prefork)
#define malloc_cprintf JEMALLOC_N(malloc_cprintf)
#define malloc_mutex_destroy JEMALLOC_N(malloc_mutex_destroy)
#define malloc_mutex_init JEMALLOC_N(malloc_mutex_init)
#define malloc_mutex_lock JEMALLOC_N(malloc_mutex_lock)
#define malloc_mutex_trylock JEMALLOC_N(malloc_mutex_trylock)
#define malloc_mutex_unlock JEMALLOC_N(malloc_mutex_unlock)
#define malloc_printf JEMALLOC_N(malloc_printf)
#define malloc_write JEMALLOC_N(malloc_write)
#define mb_write JEMALLOC_N(mb_write)
#define pow2_ceil JEMALLOC_N(pow2_ceil)
#define prof_backtrace JEMALLOC_N(prof_backtrace)
#define prof_boot0 JEMALLOC_N(prof_boot0)
#define prof_boot1 JEMALLOC_N(prof_boot1)
#define prof_boot2 JEMALLOC_N(prof_boot2)
#define prof_ctx_get JEMALLOC_N(prof_ctx_get)
#define prof_ctx_set JEMALLOC_N(prof_ctx_set)
#define prof_free JEMALLOC_N(prof_free)
#define prof_gdump JEMALLOC_N(prof_gdump)
#define prof_idump JEMALLOC_N(prof_idump)
#define prof_lookup JEMALLOC_N(prof_lookup)
#define prof_malloc JEMALLOC_N(prof_malloc)
#define prof_mdump JEMALLOC_N(prof_mdump)
#define prof_realloc JEMALLOC_N(prof_realloc)
#define prof_sample_accum_update JEMALLOC_N(prof_sample_accum_update)
#define prof_sample_threshold_update JEMALLOC_N(prof_sample_threshold_update)
#define prof_tdata_init JEMALLOC_N(prof_tdata_init)
#define pthread_create JEMALLOC_N(pthread_create)
#define rtree_get JEMALLOC_N(rtree_get)
#define rtree_get_locked JEMALLOC_N(rtree_get_locked)
#define rtree_new JEMALLOC_N(rtree_new)
#define rtree_set JEMALLOC_N(rtree_set)
#define s2u JEMALLOC_N(s2u)
#define sa2u JEMALLOC_N(sa2u)
#define stats_arenas_i_bins_j_index JEMALLOC_N(stats_arenas_i_bins_j_index)
#define stats_arenas_i_index JEMALLOC_N(stats_arenas_i_index)
#define stats_arenas_i_lruns_j_index JEMALLOC_N(stats_arenas_i_lruns_j_index)
#define stats_cactive_add JEMALLOC_N(stats_cactive_add)
#define stats_cactive_get JEMALLOC_N(stats_cactive_get)
#define stats_cactive_sub JEMALLOC_N(stats_cactive_sub)
#define stats_print JEMALLOC_N(stats_print)
#define szone2ozone JEMALLOC_N(szone2ozone)
#define tcache_alloc_easy JEMALLOC_N(tcache_alloc_easy)
#define tcache_alloc_large JEMALLOC_N(tcache_alloc_large)
#define tcache_alloc_small JEMALLOC_N(tcache_alloc_small)
#define tcache_alloc_small_hard JEMALLOC_N(tcache_alloc_small_hard)
#define tcache_bin_flush_large JEMALLOC_N(tcache_bin_flush_large)
#define tcache_bin_flush_small JEMALLOC_N(tcache_bin_flush_small)
#define tcache_boot JEMALLOC_N(tcache_boot)
#define tcache_create JEMALLOC_N(tcache_create)
#define tcache_dalloc_large JEMALLOC_N(tcache_dalloc_large)
#define tcache_dalloc_small JEMALLOC_N(tcache_dalloc_small)
#define tcache_destroy JEMALLOC_N(tcache_destroy)
#define tcache_event JEMALLOC_N(tcache_event)
#define tcache_get JEMALLOC_N(tcache_get)
#define tcache_stats_merge JEMALLOC_N(tcache_stats_merge)
#define thread_allocated_get JEMALLOC_N(thread_allocated_get)
#define thread_allocated_get_hard JEMALLOC_N(thread_allocated_get_hard)
#define u2s JEMALLOC_N(u2s)
deps/jemalloc/include/jemalloc/internal/prof.h
View file @
2753acf1
...
...
@@ -227,9 +227,60 @@ bool prof_boot2(void);
/******************************************************************************/
#ifdef JEMALLOC_H_INLINES
#define PROF_ALLOC_PREP(nignore, size, ret) do { \
prof_tdata_t *prof_tdata; \
prof_bt_t bt; \
\
assert(size == s2u(size)); \
\
prof_tdata = PROF_TCACHE_GET(); \
if (prof_tdata == NULL) { \
prof_tdata = prof_tdata_init(); \
if (prof_tdata == NULL) { \
ret = NULL; \
break; \
} \
} \
\
if (opt_prof_active == false) { \
/* Sampling is currently inactive, so avoid sampling. */
\
ret = (prof_thr_cnt_t *)(uintptr_t)1U; \
} else if (opt_lg_prof_sample == 0) { \
/* Don't bother with sampling logic, since sampling */
\
/* interval is 1. */
\
bt_init(&bt, prof_tdata->vec); \
prof_backtrace(&bt, nignore, prof_bt_max); \
ret = prof_lookup(&bt); \
} else { \
if (prof_tdata->threshold == 0) { \
/* Initialize. Seed the prng differently for */
\
/* each thread. */
\
prof_tdata->prn_state = \
(uint64_t)(uintptr_t)&size; \
prof_sample_threshold_update(prof_tdata); \
} \
\
/* Determine whether to capture a backtrace based on */
\
/* whether size is enough for prof_accum to reach */
\
/* prof_tdata->threshold. However, delay updating */
\
/* these variables until prof_{m,re}alloc(), because */
\
/* we don't know for sure that the allocation will */
\
/* succeed. */
\
/* */
\
/* Use subtraction rather than addition to avoid */
\
/* potential integer overflow. */
\
if (size >= prof_tdata->threshold - \
prof_tdata->accum) { \
bt_init(&bt, prof_tdata->vec); \
prof_backtrace(&bt, nignore, prof_bt_max); \
ret = prof_lookup(&bt); \
} else \
ret = (prof_thr_cnt_t *)(uintptr_t)1U; \
} \
} while (0)
#ifndef JEMALLOC_ENABLE_INLINE
void
prof_sample_threshold_update
(
prof_tdata_t
*
prof_tdata
);
prof_thr_cnt_t
*
prof_alloc_prep
(
size_t
size
);
prof_ctx_t
*
prof_ctx_get
(
const
void
*
ptr
);
void
prof_ctx_set
(
const
void
*
ptr
,
prof_ctx_t
*
ctx
);
bool
prof_sample_accum_update
(
size_t
size
);
...
...
@@ -272,71 +323,6 @@ prof_sample_threshold_update(prof_tdata_t *prof_tdata)
+
(
uint64_t
)
1U
;
}
JEMALLOC_INLINE
prof_thr_cnt_t
*
prof_alloc_prep
(
size_t
size
)
{
#ifdef JEMALLOC_ENABLE_INLINE
/* This function does not have its own stack frame, because it is inlined. */
# define NIGNORE 1
#else
# define NIGNORE 2
#endif
prof_thr_cnt_t
*
ret
;
prof_tdata_t
*
prof_tdata
;
prof_bt_t
bt
;
assert
(
size
==
s2u
(
size
));
prof_tdata
=
PROF_TCACHE_GET
();
if
(
prof_tdata
==
NULL
)
{
prof_tdata
=
prof_tdata_init
();
if
(
prof_tdata
==
NULL
)
return
(
NULL
);
}
if
(
opt_prof_active
==
false
)
{
/* Sampling is currently inactive, so avoid sampling. */
ret
=
(
prof_thr_cnt_t
*
)(
uintptr_t
)
1U
;
}
else
if
(
opt_lg_prof_sample
==
0
)
{
/*
* Don't bother with sampling logic, since sampling interval is
* 1.
*/
bt_init
(
&
bt
,
prof_tdata
->
vec
);
prof_backtrace
(
&
bt
,
NIGNORE
,
prof_bt_max
);
ret
=
prof_lookup
(
&
bt
);
}
else
{
if
(
prof_tdata
->
threshold
==
0
)
{
/*
* Initialize. Seed the prng differently for each
* thread.
*/
prof_tdata
->
prn_state
=
(
uint64_t
)(
uintptr_t
)
&
size
;
prof_sample_threshold_update
(
prof_tdata
);
}
/*
* Determine whether to capture a backtrace based on whether
* size is enough for prof_accum to reach
* prof_tdata->threshold. However, delay updating these
* variables until prof_{m,re}alloc(), because we don't know
* for sure that the allocation will succeed.
*
* Use subtraction rather than addition to avoid potential
* integer overflow.
*/
if
(
size
>=
prof_tdata
->
threshold
-
prof_tdata
->
accum
)
{
bt_init
(
&
bt
,
prof_tdata
->
vec
);
prof_backtrace
(
&
bt
,
NIGNORE
,
prof_bt_max
);
ret
=
prof_lookup
(
&
bt
);
}
else
ret
=
(
prof_thr_cnt_t
*
)(
uintptr_t
)
1U
;
}
return
(
ret
);
#undef NIGNORE
}
JEMALLOC_INLINE
prof_ctx_t
*
prof_ctx_get
(
const
void
*
ptr
)
{
...
...
@@ -415,7 +401,7 @@ prof_malloc(const void *ptr, size_t size, prof_thr_cnt_t *cnt)
* always possible to tell in advance how large an
* object's usable size will be, so there should never
* be a difference between the size passed to
*
prof_alloc_prep
() and prof_malloc().
*
PROF_ALLOC_PREP
() and prof_malloc().
*/
assert
((
uintptr_t
)
cnt
==
(
uintptr_t
)
1U
);
}
...
...
@@ -459,7 +445,7 @@ prof_realloc(const void *ptr, size_t size, prof_thr_cnt_t *cnt,
if
(
prof_sample_accum_update
(
size
))
{
/*
* Don't sample. The size passed to
*
prof_alloc_prep
() was larger than what
*
PROF_ALLOC_PREP
() was larger than what
* actually got allocated, so a backtrace was
* captured for this allocation, even though
* its actual size was insufficient to cross
...
...
deps/jemalloc/include/jemalloc/jemalloc_defs.h.in
View file @
2753acf1
...
...
@@ -18,6 +18,15 @@
#undef JEMALLOC_P
#endif
/*
* JEMALLOC_PRIVATE_NAMESPACE is used as a prefix for all library-private APIs.
* For shared libraries, symbol visibility mechanisms prevent these symbols
* from being exported, but for static libraries, naming collisions are a real
* possibility.
*/
#undef JEMALLOC_PRIVATE_NAMESPACE
#undef JEMALLOC_N
/*
* Hyper-threaded CPUs may need a special instruction inside spin loops in
* order to yield to another virtual CPU.
...
...
deps/jemalloc/src/arena.c
View file @
2753acf1
...
...
@@ -569,7 +569,7 @@ arena_chunk_dealloc(arena_t *arena, arena_chunk_t *chunk)
arena
->
ndirty
-=
spare
->
ndirty
;
}
malloc_mutex_unlock
(
&
arena
->
lock
);
chunk_dealloc
((
void
*
)
spare
,
chunksize
);
chunk_dealloc
((
void
*
)
spare
,
chunksize
,
true
);
malloc_mutex_lock
(
&
arena
->
lock
);
#ifdef JEMALLOC_STATS
arena
->
stats
.
mapped
-=
chunksize
;
...
...
@@ -869,9 +869,9 @@ arena_purge(arena_t *arena, bool all)
assert
(
ndirty
==
arena
->
ndirty
);
#endif
assert
(
arena
->
ndirty
>
arena
->
npurgatory
||
all
);
assert
(
arena
->
ndirty
>
chunk_npages
||
all
);
assert
(
arena
->
ndirty
-
arena
->
npurgatory
>
chunk_npages
||
all
);
assert
((
arena
->
nactive
>>
opt_lg_dirty_mult
)
<
(
arena
->
ndirty
-
npurgatory
)
||
all
);
arena
->
npurgatory
)
||
all
);
#ifdef JEMALLOC_STATS
arena
->
stats
.
npurge
++
;
...
...
@@ -1657,6 +1657,7 @@ arena_prof_promoted(const void *ptr, size_t size)
assert
(
ptr
!=
NULL
);
assert
(
CHUNK_ADDR2BASE
(
ptr
)
!=
ptr
);
assert
(
isalloc
(
ptr
)
==
PAGE_SIZE
);
assert
(
size
<=
small_maxclass
);
chunk
=
(
arena_chunk_t
*
)
CHUNK_ADDR2BASE
(
ptr
);
pageind
=
((
uintptr_t
)
ptr
-
(
uintptr_t
)
chunk
)
>>
PAGE_SHIFT
;
...
...
deps/jemalloc/src/chunk.c
View file @
2753acf1
...
...
@@ -70,7 +70,7 @@ RETURN:
#ifdef JEMALLOC_IVSALLOC
if
(
base
==
false
&&
ret
!=
NULL
)
{
if
(
rtree_set
(
chunks_rtree
,
(
uintptr_t
)
ret
,
ret
))
{
chunk_dealloc
(
ret
,
size
);
chunk_dealloc
(
ret
,
size
,
true
);
return
(
NULL
);
}
}
...
...
@@ -108,7 +108,7 @@ RETURN:
}
void
chunk_dealloc
(
void
*
chunk
,
size_t
size
)
chunk_dealloc
(
void
*
chunk
,
size_t
size
,
bool
unmap
)
{
assert
(
chunk
!=
NULL
);
...
...
@@ -125,15 +125,17 @@ chunk_dealloc(void *chunk, size_t size)
malloc_mutex_unlock
(
&
chunks_mtx
);
#endif
if
(
unmap
)
{
#ifdef JEMALLOC_SWAP
if
(
swap_enabled
&&
chunk_dealloc_swap
(
chunk
,
size
)
==
false
)
return
;
if
(
swap_enabled
&&
chunk_dealloc_swap
(
chunk
,
size
)
==
false
)
return
;
#endif
#ifdef JEMALLOC_DSS
if
(
chunk_dealloc_dss
(
chunk
,
size
)
==
false
)
return
;
if
(
chunk_dealloc_dss
(
chunk
,
size
)
==
false
)
return
;
#endif
chunk_dealloc_mmap
(
chunk
,
size
);
chunk_dealloc_mmap
(
chunk
,
size
);
}
}
bool
...
...
deps/jemalloc/src/ckh.c
View file @
2753acf1
...
...
@@ -556,7 +556,7 @@ ckh_string_hash(const void *key, unsigned minbits, size_t *hash1, size_t *hash2)
}
else
{
ret1
=
h
;
ret2
=
hash
(
key
,
strlen
((
const
char
*
)
key
),
0x8432a476666bbc13U
);
0x8432a476666bbc13
LL
U
);
}
*
hash1
=
ret1
;
...
...
deps/jemalloc/src/ctl.c
View file @
2753acf1
...
...
@@ -1151,11 +1151,13 @@ thread_arena_ctl(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp,
/* Set new arena association. */
ARENA_SET
(
arena
);
#ifdef JEMALLOC_TCACHE
{
tcache_t
*
tcache
=
TCACHE_GET
();
if
(
tcache
!=
NULL
)
tcache
->
arena
=
arena
;
}
#endif
}
ret
=
0
;
...
...
deps/jemalloc/src/huge.c
View file @
2753acf1
...
...
@@ -110,12 +110,12 @@ huge_palloc(size_t size, size_t alignment, bool zero)
if
(
offset
==
0
)
{
/* Trim trailing space. */
chunk_dealloc
((
void
*
)((
uintptr_t
)
ret
+
chunk_size
),
alloc_size
-
chunk_size
);
-
chunk_size
,
true
);
}
else
{
size_t
trailsize
;
/* Trim leading space. */
chunk_dealloc
(
ret
,
alignment
-
offset
);
chunk_dealloc
(
ret
,
alignment
-
offset
,
true
);
ret
=
(
void
*
)((
uintptr_t
)
ret
+
(
alignment
-
offset
));
...
...
@@ -124,7 +124,7 @@ huge_palloc(size_t size, size_t alignment, bool zero)
/* Trim trailing space. */
assert
(
trailsize
<
alloc_size
);
chunk_dealloc
((
void
*
)((
uintptr_t
)
ret
+
chunk_size
),
trailsize
);
trailsize
,
true
);
}
}
...
...
@@ -234,6 +234,13 @@ huge_ralloc(void *ptr, size_t oldsize, size_t size, size_t extra,
)
{
size_t
newsize
=
huge_salloc
(
ret
);
/*
* Remove ptr from the tree of huge allocations before
* performing the remap operation, in order to avoid the
* possibility of another thread acquiring that mapping before
* this one removes it from the tree.
*/
huge_dalloc
(
ptr
,
false
);
if
(
mremap
(
ptr
,
oldsize
,
newsize
,
MREMAP_MAYMOVE
|
MREMAP_FIXED
,
ret
)
==
MAP_FAILED
)
{
/*
...
...
@@ -253,9 +260,8 @@ huge_ralloc(void *ptr, size_t oldsize, size_t size, size_t extra,
if
(
opt_abort
)
abort
();
memcpy
(
ret
,
ptr
,
copysize
);
idalloc
(
ptr
);
}
else
huge_dalloc
(
ptr
,
false
);
chunk_dealloc_mmap
(
ptr
,
oldsize
);
}
}
else
#endif
{
...
...
@@ -295,9 +301,10 @@ huge_dalloc(void *ptr, bool unmap)
memset
(
node
->
addr
,
0x5a
,
node
->
size
);
#endif
#endif
chunk_dealloc
(
node
->
addr
,
node
->
size
);
}
chunk_dealloc
(
node
->
addr
,
node
->
size
,
unmap
);
base_node_dealloc
(
node
);
}
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment