This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

WIN-08.1: win32 patch to prims.cc



Added an #undef STRICT after #include<windows.h> to prevent naming
conflicts in cni.h's inclusions.

2002-01-31  Adam Megacz <adam@xwt.org>

        * prims.cc
          (_Jv_CreateJavaVM): We now use WIN32 instead of
          USE_WIN32_SIGNALLING and USE_WINSOCK.
          (win32_exception_handler): Now throws an exception out of
          the signal handler; assumes SJLJ
          Also added #undef STRICT after #include<windows.h>
          
Index: prims.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/prims.cc,v
retrieving revision 1.66
diff -u -r1.66 prims.cc
--- prims.cc	2001/12/16 22:28:35	1.66
+++ prims.cc	2002/02/01 04:35:12
@@ -10,14 +10,15 @@
 
 #include <config.h>
 
-#ifdef USE_WIN32_SIGNALLING
+#ifdef WIN32
 #include <windows.h>
-#endif /* USE_WIN32_SIGNALLING */
+#undef STRICT
+#endif /* WIN32 */
 
-#ifdef USE_WINSOCK
+#ifdef WIN32
 #undef __INSIDE_CYGWIN__
 #include <winsock.h>
-#endif /* USE_WINSOCK */
+#endif /* WIN32 */
 
 #include <stdlib.h>
 #include <stdarg.h>
@@ -730,28 +731,19 @@
     }
 }
 
-#ifdef USE_WIN32_SIGNALLING
+#ifdef WIN32
 
 extern "C" int* win32_get_restart_frame (void *);
 
 LONG CALLBACK
 win32_exception_handler (LPEXCEPTION_POINTERS e)
 {
-  int* setjmp_buf;
-  if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)   
-    setjmp_buf = win32_get_restart_frame (nullp);
+  if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
+    _Jv_ThrowNullPointerException();
   else if (e->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
-    setjmp_buf = win32_get_restart_frame (arithexception);
+    throw new java::lang::ArithmeticException;
   else
     return EXCEPTION_CONTINUE_SEARCH;
-
-  e->ContextRecord->Ebp = setjmp_buf[0];
-  // FIXME: Why does i386-signal.h increment the PC here, do we need to do it?
-  e->ContextRecord->Eip = setjmp_buf[1];
-  // FIXME: Is this the stack pointer? Do we need it?
-  e->ContextRecord->Esp = setjmp_buf[2];
-
-  return EXCEPTION_CONTINUE_EXECUTION;
 }
 
 #endif
@@ -962,14 +954,11 @@
   LTDL_SET_PRELOADED_SYMBOLS ();
 #endif
 
-#ifdef USE_WINSOCK
+#ifdef WIN32
   // Initialise winsock for networking
   WSADATA data;
   if (WSAStartup (MAKEWORD (1, 1), &data))
       MessageBox (NULL, "Error initialising winsock library.", "Error", MB_OK | MB_ICONEXCLAMATION);
-#endif /* USE_WINSOCK */
-
-#ifdef USE_WIN32_SIGNALLING
   // Install exception handler
   SetUnhandledExceptionFilter (win32_exception_handler);
 #elif defined(HAVE_SIGACTION)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]