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
fceef8e0
Commit
fceef8e0
authored
Jun 20, 2014
by
antirez
Browse files
Jemalloc updated to 3.6.0.
Not a single bug in about 3 months, and our previous version was too old (3.2.0).
parent
fe596d67
Changes
143
Hide whitespace changes
Inline
Side-by-side
deps/jemalloc/src/rtree.c
View file @
fceef8e0
...
@@ -2,42 +2,55 @@
...
@@ -2,42 +2,55 @@
#include "jemalloc/internal/jemalloc_internal.h"
#include "jemalloc/internal/jemalloc_internal.h"
rtree_t
*
rtree_t
*
rtree_new
(
unsigned
bits
)
rtree_new
(
unsigned
bits
,
rtree_alloc_t
*
alloc
,
rtree_dalloc_t
*
dalloc
)
{
{
rtree_t
*
ret
;
rtree_t
*
ret
;
unsigned
bits_per_level
,
height
,
i
;
unsigned
bits_per_level
,
bits_in_leaf
,
height
,
i
;
assert
(
bits
>
0
&&
bits
<=
(
sizeof
(
uintptr_t
)
<<
3
));
bits_per_level
=
ffs
(
pow2_ceil
((
RTREE_NODESIZE
/
sizeof
(
void
*
))))
-
1
;
bits_per_level
=
ffs
(
pow2_ceil
((
RTREE_NODESIZE
/
sizeof
(
void
*
))))
-
1
;
height
=
bits
/
bits_per_level
;
bits_in_leaf
=
ffs
(
pow2_ceil
((
RTREE_NODESIZE
/
sizeof
(
uint8_t
))))
-
1
;
if
(
height
*
bits_per_level
!=
bits
)
if
(
bits
>
bits_in_leaf
)
{
height
++
;
height
=
1
+
(
bits
-
bits_in_leaf
)
/
bits_per_level
;
assert
(
height
*
bits_per_level
>=
bits
);
if
((
height
-
1
)
*
bits_per_level
+
bits_in_leaf
!=
bits
)
height
++
;
}
else
{
height
=
1
;
}
assert
((
height
-
1
)
*
bits_per_level
+
bits_in_leaf
>=
bits
);
ret
=
(
rtree_t
*
)
base_
alloc
(
offsetof
(
rtree_t
,
level2bits
)
+
ret
=
(
rtree_t
*
)
alloc
(
offsetof
(
rtree_t
,
level2bits
)
+
(
sizeof
(
unsigned
)
*
height
));
(
sizeof
(
unsigned
)
*
height
));
if
(
ret
==
NULL
)
if
(
ret
==
NULL
)
return
(
NULL
);
return
(
NULL
);
memset
(
ret
,
0
,
offsetof
(
rtree_t
,
level2bits
)
+
(
sizeof
(
unsigned
)
*
memset
(
ret
,
0
,
offsetof
(
rtree_t
,
level2bits
)
+
(
sizeof
(
unsigned
)
*
height
));
height
));
ret
->
alloc
=
alloc
;
ret
->
dalloc
=
dalloc
;
if
(
malloc_mutex_init
(
&
ret
->
mutex
))
{
if
(
malloc_mutex_init
(
&
ret
->
mutex
))
{
/* Leak the rtree. */
if
(
dalloc
!=
NULL
)
dalloc
(
ret
);
return
(
NULL
);
return
(
NULL
);
}
}
ret
->
height
=
height
;
ret
->
height
=
height
;
if
(
bits_per_level
*
height
>
bits
)
if
(
height
>
1
)
{
ret
->
level2bits
[
0
]
=
bits
%
bits_per_level
;
if
((
height
-
1
)
*
bits_per_level
+
bits_in_leaf
>
bits
)
{
else
ret
->
level2bits
[
0
]
=
(
bits
-
bits_in_leaf
)
%
ret
->
level2bits
[
0
]
=
bits_per_level
;
bits_per_level
;
for
(
i
=
1
;
i
<
height
;
i
++
)
}
else
ret
->
level2bits
[
i
]
=
bits_per_level
;
ret
->
level2bits
[
0
]
=
bits_per_level
;
for
(
i
=
1
;
i
<
height
-
1
;
i
++
)
ret
->
root
=
(
void
**
)
base_alloc
(
sizeof
(
void
*
)
<<
ret
->
level2bits
[
0
]);
ret
->
level2bits
[
i
]
=
bits_per_level
;
ret
->
level2bits
[
height
-
1
]
=
bits_in_leaf
;
}
else
ret
->
level2bits
[
0
]
=
bits
;
ret
->
root
=
(
void
**
)
alloc
(
sizeof
(
void
*
)
<<
ret
->
level2bits
[
0
]);
if
(
ret
->
root
==
NULL
)
{
if
(
ret
->
root
==
NULL
)
{
/*
if
(
dalloc
!=
NULL
)
* We leak the rtree here, since there's no generic base
dalloc
(
ret
);
* deallocation.
*/
return
(
NULL
);
return
(
NULL
);
}
}
memset
(
ret
->
root
,
0
,
sizeof
(
void
*
)
<<
ret
->
level2bits
[
0
]);
memset
(
ret
->
root
,
0
,
sizeof
(
void
*
)
<<
ret
->
level2bits
[
0
]);
...
@@ -45,6 +58,31 @@ rtree_new(unsigned bits)
...
@@ -45,6 +58,31 @@ rtree_new(unsigned bits)
return
(
ret
);
return
(
ret
);
}
}
static
void
rtree_delete_subtree
(
rtree_t
*
rtree
,
void
**
node
,
unsigned
level
)
{
if
(
level
<
rtree
->
height
-
1
)
{
size_t
nchildren
,
i
;
nchildren
=
ZU
(
1
)
<<
rtree
->
level2bits
[
level
];
for
(
i
=
0
;
i
<
nchildren
;
i
++
)
{
void
**
child
=
(
void
**
)
node
[
i
];
if
(
child
!=
NULL
)
rtree_delete_subtree
(
rtree
,
child
,
level
+
1
);
}
}
rtree
->
dalloc
(
node
);
}
void
rtree_delete
(
rtree_t
*
rtree
)
{
rtree_delete_subtree
(
rtree
,
rtree
->
root
,
0
);
rtree
->
dalloc
(
rtree
);
}
void
void
rtree_prefork
(
rtree_t
*
rtree
)
rtree_prefork
(
rtree_t
*
rtree
)
{
{
...
...
deps/jemalloc/src/stats.c
View file @
fceef8e0
...
@@ -345,25 +345,25 @@ stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
...
@@ -345,25 +345,25 @@ stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
malloc_cprintf
(
write_cb
,
cbopaque
,
"Assertions %s
\n
"
,
malloc_cprintf
(
write_cb
,
cbopaque
,
"Assertions %s
\n
"
,
bv
?
"enabled"
:
"disabled"
);
bv
?
"enabled"
:
"disabled"
);
#define
OPT_WRITE_BOOL(n) \
#define
OPT_WRITE_BOOL(n) \
if ((err = je_mallctl("opt."#n, &bv, &bsz, NULL, 0)) \
if ((err = je_mallctl("opt."#n, &bv, &bsz, NULL, 0)) \
== 0) { \
== 0) { \
malloc_cprintf(write_cb, cbopaque, \
malloc_cprintf(write_cb, cbopaque, \
" opt."#n": %s\n", bv ? "true" : "false"); \
" opt."#n": %s\n", bv ? "true" : "false"); \
}
}
#define
OPT_WRITE_SIZE_T(n) \
#define
OPT_WRITE_SIZE_T(n) \
if ((err = je_mallctl("opt."#n, &sv, &ssz, NULL, 0)) \
if ((err = je_mallctl("opt."#n, &sv, &ssz, NULL, 0)) \
== 0) { \
== 0) { \
malloc_cprintf(write_cb, cbopaque, \
malloc_cprintf(write_cb, cbopaque, \
" opt."#n": %zu\n", sv); \
" opt."#n": %zu\n", sv); \
}
}
#define
OPT_WRITE_SSIZE_T(n) \
#define
OPT_WRITE_SSIZE_T(n) \
if ((err = je_mallctl("opt."#n, &ssv, &sssz, NULL, 0)) \
if ((err = je_mallctl("opt."#n, &ssv, &sssz, NULL, 0)) \
== 0) { \
== 0) { \
malloc_cprintf(write_cb, cbopaque, \
malloc_cprintf(write_cb, cbopaque, \
" opt."#n": %zd\n", ssv); \
" opt."#n": %zd\n", ssv); \
}
}
#define
OPT_WRITE_CHAR_P(n) \
#define
OPT_WRITE_CHAR_P(n) \
if ((err = je_mallctl("opt."#n, &cpv, &cpsz, NULL, 0)) \
if ((err = je_mallctl("opt."#n, &cpv, &cpsz, NULL, 0)) \
== 0) { \
== 0) { \
malloc_cprintf(write_cb, cbopaque, \
malloc_cprintf(write_cb, cbopaque, \
...
...
deps/jemalloc/src/tcache.c
View file @
fceef8e0
...
@@ -97,9 +97,8 @@ tcache_bin_flush_small(tcache_bin_t *tbin, size_t binind, unsigned rem,
...
@@ -97,9 +97,8 @@ tcache_bin_flush_small(tcache_bin_t *tbin, size_t binind, unsigned rem,
arena_bin_t
*
bin
=
&
arena
->
bins
[
binind
];
arena_bin_t
*
bin
=
&
arena
->
bins
[
binind
];
if
(
config_prof
&&
arena
==
tcache
->
arena
)
{
if
(
config_prof
&&
arena
==
tcache
->
arena
)
{
malloc_mutex_lock
(
&
arena
->
lock
);
if
(
arena_prof_accum
(
arena
,
tcache
->
prof_accumbytes
))
arena_prof_accum
(
arena
,
tcache
->
prof_accumbytes
);
prof_idump
();
malloc_mutex_unlock
(
&
arena
->
lock
);
tcache
->
prof_accumbytes
=
0
;
tcache
->
prof_accumbytes
=
0
;
}
}
...
@@ -176,11 +175,14 @@ tcache_bin_flush_large(tcache_bin_t *tbin, size_t binind, unsigned rem,
...
@@ -176,11 +175,14 @@ tcache_bin_flush_large(tcache_bin_t *tbin, size_t binind, unsigned rem,
arena_chunk_t
*
chunk
=
(
arena_chunk_t
*
)
CHUNK_ADDR2BASE
(
arena_chunk_t
*
chunk
=
(
arena_chunk_t
*
)
CHUNK_ADDR2BASE
(
tbin
->
avail
[
0
]);
tbin
->
avail
[
0
]);
arena_t
*
arena
=
chunk
->
arena
;
arena_t
*
arena
=
chunk
->
arena
;
UNUSED
bool
idump
;
if
(
config_prof
)
idump
=
false
;
malloc_mutex_lock
(
&
arena
->
lock
);
malloc_mutex_lock
(
&
arena
->
lock
);
if
((
config_prof
||
config_stats
)
&&
arena
==
tcache
->
arena
)
{
if
((
config_prof
||
config_stats
)
&&
arena
==
tcache
->
arena
)
{
if
(
config_prof
)
{
if
(
config_prof
)
{
arena_prof_accum
(
arena
,
idump
=
arena_prof_accum
_locked
(
arena
,
tcache
->
prof_accumbytes
);
tcache
->
prof_accumbytes
);
tcache
->
prof_accumbytes
=
0
;
tcache
->
prof_accumbytes
=
0
;
}
}
...
@@ -212,6 +214,8 @@ tcache_bin_flush_large(tcache_bin_t *tbin, size_t binind, unsigned rem,
...
@@ -212,6 +214,8 @@ tcache_bin_flush_large(tcache_bin_t *tbin, size_t binind, unsigned rem,
}
}
}
}
malloc_mutex_unlock
(
&
arena
->
lock
);
malloc_mutex_unlock
(
&
arena
->
lock
);
if
(
config_prof
&&
idump
)
prof_idump
();
}
}
if
(
config_stats
&&
merged_stats
==
false
)
{
if
(
config_stats
&&
merged_stats
==
false
)
{
/*
/*
...
@@ -256,8 +260,8 @@ tcache_arena_dissociate(tcache_t *tcache)
...
@@ -256,8 +260,8 @@ tcache_arena_dissociate(tcache_t *tcache)
/* Unlink from list of extant tcaches. */
/* Unlink from list of extant tcaches. */
malloc_mutex_lock
(
&
tcache
->
arena
->
lock
);
malloc_mutex_lock
(
&
tcache
->
arena
->
lock
);
ql_remove
(
&
tcache
->
arena
->
tcache_ql
,
tcache
,
link
);
ql_remove
(
&
tcache
->
arena
->
tcache_ql
,
tcache
,
link
);
malloc_mutex_unlock
(
&
tcache
->
arena
->
lock
);
tcache_stats_merge
(
tcache
,
tcache
->
arena
);
tcache_stats_merge
(
tcache
,
tcache
->
arena
);
malloc_mutex_unlock
(
&
tcache
->
arena
->
lock
);
}
}
}
}
...
@@ -288,7 +292,7 @@ tcache_create(arena_t *arena)
...
@@ -288,7 +292,7 @@ tcache_create(arena_t *arena)
else
if
(
size
<=
tcache_maxclass
)
else
if
(
size
<=
tcache_maxclass
)
tcache
=
(
tcache_t
*
)
arena_malloc_large
(
arena
,
size
,
true
);
tcache
=
(
tcache_t
*
)
arena_malloc_large
(
arena
,
size
,
true
);
else
else
tcache
=
(
tcache_t
*
)
icalloc
x
(
size
,
false
,
arena
);
tcache
=
(
tcache_t
*
)
icalloc
t
(
size
,
false
,
arena
);
if
(
tcache
==
NULL
)
if
(
tcache
==
NULL
)
return
(
NULL
);
return
(
NULL
);
...
@@ -343,11 +347,9 @@ tcache_destroy(tcache_t *tcache)
...
@@ -343,11 +347,9 @@ tcache_destroy(tcache_t *tcache)
}
}
}
}
if
(
config_prof
&&
tcache
->
prof_accumbytes
>
0
)
{
if
(
config_prof
&&
tcache
->
prof_accumbytes
>
0
&&
malloc_mutex_lock
(
&
tcache
->
arena
->
lock
);
arena_prof_accum
(
tcache
->
arena
,
tcache
->
prof_accumbytes
))
arena_prof_accum
(
tcache
->
arena
,
tcache
->
prof_accumbytes
);
prof_idump
();
malloc_mutex_unlock
(
&
tcache
->
arena
->
lock
);
}
tcache_size
=
arena_salloc
(
tcache
,
false
);
tcache_size
=
arena_salloc
(
tcache
,
false
);
if
(
tcache_size
<=
SMALL_MAXCLASS
)
{
if
(
tcache_size
<=
SMALL_MAXCLASS
)
{
...
@@ -364,7 +366,7 @@ tcache_destroy(tcache_t *tcache)
...
@@ -364,7 +366,7 @@ tcache_destroy(tcache_t *tcache)
arena_dalloc_large
(
arena
,
chunk
,
tcache
);
arena_dalloc_large
(
arena
,
chunk
,
tcache
);
}
else
}
else
idalloc
x
(
tcache
,
false
);
idalloc
t
(
tcache
,
false
);
}
}
void
void
...
@@ -397,11 +399,14 @@ tcache_thread_cleanup(void *arg)
...
@@ -397,11 +399,14 @@ tcache_thread_cleanup(void *arg)
}
}
}
}
/* Caller must own arena->lock. */
void
void
tcache_stats_merge
(
tcache_t
*
tcache
,
arena_t
*
arena
)
tcache_stats_merge
(
tcache_t
*
tcache
,
arena_t
*
arena
)
{
{
unsigned
i
;
unsigned
i
;
cassert
(
config_stats
);
/* Merge and reset tcache stats. */
/* Merge and reset tcache stats. */
for
(
i
=
0
;
i
<
NBINS
;
i
++
)
{
for
(
i
=
0
;
i
<
NBINS
;
i
++
)
{
arena_bin_t
*
bin
=
&
arena
->
bins
[
i
];
arena_bin_t
*
bin
=
&
arena
->
bins
[
i
];
...
...
deps/jemalloc/src/tsd.c
View file @
fceef8e0
...
@@ -21,7 +21,7 @@ void
...
@@ -21,7 +21,7 @@ void
malloc_tsd_dalloc
(
void
*
wrapper
)
malloc_tsd_dalloc
(
void
*
wrapper
)
{
{
idalloc
(
wrapper
);
idalloc
t
(
wrapper
,
false
);
}
}
void
void
...
@@ -105,3 +105,37 @@ JEMALLOC_SECTION(".CRT$XLY") JEMALLOC_ATTR(used)
...
@@ -105,3 +105,37 @@ JEMALLOC_SECTION(".CRT$XLY") JEMALLOC_ATTR(used)
static
const
BOOL
(
WINAPI
*
tls_callback
)(
HINSTANCE
hinstDLL
,
static
const
BOOL
(
WINAPI
*
tls_callback
)(
HINSTANCE
hinstDLL
,
DWORD
fdwReason
,
LPVOID
lpvReserved
)
=
_tls_callback
;
DWORD
fdwReason
,
LPVOID
lpvReserved
)
=
_tls_callback
;
#endif
#endif
#if (!defined(JEMALLOC_MALLOC_THREAD_CLEANUP) && !defined(JEMALLOC_TLS) && \
!defined(_WIN32))
void
*
tsd_init_check_recursion
(
tsd_init_head_t
*
head
,
tsd_init_block_t
*
block
)
{
pthread_t
self
=
pthread_self
();
tsd_init_block_t
*
iter
;
/* Check whether this thread has already inserted into the list. */
malloc_mutex_lock
(
&
head
->
lock
);
ql_foreach
(
iter
,
&
head
->
blocks
,
link
)
{
if
(
iter
->
thread
==
self
)
{
malloc_mutex_unlock
(
&
head
->
lock
);
return
(
iter
->
data
);
}
}
/* Insert block into list. */
ql_elm_new
(
block
,
link
);
block
->
thread
=
self
;
ql_tail_insert
(
&
head
->
blocks
,
block
,
link
);
malloc_mutex_unlock
(
&
head
->
lock
);
return
(
NULL
);
}
void
tsd_init_finish
(
tsd_init_head_t
*
head
,
tsd_init_block_t
*
block
)
{
malloc_mutex_lock
(
&
head
->
lock
);
ql_remove
(
&
head
->
blocks
,
block
,
link
);
malloc_mutex_unlock
(
&
head
->
lock
);
}
#endif
deps/jemalloc/src/util.c
View file @
fceef8e0
...
@@ -77,7 +77,7 @@ malloc_write(const char *s)
...
@@ -77,7 +77,7 @@ malloc_write(const char *s)
* provide a wrapper.
* provide a wrapper.
*/
*/
int
int
buferror
(
char
*
buf
,
size_t
buflen
)
buferror
(
int
err
,
char
*
buf
,
size_t
buflen
)
{
{
#ifdef _WIN32
#ifdef _WIN32
...
@@ -85,34 +85,36 @@ buferror(char *buf, size_t buflen)
...
@@ -85,34 +85,36 @@ buferror(char *buf, size_t buflen)
(
LPSTR
)
buf
,
buflen
,
NULL
);
(
LPSTR
)
buf
,
buflen
,
NULL
);
return
(
0
);
return
(
0
);
#elif defined(_GNU_SOURCE)
#elif defined(_GNU_SOURCE)
char
*
b
=
strerror_r
(
err
no
,
buf
,
buflen
);
char
*
b
=
strerror_r
(
err
,
buf
,
buflen
);
if
(
b
!=
buf
)
{
if
(
b
!=
buf
)
{
strncpy
(
buf
,
b
,
buflen
);
strncpy
(
buf
,
b
,
buflen
);
buf
[
buflen
-
1
]
=
'\0'
;
buf
[
buflen
-
1
]
=
'\0'
;
}
}
return
(
0
);
return
(
0
);
#else
#else
return
(
strerror_r
(
err
no
,
buf
,
buflen
));
return
(
strerror_r
(
err
,
buf
,
buflen
));
#endif
#endif
}
}
uintmax_t
uintmax_t
malloc_strtoumax
(
const
char
*
nptr
,
char
**
endptr
,
int
base
)
malloc_strtoumax
(
const
char
*
restrict
nptr
,
char
**
restrict
endptr
,
int
base
)
{
{
uintmax_t
ret
,
digit
;
uintmax_t
ret
,
digit
;
int
b
;
int
b
;
bool
neg
;
bool
neg
;
const
char
*
p
,
*
ns
;
const
char
*
p
,
*
ns
;
p
=
nptr
;
if
(
base
<
0
||
base
==
1
||
base
>
36
)
{
if
(
base
<
0
||
base
==
1
||
base
>
36
)
{
ns
=
p
;
set_errno
(
EINVAL
);
set_errno
(
EINVAL
);
return
(
UINTMAX_MAX
);
ret
=
UINTMAX_MAX
;
goto
label_return
;
}
}
b
=
base
;
b
=
base
;
/* Swallow leading whitespace and get sign, if any. */
/* Swallow leading whitespace and get sign, if any. */
neg
=
false
;
neg
=
false
;
p
=
nptr
;
while
(
true
)
{
while
(
true
)
{
switch
(
*
p
)
{
switch
(
*
p
)
{
case
'\t'
:
case
'\n'
:
case
'\v'
:
case
'\f'
:
case
'\r'
:
case
' '
:
case
'\t'
:
case
'\n'
:
case
'\v'
:
case
'\f'
:
case
'\r'
:
case
' '
:
...
@@ -146,7 +148,7 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
...
@@ -146,7 +148,7 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
if
(
b
==
8
)
if
(
b
==
8
)
p
++
;
p
++
;
break
;
break
;
case
'x'
:
case
'X'
:
case
'x'
:
switch
(
p
[
2
])
{
switch
(
p
[
2
])
{
case
'0'
:
case
'1'
:
case
'2'
:
case
'3'
:
case
'4'
:
case
'0'
:
case
'1'
:
case
'2'
:
case
'3'
:
case
'4'
:
case
'5'
:
case
'6'
:
case
'7'
:
case
'8'
:
case
'9'
:
case
'5'
:
case
'6'
:
case
'7'
:
case
'8'
:
case
'9'
:
...
@@ -164,7 +166,9 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
...
@@ -164,7 +166,9 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
}
}
break
;
break
;
default:
default:
break
;
p
++
;
ret
=
0
;
goto
label_return
;
}
}
}
}
if
(
b
==
0
)
if
(
b
==
0
)
...
@@ -181,13 +185,22 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
...
@@ -181,13 +185,22 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
if
(
ret
<
pret
)
{
if
(
ret
<
pret
)
{
/* Overflow. */
/* Overflow. */
set_errno
(
ERANGE
);
set_errno
(
ERANGE
);
return
(
UINTMAX_MAX
);
ret
=
UINTMAX_MAX
;
goto
label_return
;
}
}
p
++
;
p
++
;
}
}
if
(
neg
)
if
(
neg
)
ret
=
-
ret
;
ret
=
-
ret
;
if
(
p
==
ns
)
{
/* No conversion performed. */
set_errno
(
EINVAL
);
ret
=
UINTMAX_MAX
;
goto
label_return
;
}
label_return:
if
(
endptr
!=
NULL
)
{
if
(
endptr
!=
NULL
)
{
if
(
p
==
ns
)
{
if
(
p
==
ns
)
{
/* No characters were converted. */
/* No characters were converted. */
...
@@ -195,7 +208,6 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
...
@@ -195,7 +208,6 @@ malloc_strtoumax(const char *nptr, char **endptr, int base)
}
else
}
else
*
endptr
=
(
char
*
)
p
;
*
endptr
=
(
char
*
)
p
;
}
}
return
(
ret
);
return
(
ret
);
}
}
...
@@ -331,7 +343,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -331,7 +343,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
APPEND_C(' '); \
APPEND_C(' '); \
} \
} \
} while (0)
} while (0)
#define
GET_ARG_NUMERIC(val, len) do { \
#define
GET_ARG_NUMERIC(val, len) do { \
switch (len) { \
switch (len) { \
case '?': \
case '?': \
val = va_arg(ap, int); \
val = va_arg(ap, int); \
...
@@ -354,6 +366,9 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -354,6 +366,9 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
case 'j': \
case 'j': \
val = va_arg(ap, intmax_t); \
val = va_arg(ap, intmax_t); \
break; \
break; \
case 'j' | 0x80: \
val = va_arg(ap, uintmax_t); \
break; \
case 't': \
case 't': \
val = va_arg(ap, ptrdiff_t); \
val = va_arg(ap, ptrdiff_t); \
break; \
break; \
...
@@ -385,11 +400,6 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -385,11 +400,6 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
unsigned
char
len
=
'?'
;
unsigned
char
len
=
'?'
;
f
++
;
f
++
;
if
(
*
f
==
'%'
)
{
/* %% */
APPEND_C
(
*
f
);
break
;
}
/* Flags. */
/* Flags. */
while
(
true
)
{
while
(
true
)
{
switch
(
*
f
)
{
switch
(
*
f
)
{
...
@@ -419,6 +429,10 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -419,6 +429,10 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
case
'*'
:
case
'*'
:
width
=
va_arg
(
ap
,
int
);
width
=
va_arg
(
ap
,
int
);
f
++
;
f
++
;
if
(
width
<
0
)
{
left_justify
=
true
;
width
=
-
width
;
}
break
;
break
;
case
'0'
:
case
'1'
:
case
'2'
:
case
'3'
:
case
'4'
:
case
'0'
:
case
'1'
:
case
'2'
:
case
'3'
:
case
'4'
:
case
'5'
:
case
'6'
:
case
'7'
:
case
'8'
:
case
'9'
:
{
case
'5'
:
case
'6'
:
case
'7'
:
case
'8'
:
case
'9'
:
{
...
@@ -428,19 +442,16 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -428,19 +442,16 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
assert
(
uwidth
!=
UINTMAX_MAX
||
get_errno
()
!=
assert
(
uwidth
!=
UINTMAX_MAX
||
get_errno
()
!=
ERANGE
);
ERANGE
);
width
=
(
int
)
uwidth
;
width
=
(
int
)
uwidth
;
if
(
*
f
==
'.'
)
{
f
++
;
goto
label_precision
;
}
else
goto
label_length
;
break
;
break
;
}
case
'.'
:
}
default
:
f
++
;
break
;
goto
label_precision
;
default:
goto
label_length
;
}
}
/* Width/precision separator. */
if
(
*
f
==
'.'
)
f
++
;
else
goto
label_length
;
/* Precision. */
/* Precision. */
label_precision:
switch
(
*
f
)
{
switch
(
*
f
)
{
case
'*'
:
case
'*'
:
prec
=
va_arg
(
ap
,
int
);
prec
=
va_arg
(
ap
,
int
);
...
@@ -469,16 +480,8 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -469,16 +480,8 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
}
else
}
else
len
=
'l'
;
len
=
'l'
;
break
;
break
;
case
'j'
:
case
'q'
:
case
'j'
:
case
't'
:
case
'z'
:
len
=
'j'
;
len
=
*
f
;
f
++
;
break
;
case
't'
:
len
=
't'
;
f
++
;
break
;
case
'z'
:
len
=
'z'
;
f
++
;
f
++
;
break
;
break
;
default:
break
;
default:
break
;
...
@@ -487,6 +490,11 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -487,6 +490,11 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
switch
(
*
f
)
{
switch
(
*
f
)
{
char
*
s
;
char
*
s
;
size_t
slen
;
size_t
slen
;
case
'%'
:
/* %% */
APPEND_C
(
*
f
);
f
++
;
break
;
case
'd'
:
case
'i'
:
{
case
'd'
:
case
'i'
:
{
intmax_t
val
JEMALLOC_CC_SILENCE_INIT
(
0
);
intmax_t
val
JEMALLOC_CC_SILENCE_INIT
(
0
);
char
buf
[
D2S_BUFSIZE
];
char
buf
[
D2S_BUFSIZE
];
...
@@ -540,7 +548,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -540,7 +548,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
assert
(
len
==
'?'
||
len
==
'l'
);
assert
(
len
==
'?'
||
len
==
'l'
);
assert_not_implemented
(
len
!=
'l'
);
assert_not_implemented
(
len
!=
'l'
);
s
=
va_arg
(
ap
,
char
*
);
s
=
va_arg
(
ap
,
char
*
);
slen
=
(
prec
==
-
1
)
?
strlen
(
s
)
:
prec
;
slen
=
(
prec
<
0
)
?
strlen
(
s
)
:
prec
;
APPEND_PADDED_S
(
s
,
slen
,
width
,
left_justify
);
APPEND_PADDED_S
(
s
,
slen
,
width
,
left_justify
);
f
++
;
f
++
;
break
;
break
;
...
@@ -553,8 +561,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
...
@@ -553,8 +561,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap)
APPEND_PADDED_S
(
s
,
slen
,
width
,
left_justify
);
APPEND_PADDED_S
(
s
,
slen
,
width
,
left_justify
);
f
++
;
f
++
;
break
;
break
;
}
}
default
:
not_reached
();
default:
not_implemented
();
}
}
break
;
break
;
}
default
:
{
}
default
:
{
...
...
deps/jemalloc/src/zone.c
View file @
fceef8e0
...
@@ -137,7 +137,7 @@ zone_destroy(malloc_zone_t *zone)
...
@@ -137,7 +137,7 @@ zone_destroy(malloc_zone_t *zone)
{
{
/* This function should never be called. */
/* This function should never be called. */
assert
(
false
);
not_reached
(
);
return
(
NULL
);
return
(
NULL
);
}
}
...
...
deps/jemalloc/test/ALLOCM_ARENA.exp
deleted
100644 → 0
View file @
fe596d67
Test begin
Test end
deps/jemalloc/test/aligned_alloc.exp
deleted
100644 → 0
View file @
fe596d67
Test begin
Alignment: 8
Alignment: 16
Alignment: 32
Alignment: 64
Alignment: 128
Alignment: 256
Alignment: 512
Alignment: 1024
Alignment: 2048
Alignment: 4096
Alignment: 8192
Alignment: 16384
Alignment: 32768
Alignment: 65536
Alignment: 131072
Alignment: 262144
Alignment: 524288
Alignment: 1048576
Alignment: 2097152
Alignment: 4194304
Alignment: 8388608
Alignment: 16777216
Alignment: 33554432
Test end
deps/jemalloc/test/allocated.exp
deleted
100644 → 0
View file @
fe596d67
Test begin
Test end
deps/jemalloc/test/allocm.c
deleted
100644 → 0
View file @
fe596d67
#define JEMALLOC_MANGLE
#include "jemalloc_test.h"
#define CHUNK 0x400000
/* #define MAXALIGN ((size_t)UINT64_C(0x80000000000)) */
#define MAXALIGN ((size_t)0x2000000LU)
#define NITER 4
int
main
(
void
)
{
int
r
;
void
*
p
;
size_t
nsz
,
rsz
,
sz
,
alignment
,
total
;
unsigned
i
;
void
*
ps
[
NITER
];
malloc_printf
(
"Test begin
\n
"
);
sz
=
42
;
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
0
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Unexpected nallocm() error
\n
"
);
abort
();
}
rsz
=
0
;
r
=
allocm
(
&
p
,
&
rsz
,
sz
,
0
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Unexpected allocm() error
\n
"
);
abort
();
}
if
(
rsz
<
sz
)
malloc_printf
(
"Real size smaller than expected
\n
"
);
if
(
nsz
!=
rsz
)
malloc_printf
(
"nallocm()/allocm() rsize mismatch
\n
"
);
if
(
dallocm
(
p
,
0
)
!=
ALLOCM_SUCCESS
)
malloc_printf
(
"Unexpected dallocm() error
\n
"
);
r
=
allocm
(
&
p
,
NULL
,
sz
,
0
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Unexpected allocm() error
\n
"
);
abort
();
}
if
(
dallocm
(
p
,
0
)
!=
ALLOCM_SUCCESS
)
malloc_printf
(
"Unexpected dallocm() error
\n
"
);
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
ALLOCM_ZERO
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Unexpected nallocm() error
\n
"
);
abort
();
}
rsz
=
0
;
r
=
allocm
(
&
p
,
&
rsz
,
sz
,
ALLOCM_ZERO
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Unexpected allocm() error
\n
"
);
abort
();
}
if
(
nsz
!=
rsz
)
malloc_printf
(
"nallocm()/allocm() rsize mismatch
\n
"
);
if
(
dallocm
(
p
,
0
)
!=
ALLOCM_SUCCESS
)
malloc_printf
(
"Unexpected dallocm() error
\n
"
);
#if LG_SIZEOF_PTR == 3
alignment
=
UINT64_C
(
0x8000000000000000
);
sz
=
UINT64_C
(
0x8000000000000000
);
#else
alignment
=
0x80000000LU
;
sz
=
0x80000000LU
;
#endif
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
==
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Expected error for nallocm(&nsz, %zu, %#x)
\n
"
,
sz
,
ALLOCM_ALIGN
(
alignment
));
}
rsz
=
0
;
r
=
allocm
(
&
p
,
&
rsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
==
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Expected error for allocm(&p, %zu, %#x)
\n
"
,
sz
,
ALLOCM_ALIGN
(
alignment
));
}
if
(
nsz
!=
rsz
)
malloc_printf
(
"nallocm()/allocm() rsize mismatch
\n
"
);
#if LG_SIZEOF_PTR == 3
alignment
=
UINT64_C
(
0x4000000000000000
);
sz
=
UINT64_C
(
0x8400000000000001
);
#else
alignment
=
0x40000000LU
;
sz
=
0x84000001LU
;
#endif
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
!=
ALLOCM_SUCCESS
)
malloc_printf
(
"Unexpected nallocm() error
\n
"
);
rsz
=
0
;
r
=
allocm
(
&
p
,
&
rsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
==
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Expected error for allocm(&p, %zu, %#x)
\n
"
,
sz
,
ALLOCM_ALIGN
(
alignment
));
}
alignment
=
0x10LU
;
#if LG_SIZEOF_PTR == 3
sz
=
UINT64_C
(
0xfffffffffffffff0
);
#else
sz
=
0xfffffff0LU
;
#endif
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
==
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Expected error for nallocm(&nsz, %zu, %#x)
\n
"
,
sz
,
ALLOCM_ALIGN
(
alignment
));
}
rsz
=
0
;
r
=
allocm
(
&
p
,
&
rsz
,
sz
,
ALLOCM_ALIGN
(
alignment
));
if
(
r
==
ALLOCM_SUCCESS
)
{
malloc_printf
(
"Expected error for allocm(&p, %zu, %#x)
\n
"
,
sz
,
ALLOCM_ALIGN
(
alignment
));
}
if
(
nsz
!=
rsz
)
malloc_printf
(
"nallocm()/allocm() rsize mismatch
\n
"
);
for
(
i
=
0
;
i
<
NITER
;
i
++
)
ps
[
i
]
=
NULL
;
for
(
alignment
=
8
;
alignment
<=
MAXALIGN
;
alignment
<<=
1
)
{
total
=
0
;
malloc_printf
(
"Alignment: %zu
\n
"
,
alignment
);
for
(
sz
=
1
;
sz
<
3
*
alignment
&&
sz
<
(
1U
<<
31
);
sz
+=
(
alignment
>>
(
LG_SIZEOF_PTR
-
1
))
-
1
)
{
for
(
i
=
0
;
i
<
NITER
;
i
++
)
{
nsz
=
0
;
r
=
nallocm
(
&
nsz
,
sz
,
ALLOCM_ALIGN
(
alignment
)
|
ALLOCM_ZERO
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"nallocm() error for size %zu"
" (%#zx): %d
\n
"
,
sz
,
sz
,
r
);
exit
(
1
);
}
rsz
=
0
;
r
=
allocm
(
&
ps
[
i
],
&
rsz
,
sz
,
ALLOCM_ALIGN
(
alignment
)
|
ALLOCM_ZERO
);
if
(
r
!=
ALLOCM_SUCCESS
)
{
malloc_printf
(
"allocm() error for size %zu"
" (%#zx): %d
\n
"
,
sz
,
sz
,
r
);
exit
(
1
);
}
if
(
rsz
<
sz
)
{
malloc_printf
(
"Real size smaller than"
" expected
\n
"
);
}
if
(
nsz
!=
rsz
)
{
malloc_printf
(
"nallocm()/allocm() rsize"
" mismatch
\n
"
);
}
if
((
uintptr_t
)
p
&
(
alignment
-
1
))
{
malloc_printf
(
"%p inadequately aligned for"
" alignment: %zu
\n
"
,
p
,
alignment
);
}
sallocm
(
ps
[
i
],
&
rsz
,
0
);
total
+=
rsz
;
if
(
total
>=
(
MAXALIGN
<<
1
))
break
;
}
for
(
i
=
0
;
i
<
NITER
;
i
++
)
{
if
(
ps
[
i
]
!=
NULL
)
{
dallocm
(
ps
[
i
],
0
);
ps
[
i
]
=
NULL
;
}
}
}
}
malloc_printf
(
"Test end
\n
"
);
return
(
0
);
}
deps/jemalloc/test/allocm.exp
deleted
100644 → 0
View file @
fe596d67
Test begin
Alignment: 8
Alignment: 16
Alignment: 32
Alignment: 64
Alignment: 128
Alignment: 256
Alignment: 512
Alignment: 1024
Alignment: 2048
Alignment: 4096
Alignment: 8192
Alignment: 16384
Alignment: 32768
Alignment: 65536
Alignment: 131072
Alignment: 262144
Alignment: 524288
Alignment: 1048576
Alignment: 2097152
Alignment: 4194304
Alignment: 8388608
Alignment: 16777216
Alignment: 33554432
Test end
deps/jemalloc/test/bitmap.exp
deleted
100644 → 0
View file @
fe596d67
Test begin
Test end
deps/jemalloc/test/include/test/SFMT-alti.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* @file SFMT-alti.h
*
* @brief SIMD oriented Fast Mersenne Twister(SFMT)
* pseudorandom number generator
*
* @author Mutsuo Saito (Hiroshima University)
* @author Makoto Matsumoto (Hiroshima University)
*
* Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* The new BSD License is applied to this software.
* see LICENSE.txt
*/
#ifndef SFMT_ALTI_H
#define SFMT_ALTI_H
/**
* This function represents the recursion formula in AltiVec and BIG ENDIAN.
* @param a a 128-bit part of the interal state array
* @param b a 128-bit part of the interal state array
* @param c a 128-bit part of the interal state array
* @param d a 128-bit part of the interal state array
* @return output
*/
JEMALLOC_ALWAYS_INLINE
vector
unsigned
int
vec_recursion
(
vector
unsigned
int
a
,
vector
unsigned
int
b
,
vector
unsigned
int
c
,
vector
unsigned
int
d
)
{
const
vector
unsigned
int
sl1
=
ALTI_SL1
;
const
vector
unsigned
int
sr1
=
ALTI_SR1
;
#ifdef ONLY64
const
vector
unsigned
int
mask
=
ALTI_MSK64
;
const
vector
unsigned
char
perm_sl
=
ALTI_SL2_PERM64
;
const
vector
unsigned
char
perm_sr
=
ALTI_SR2_PERM64
;
#else
const
vector
unsigned
int
mask
=
ALTI_MSK
;
const
vector
unsigned
char
perm_sl
=
ALTI_SL2_PERM
;
const
vector
unsigned
char
perm_sr
=
ALTI_SR2_PERM
;
#endif
vector
unsigned
int
v
,
w
,
x
,
y
,
z
;
x
=
vec_perm
(
a
,
(
vector
unsigned
int
)
perm_sl
,
perm_sl
);
v
=
a
;
y
=
vec_sr
(
b
,
sr1
);
z
=
vec_perm
(
c
,
(
vector
unsigned
int
)
perm_sr
,
perm_sr
);
w
=
vec_sl
(
d
,
sl1
);
z
=
vec_xor
(
z
,
w
);
y
=
vec_and
(
y
,
mask
);
v
=
vec_xor
(
v
,
x
);
z
=
vec_xor
(
z
,
y
);
z
=
vec_xor
(
z
,
v
);
return
z
;
}
/**
* This function fills the internal state array with pseudorandom
* integers.
*/
JEMALLOC_INLINE
void
gen_rand_all
(
sfmt_t
*
ctx
)
{
int
i
;
vector
unsigned
int
r
,
r1
,
r2
;
r1
=
ctx
->
sfmt
[
N
-
2
].
s
;
r2
=
ctx
->
sfmt
[
N
-
1
].
s
;
for
(
i
=
0
;
i
<
N
-
POS1
;
i
++
)
{
r
=
vec_recursion
(
ctx
->
sfmt
[
i
].
s
,
ctx
->
sfmt
[
i
+
POS1
].
s
,
r1
,
r2
);
ctx
->
sfmt
[
i
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
for
(;
i
<
N
;
i
++
)
{
r
=
vec_recursion
(
ctx
->
sfmt
[
i
].
s
,
ctx
->
sfmt
[
i
+
POS1
-
N
].
s
,
r1
,
r2
);
ctx
->
sfmt
[
i
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
}
/**
* This function fills the user-specified array with pseudorandom
* integers.
*
* @param array an 128-bit array to be filled by pseudorandom numbers.
* @param size number of 128-bit pesudorandom numbers to be generated.
*/
JEMALLOC_INLINE
void
gen_rand_array
(
sfmt_t
*
ctx
,
w128_t
*
array
,
int
size
)
{
int
i
,
j
;
vector
unsigned
int
r
,
r1
,
r2
;
r1
=
ctx
->
sfmt
[
N
-
2
].
s
;
r2
=
ctx
->
sfmt
[
N
-
1
].
s
;
for
(
i
=
0
;
i
<
N
-
POS1
;
i
++
)
{
r
=
vec_recursion
(
ctx
->
sfmt
[
i
].
s
,
ctx
->
sfmt
[
i
+
POS1
].
s
,
r1
,
r2
);
array
[
i
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
for
(;
i
<
N
;
i
++
)
{
r
=
vec_recursion
(
ctx
->
sfmt
[
i
].
s
,
array
[
i
+
POS1
-
N
].
s
,
r1
,
r2
);
array
[
i
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
/* main loop */
for
(;
i
<
size
-
N
;
i
++
)
{
r
=
vec_recursion
(
array
[
i
-
N
].
s
,
array
[
i
+
POS1
-
N
].
s
,
r1
,
r2
);
array
[
i
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
for
(
j
=
0
;
j
<
2
*
N
-
size
;
j
++
)
{
ctx
->
sfmt
[
j
].
s
=
array
[
j
+
size
-
N
].
s
;
}
for
(;
i
<
size
;
i
++
)
{
r
=
vec_recursion
(
array
[
i
-
N
].
s
,
array
[
i
+
POS1
-
N
].
s
,
r1
,
r2
);
array
[
i
].
s
=
r
;
ctx
->
sfmt
[
j
++
].
s
=
r
;
r1
=
r2
;
r2
=
r
;
}
}
#ifndef ONLY64
#if defined(__APPLE__)
#define ALTI_SWAP (vector unsigned char) \
(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11)
#else
#define ALTI_SWAP {4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11}
#endif
/**
* This function swaps high and low 32-bit of 64-bit integers in user
* specified array.
*
* @param array an 128-bit array to be swaped.
* @param size size of 128-bit array.
*/
JEMALLOC_INLINE
void
swap
(
w128_t
*
array
,
int
size
)
{
int
i
;
const
vector
unsigned
char
perm
=
ALTI_SWAP
;
for
(
i
=
0
;
i
<
size
;
i
++
)
{
array
[
i
].
s
=
vec_perm
(
array
[
i
].
s
,
(
vector
unsigned
int
)
perm
,
perm
);
}
}
#endif
#endif
deps/jemalloc/test/include/test/SFMT-params.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS_H
#define SFMT_PARAMS_H
#if !defined(MEXP)
#ifdef __GNUC__
#warning "MEXP is not defined. I assume MEXP is 19937."
#endif
#define MEXP 19937
#endif
/*-----------------
BASIC DEFINITIONS
-----------------*/
/** Mersenne Exponent. The period of the sequence
* is a multiple of 2^MEXP-1.
* #define MEXP 19937 */
/** SFMT generator has an internal state array of 128-bit integers,
* and N is its size. */
#define N (MEXP / 128 + 1)
/** N32 is the size of internal state array when regarded as an array
* of 32-bit integers.*/
#define N32 (N * 4)
/** N64 is the size of internal state array when regarded as an array
* of 64-bit integers.*/
#define N64 (N * 2)
/*----------------------
the parameters of SFMT
following definitions are in paramsXXXX.h file.
----------------------*/
/** the pick up position of the array.
#define POS1 122
*/
/** the parameter of shift left as four 32-bit registers.
#define SL1 18
*/
/** the parameter of shift left as one 128-bit register.
* The 128-bit integer is shifted by (SL2 * 8) bits.
#define SL2 1
*/
/** the parameter of shift right as four 32-bit registers.
#define SR1 11
*/
/** the parameter of shift right as one 128-bit register.
* The 128-bit integer is shifted by (SL2 * 8) bits.
#define SR2 1
*/
/** A bitmask, used in the recursion. These parameters are introduced
* to break symmetry of SIMD.
#define MSK1 0xdfffffefU
#define MSK2 0xddfecb7fU
#define MSK3 0xbffaffffU
#define MSK4 0xbffffff6U
*/
/** These definitions are part of a 128-bit period certification vector.
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0x00000000U
#define PARITY4 0xc98e126aU
*/
#if MEXP == 607
#include "test/SFMT-params607.h"
#elif MEXP == 1279
#include "test/SFMT-params1279.h"
#elif MEXP == 2281
#include "test/SFMT-params2281.h"
#elif MEXP == 4253
#include "test/SFMT-params4253.h"
#elif MEXP == 11213
#include "test/SFMT-params11213.h"
#elif MEXP == 19937
#include "test/SFMT-params19937.h"
#elif MEXP == 44497
#include "test/SFMT-params44497.h"
#elif MEXP == 86243
#include "test/SFMT-params86243.h"
#elif MEXP == 132049
#include "test/SFMT-params132049.h"
#elif MEXP == 216091
#include "test/SFMT-params216091.h"
#else
#ifdef __GNUC__
#error "MEXP is not valid."
#undef MEXP
#else
#undef MEXP
#endif
#endif
#endif
/* SFMT_PARAMS_H */
deps/jemalloc/test/include/test/SFMT-params11213.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS11213_H
#define SFMT_PARAMS11213_H
#define POS1 68
#define SL1 14
#define SL2 3
#define SR1 7
#define SR2 3
#define MSK1 0xeffff7fbU
#define MSK2 0xffffffefU
#define MSK3 0xdfdfbfffU
#define MSK4 0x7fffdbfdU
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0xe8148000U
#define PARITY4 0xd0c7afa3U
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2)
#define ALTI_SR2_PERM \
(vector unsigned char)(5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10}
#define ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2}
#define ALTI_SR2_PERM {5,6,7,0,9,10,11,4,13,14,15,8,19,19,19,12}
#define ALTI_SR2_PERM64 {13,14,15,0,1,2,3,4,19,19,19,8,9,10,11,12}
#endif
/* For OSX */
#define IDSTR "SFMT-11213:68-14-3-7-3:effff7fb-ffffffef-dfdfbfff-7fffdbfd"
#endif
/* SFMT_PARAMS11213_H */
deps/jemalloc/test/include/test/SFMT-params1279.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS1279_H
#define SFMT_PARAMS1279_H
#define POS1 7
#define SL1 14
#define SL2 3
#define SR1 5
#define SR2 1
#define MSK1 0xf7fefffdU
#define MSK2 0x7fefcfffU
#define MSK3 0xaff3ef3fU
#define MSK4 0xb5ffff7fU
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0x00000000U
#define PARITY4 0x20000000U
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2)
#define ALTI_SR2_PERM \
(vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10}
#define ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2}
#define ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14}
#define ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14}
#endif
/* For OSX */
#define IDSTR "SFMT-1279:7-14-3-5-1:f7fefffd-7fefcfff-aff3ef3f-b5ffff7f"
#endif
/* SFMT_PARAMS1279_H */
deps/jemalloc/test/include/test/SFMT-params132049.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS132049_H
#define SFMT_PARAMS132049_H
#define POS1 110
#define SL1 19
#define SL2 1
#define SR1 21
#define SR2 1
#define MSK1 0xffffbb5fU
#define MSK2 0xfb6ebf95U
#define MSK3 0xfffefffaU
#define MSK4 0xcff77fffU
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0xcb520000U
#define PARITY4 0xc7e91c7dU
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0)
#define ALTI_SR2_PERM \
(vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8}
#define ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0}
#define ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14}
#define ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14}
#endif
/* For OSX */
#define IDSTR "SFMT-132049:110-19-1-21-1:ffffbb5f-fb6ebf95-fffefffa-cff77fff"
#endif
/* SFMT_PARAMS132049_H */
deps/jemalloc/test/include/test/SFMT-params19937.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS19937_H
#define SFMT_PARAMS19937_H
#define POS1 122
#define SL1 18
#define SL2 1
#define SR1 11
#define SR2 1
#define MSK1 0xdfffffefU
#define MSK2 0xddfecb7fU
#define MSK3 0xbffaffffU
#define MSK4 0xbffffff6U
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0x00000000U
#define PARITY4 0x13c9e684U
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0)
#define ALTI_SR2_PERM \
(vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8}
#define ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0}
#define ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14}
#define ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14}
#endif
/* For OSX */
#define IDSTR "SFMT-19937:122-18-1-11-1:dfffffef-ddfecb7f-bffaffff-bffffff6"
#endif
/* SFMT_PARAMS19937_H */
deps/jemalloc/test/include/test/SFMT-params216091.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS216091_H
#define SFMT_PARAMS216091_H
#define POS1 627
#define SL1 11
#define SL2 3
#define SR1 10
#define SR2 1
#define MSK1 0xbff7bff7U
#define MSK2 0xbfffffffU
#define MSK3 0xbffffa7fU
#define MSK4 0xffddfbfbU
#define PARITY1 0xf8000001U
#define PARITY2 0x89e80709U
#define PARITY3 0x3bd2b64bU
#define PARITY4 0x0c64b1e4U
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2)
#define ALTI_SR2_PERM \
(vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {3,21,21,21,7,0,1,2,11,4,5,6,15,8,9,10}
#define ALTI_SL2_PERM64 {3,4,5,6,7,29,29,29,11,12,13,14,15,0,1,2}
#define ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14}
#define ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14}
#endif
/* For OSX */
#define IDSTR "SFMT-216091:627-11-3-10-1:bff7bff7-bfffffff-bffffa7f-ffddfbfb"
#endif
/* SFMT_PARAMS216091_H */
deps/jemalloc/test/include/test/SFMT-params2281.h
0 → 100644
View file @
fceef8e0
/*
* This file derives from SFMT 1.3.3
* (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
* released under the terms of the following license:
*
* Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
* University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Hiroshima University nor the names of
* its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SFMT_PARAMS2281_H
#define SFMT_PARAMS2281_H
#define POS1 12
#define SL1 19
#define SL2 1
#define SR1 5
#define SR2 1
#define MSK1 0xbff7ffbfU
#define MSK2 0xfdfffffeU
#define MSK3 0xf7ffef7fU
#define MSK4 0xf2f7cbbfU
#define PARITY1 0x00000001U
#define PARITY2 0x00000000U
#define PARITY3 0x00000000U
#define PARITY4 0x41dfa600U
/* PARAMETERS FOR ALTIVEC */
#if defined(__APPLE__)
/* For OSX */
#define ALTI_SL1 (vector unsigned int)(SL1, SL1, SL1, SL1)
#define ALTI_SR1 (vector unsigned int)(SR1, SR1, SR1, SR1)
#define ALTI_MSK (vector unsigned int)(MSK1, MSK2, MSK3, MSK4)
#define ALTI_MSK64 \
(vector unsigned int)(MSK2, MSK1, MSK4, MSK3)
#define ALTI_SL2_PERM \
(vector unsigned char)(1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8)
#define ALTI_SL2_PERM64 \
(vector unsigned char)(1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0)
#define ALTI_SR2_PERM \
(vector unsigned char)(7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14)
#define ALTI_SR2_PERM64 \
(vector unsigned char)(15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14)
#else
/* For OTHER OSs(Linux?) */
#define ALTI_SL1 {SL1, SL1, SL1, SL1}
#define ALTI_SR1 {SR1, SR1, SR1, SR1}
#define ALTI_MSK {MSK1, MSK2, MSK3, MSK4}
#define ALTI_MSK64 {MSK2, MSK1, MSK4, MSK3}
#define ALTI_SL2_PERM {1,2,3,23,5,6,7,0,9,10,11,4,13,14,15,8}
#define ALTI_SL2_PERM64 {1,2,3,4,5,6,7,31,9,10,11,12,13,14,15,0}
#define ALTI_SR2_PERM {7,0,1,2,11,4,5,6,15,8,9,10,17,12,13,14}
#define ALTI_SR2_PERM64 {15,0,1,2,3,4,5,6,17,8,9,10,11,12,13,14}
#endif
/* For OSX */
#define IDSTR "SFMT-2281:12-19-1-5-1:bff7ffbf-fdfffffe-f7ffef7f-f2f7cbbf"
#endif
/* SFMT_PARAMS2281_H */
Prev
1
2
3
4
5
6
7
8
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