Fix Windows build issues

This resolves #333.
This commit is contained in:
Dmitri Smirnov 2016-02-23 11:39:02 -08:00 committed by Jason Evans
parent ae45142adc
commit b41a07c31a
4 changed files with 31 additions and 6 deletions

View File

@ -18,6 +18,7 @@
# endif # endif
# include <pthread.h> # include <pthread.h>
# include <errno.h> # include <errno.h>
# include <sys/time.h>
#endif #endif
#include <sys/types.h> #include <sys/types.h>
@ -61,6 +62,4 @@ isblank(int c)
#endif #endif
#include <fcntl.h> #include <fcntl.h>
#include <sys/time.h>
#endif /* JEMALLOC_INTERNAL_H */ #endif /* JEMALLOC_INTERNAL_H */

View File

@ -21,7 +21,37 @@ static __forceinline int ffs(int x)
return (ffsl(x)); return (ffsl(x));
} }
# ifdef _M_X64
# pragma intrinsic(_BitScanForward64)
# endif
static __forceinline int ffsll(unsigned __int64 x)
{
unsigned long i;
#ifdef _M_X64
if (_BitScanForward64(&i, x))
return (i + 1);
return (0);
#else #else
// Fallback for 32-bit build where 64-bit version not available
// assuming little endian
union {
unsigned __int64 ll;
unsigned long l[2];
} s;
s.ll = x;
if (_BitScanForward(&i, s.l[0]))
return (i + 1);
else if(_BitScanForward(&i, s.l[1]))
return (i + 33);
return (0);
#endif
}
#else
# define ffsll(x) __builtin_ffsll(x)
# define ffsl(x) __builtin_ffsl(x) # define ffsl(x) __builtin_ffsl(x)
# define ffs(x) __builtin_ffs(x) # define ffs(x) __builtin_ffs(x)
#endif #endif

View File

@ -11,7 +11,6 @@
#ifdef _WIN32 #ifdef _WIN32
# include "msvc_compat/strings.h" # include "msvc_compat/strings.h"
#endif #endif
#include <sys/time.h>
#ifdef _WIN32 #ifdef _WIN32
# include <windows.h> # include <windows.h>

View File

@ -1,8 +1,5 @@
/* Simple timer, for use in benchmark reporting. */ /* Simple timer, for use in benchmark reporting. */
#include <unistd.h>
#include <sys/time.h>
typedef struct { typedef struct {
nstime_t t0; nstime_t t0;
nstime_t t1; nstime_t t1;