1
1
#include "Python.h"
2
2
#include "numpy/npy_common.h"
3
3
4
- #define NPY_MEMALIGN 16 /* 16 for SSE2, 32 for AVX, 64 for Xeon Phi */
4
+ #define NPY_MEMALIGN 16 /* 16 for SSE2, 32 for AVX, 64 for Xeon Phi */
5
5
6
- static NPY_INLINE
7
- void * PyArray_realloc_aligned (void * p , size_t n )
6
+ static NPY_INLINE void * PyArray_realloc_aligned (void * p , size_t n )
8
7
{
9
8
void * p1 , * * p2 , * base ;
10
- size_t old_offs , offs = NPY_MEMALIGN - 1 + sizeof (void * );
11
- if (NPY_UNLIKELY (p != NULL )) {
12
- base = * (((void * * )p )- 1 );
13
- if (NPY_UNLIKELY ((p1 = PyMem_Realloc (base ,n + offs )) == NULL )) return NULL ;
14
- if (NPY_LIKELY (p1 == base )) return p ;
15
- p2 = (void * * )(((Py_uintptr_t )(p1 )+ offs ) & ~(NPY_MEMALIGN - 1 ));
9
+ size_t old_offs , offs = NPY_MEMALIGN - 1 + sizeof (void * );
10
+ if (NPY_UNLIKELY (p != NULL ))
11
+ {
12
+ base = * (((void * * )p ) - 1 );
13
+ if (NPY_UNLIKELY ((p1 = PyMem_Realloc (base , n + offs )) == NULL ))
14
+ return NULL ;
15
+ if (NPY_LIKELY (p1 == base ))
16
+ return p ;
17
+ p2 = (void * * )(((Py_uintptr_t )(p1 ) + offs ) & ~(NPY_MEMALIGN - 1 ));
16
18
old_offs = (size_t )((Py_uintptr_t )p - (Py_uintptr_t )base );
17
- memmove ((void * )p2 ,((char * )p1 )+ old_offs ,n );
18
- } else {
19
- if (NPY_UNLIKELY ((p1 = PyMem_Malloc (n + offs )) == NULL )) return NULL ;
20
- p2 = (void * * )(((Py_uintptr_t )(p1 )+ offs ) & ~(NPY_MEMALIGN - 1 ));
19
+ memmove ((void * )p2 , ((char * )p1 ) + old_offs , n );
21
20
}
22
- * (p2 - 1 ) = p1 ;
23
- return (void * )p2 ;
21
+ else
22
+ {
23
+ if (NPY_UNLIKELY ((p1 = PyMem_Malloc (n + offs )) == NULL ))
24
+ return NULL ;
25
+ p2 = (void * * )(((Py_uintptr_t )(p1 ) + offs ) & ~(NPY_MEMALIGN - 1 ));
26
+ }
27
+ * (p2 - 1 ) = p1 ;
28
+ return (void * )p2 ;
24
29
}
25
30
26
- static NPY_INLINE
27
- void * PyArray_malloc_aligned (size_t n )
31
+ static NPY_INLINE void * PyArray_malloc_aligned (size_t n )
28
32
{
29
33
return PyArray_realloc_aligned (NULL , n );
30
34
}
31
35
32
- static NPY_INLINE
33
- void * PyArray_calloc_aligned (size_t n , size_t s )
36
+ static NPY_INLINE void * PyArray_calloc_aligned (size_t n , size_t s )
34
37
{
35
38
void * p ;
36
- if (NPY_UNLIKELY ((p = PyArray_realloc_aligned (NULL ,n * s )) == NULL )) return NULL ;
37
- memset (p , 0 , n * s );
39
+ if (NPY_UNLIKELY ((p = PyArray_realloc_aligned (NULL , n * s )) == NULL ))
40
+ return NULL ;
41
+ memset (p , 0 , n * s );
38
42
return p ;
39
43
}
40
44
41
- static NPY_INLINE
42
- void PyArray_free_aligned (void * p )
45
+ static NPY_INLINE void PyArray_free_aligned (void * p )
43
46
{
44
- void * base = * (((void * * )p )- 1 );
47
+ void * base = * (((void * * )p ) - 1 );
45
48
PyMem_Free (base );
46
49
}
0 commit comments