Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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