1 // win32.cc - Helper functions for Microsoft-flavored OSs.
3 /* Copyright (C) 2002 Free Software Foundation
5 This file is part of libgcj.
7 This software is copyrighted work licensed under the terms of the
8 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
13 #include <sys/timeb.h>
16 #include <java/lang/ArithmeticException.h>
19 win32_exception_handler (LPEXCEPTION_POINTERS e)
21 if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
22 _Jv_ThrowNullPointerException();
23 else if (e->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
24 throw new java::lang::ArithmeticException;
26 return EXCEPTION_CONTINUE_SEARCH;
29 // Platform-specific VM initialization.
31 _Jv_platform_initialize (void)
33 // Initialise winsock for networking
35 if (WSAStartup (MAKEWORD (1, 1), &data))
36 MessageBox (NULL, "Error initialising winsock library.", "Error",
37 MB_OK | MB_ICONEXCLAMATION);
38 // Install exception handler
39 SetUnhandledExceptionFilter (win32_exception_handler);
42 // gettimeofday implementation.
44 _Jv_platform_gettimeofday ()
48 return t.time * 1000LL + t.millitm;
51 // The following definitions "fake out" mingw to think that -mthreads
52 // was enabled and that mingwthr.dll was linked. GCJ-compiled
53 // applications don't need this helper library because we can safely
54 // detect thread death (return from Thread.run()).
59 __mingwthr_key_dtor (DWORD, void (*) (void *))
61 // FIXME: for now we do nothing; this causes a memory leak of
62 // approximately 24 bytes per thread created.