Mercurial > hg > graal-compiler
diff src/os/windows/vm/os_windows.cpp @ 8880:0ca3dd0ffaba
Merge
author | bharadwaj |
---|---|
date | Thu, 04 Apr 2013 17:01:34 -0700 |
parents | 754c24457b20 53028d751155 |
children | b9a918201d47 8be1318fbe77 |
line wrap: on
line diff
--- a/src/os/windows/vm/os_windows.cpp Thu Apr 04 19:07:32 2013 +0200 +++ b/src/os/windows/vm/os_windows.cpp Thu Apr 04 17:01:34 2013 -0700 @@ -3773,6 +3773,8 @@ } } +static jint initSock(); + // this is called _after_ the global arguments have been parsed jint os::init_2(void) { // Allocate a single page and mark it as readable for safepoint polling @@ -3903,6 +3905,10 @@ if (!success) UseNUMAInterleaving = false; } + if (initSock() != JNI_OK) { + return JNI_ERR; + } + return JNI_OK; } @@ -4899,42 +4905,24 @@ // We don't build a headless jre for Windows bool os::is_headless_jre() { return false; } - -typedef CRITICAL_SECTION mutex_t; -#define mutexInit(m) InitializeCriticalSection(m) -#define mutexDestroy(m) DeleteCriticalSection(m) -#define mutexLock(m) EnterCriticalSection(m) -#define mutexUnlock(m) LeaveCriticalSection(m) - -static bool sock_initialized = FALSE; -static mutex_t sockFnTableMutex; - -static void initSock() { +static jint initSock() { WSADATA wsadata; if (!os::WinSock2Dll::WinSock2Available()) { - jio_fprintf(stderr, "Could not load Winsock 2 (error: %d)\n", + jio_fprintf(stderr, "Could not load Winsock (error: %d)\n", ::GetLastError()); - return; - } - if (sock_initialized == TRUE) return; - - ::mutexInit(&sockFnTableMutex); - ::mutexLock(&sockFnTableMutex); - if (os::WinSock2Dll::WSAStartup(MAKEWORD(1,1), &wsadata) != 0) { - jio_fprintf(stderr, "Could not initialize Winsock\n"); - } - sock_initialized = TRUE; - ::mutexUnlock(&sockFnTableMutex); + return JNI_ERR; + } + + if (os::WinSock2Dll::WSAStartup(MAKEWORD(2,2), &wsadata) != 0) { + jio_fprintf(stderr, "Could not initialize Winsock (error: %d)\n", + ::GetLastError()); + return JNI_ERR; + } + return JNI_OK; } struct hostent* os::get_host_by_name(char* name) { - if (!sock_initialized) { - initSock(); - } - if (!os::WinSock2Dll::WinSock2Available()) { - return NULL; - } return (struct hostent*)os::WinSock2Dll::gethostbyname(name); }