OSDN Git Service

2003-06-12 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Jun 2003 12:20:45 +0000 (12:20 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Jun 2003 12:20:45 +0000 (12:20 +0000)
        * prims.cc (catch_segv): Create exception in handler.
        (catch_fpe): Likewise.
        (_Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ): Likewise.
        (_Jv_ThrowSignal): Remove.

        * include/x86_64-signal.h (INIT_SEGV): Delete reference to nullp.
        * include/default-signal.h (INIT_SEGV, INIT_FPE): Delete reference
        to nullp and arithexception.
        * include/dwarf2-signal.h (INIT_SEGV, INIT_FPE): Likewise.
        * include/i386-signal.h (INIT_SEGV, INIT_FPE): Likewise.
        * include/s390-signal.h (INIT_SEGV, INIT_FPE): Likewise.
        * include/sparc-signal.h (INIT_SEGV, INIT_FPE): Likewise.
        * include/win32-signal.h (INIT_SEGV, INIT_FPE): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67892 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/include/default-signal.h
libjava/include/dwarf2-signal.h
libjava/include/i386-signal.h
libjava/include/s390-signal.h
libjava/include/sparc-signal.h
libjava/include/win32-signal.h
libjava/include/x86_64-signal.h
libjava/prims.cc

index 81c271b..24a8e9d 100644 (file)
@@ -1,3 +1,19 @@
+2003-06-12  Andrew Haley  <aph@redhat.com>
+
+       * prims.cc (catch_segv): Create exception in handler.
+       (catch_fpe): Likewise.  
+       (_Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ): Likewise.
+       (_Jv_ThrowSignal): Remove.
+
+       * include/x86_64-signal.h (INIT_SEGV): Delete reference to nullp.
+       * include/default-signal.h (INIT_SEGV, INIT_FPE): Delete reference
+       to nullp and arithexception.
+       * include/dwarf2-signal.h (INIT_SEGV, INIT_FPE): Likewise.
+       * include/i386-signal.h (INIT_SEGV, INIT_FPE): Likewise.
+       * include/s390-signal.h (INIT_SEGV, INIT_FPE): Likewise.
+       * include/sparc-signal.h (INIT_SEGV, INIT_FPE): Likewise.
+       * include/win32-signal.h (INIT_SEGV, INIT_FPE): Likewise.
+
 2003-06-11  Andrew Haley  <aph@redhat.com>
 
        * jni.cc (_Jv_JNI_check_types): New.
index 492f0ca..1c50f5f 100644 (file)
@@ -24,7 +24,6 @@ static void _name (int _dummy)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     signal (SIGSEGV, catch_segv);                              \
   }                                                            \
 while (0)                                                      
@@ -32,8 +31,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     signal (SIGFPE, catch_fpe);                                        \
   }                                                            \
 while (0)
index 7dbcd9d..43f0cbe 100644 (file)
@@ -143,7 +143,6 @@ extern "C" {
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct kernel_sigaction act;                               \
     unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
     act.k_sa_sigaction = _Jv_catch_segv;                       \
@@ -158,8 +157,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct kernel_sigaction act;                               \
     unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
     act.k_sa_sigaction = _Jv_catch_fpe;                                \
@@ -185,7 +182,6 @@ extern "C" {
 do                                                             \
   {                                                            \
     struct kernel_sigaction act;                               \
-    nullp = new java::lang::NullPointerException ();           \
     act.k_sa_sigaction = _Jv_catch_segv;                       \
     act.k_sa_mask = 0;                                         \
     act.k_sa_flags = SA_SIGINFO;                               \
@@ -197,8 +193,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct kernel_sigaction act;                               \
     act.k_sa_sigaction = _Jv_catch_fpe;                                \
     act.k_sa_mask = 0;                                         \
@@ -212,7 +206,6 @@ while (0)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct sigaction act;                                      \
     act.sa_sigaction = _Jv_catch_segv;                         \
     sigemptyset (&act.sa_mask);                                        \
@@ -224,8 +217,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct sigaction act;                                      \
     act.sa_sigaction = _Jv_catch_fpe;                          \
     sigemptyset (&act.sa_mask);                                        \
@@ -250,7 +241,6 @@ while (0)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct sigaction act;                                      \
     act.sa_sigaction = _Jv_catch_segv;                         \
     sigemptyset (&act.sa_mask);                                        \
@@ -262,8 +252,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct sigaction act;                                      \
     act.sa_sigaction = _Jv_catch_fpe;                          \
     sigemptyset (&act.sa_mask);                                        \
index 6ad496c..869a928 100644 (file)
@@ -111,7 +111,6 @@ struct old_i386_kernel_sigaction {
 #define INIT_SEGV                                      \
 do                                                     \
   {                                                    \
-    nullp = new java::lang::NullPointerException ();   \
     struct old_i386_kernel_sigaction kact;             \
     kact.k_sa_handler = catch_segv;                    \
     kact.k_sa_mask = 0;                                        \
@@ -123,8 +122,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct old_i386_kernel_sigaction kact;                     \
     kact.k_sa_handler = catch_fpe;                             \
     kact.k_sa_mask = 0;                                                \
index 44777c0..8b9adae 100644 (file)
@@ -52,7 +52,6 @@ struct old_s390_kernel_sigaction {
 #define INIT_SEGV                                      \
 do                                                     \
   {                                                    \
-    nullp = new java::lang::NullPointerException ();   \
     struct old_s390_kernel_sigaction kact;             \
     kact.k_sa_handler = catch_segv;                    \
     kact.k_sa_mask = 0;                                        \
@@ -64,8 +63,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct old_s390_kernel_sigaction kact;                     \
     kact.k_sa_handler = catch_fpe;                             \
     kact.k_sa_mask = 0;                                                \
index 8694fc5..1676d26 100644 (file)
@@ -45,7 +45,6 @@ while (0)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct sigaction act;                                      \
     act.sa_sigaction = catch_segv;                             \
     act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
@@ -57,8 +56,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
     struct sigaction act;                                      \
     act.sa_flags = SA_SIGINFO | SA_NODEFER;                    \
     act.sa_sigaction = catch_fpe;                              \
index e12c3c3..8d8a9e2 100644 (file)
@@ -26,7 +26,6 @@ static void _name (int _dummy)
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
   }                                                            \
 while (0)
 
@@ -34,8 +33,6 @@ while (0)
 #define INIT_FPE                                               \
 do                                                             \
   {                                                            \
-    arithexception = new java::lang::ArithmeticException       \
-      (JvNewStringLatin1 ("/ by zero"));                       \
   }                                                            \
 while (0)
 
index 54095a9..eb03447 100644 (file)
@@ -64,7 +64,6 @@ static void restore_rt (void) asm ("__restore_rt");
 #define INIT_SEGV                                              \
 do                                                             \
   {                                                            \
-    nullp = new java::lang::NullPointerException ();           \
     struct kernel_sigaction act;                               \
     act.k_sa_sigaction = _Jv_catch_segv;                       \
     sigemptyset (&act.k_sa_mask);                              \
index 9ddd1d2..8d9cc6d 100644 (file)
@@ -122,39 +122,27 @@ void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
 #endif
 \f
 
-extern "C" void _Jv_ThrowSignal (jthrowable) __attribute ((noreturn));
-
-// Just like _Jv_Throw, but fill in the stack trace first.  Although
-// this is declared extern in order that its name not be mangled, it
-// is not intended to be used outside this file.
-void 
-_Jv_ThrowSignal (jthrowable throwable)
-{
-  throwable->fillInStackTrace ();
-  throw throwable;
-}
 #ifdef HANDLE_SEGV
-static java::lang::NullPointerException *nullp;
-
 SIGNAL_HANDLER (catch_segv)
 {
+  java::lang::NullPointerException *nullp 
+    = new java::lang::NullPointerException;
   MAKE_THROW_FRAME (nullp);
-  _Jv_ThrowSignal (nullp);
+  throw nullp;
 }
 #endif
 
-static java::lang::ArithmeticException *arithexception;
-
 #ifdef HANDLE_FPE
 SIGNAL_HANDLER (catch_fpe)
 {
+  java::lang::ArithmeticException *arithexception 
+    = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));
 #ifdef HANDLE_DIVIDE_OVERFLOW
   HANDLE_DIVIDE_OVERFLOW;
 #else
   MAKE_THROW_FRAME (arithexception);
 #endif
-  _Jv_ThrowSignal (arithexception);
+  throw arithexception;
 }
 #endif
 
@@ -921,9 +909,6 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
   INIT_SEGV;
 #ifdef HANDLE_FPE
   INIT_FPE;
-#else
-  arithexception = new java::lang::ArithmeticException
-    (JvNewStringLatin1 ("/ by zero"));
 #endif
   
   no_memory = new java::lang::OutOfMemoryError;
@@ -1093,7 +1078,11 @@ jint
 _Jv_divI (jint dividend, jint divisor)
 {
   if (__builtin_expect (divisor == 0, false))
-    _Jv_ThrowSignal (arithexception);
+    {
+      java::lang::ArithmeticException *arithexception 
+       = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
   
   if (dividend == (jint) 0x80000000L && divisor == -1)
     return dividend;
@@ -1105,11 +1094,15 @@ jint
 _Jv_remI (jint dividend, jint divisor)
 {
   if (__builtin_expect (divisor == 0, false))
-    _Jv_ThrowSignal (arithexception);
+    {
+      java::lang::ArithmeticException *arithexception 
+       = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
   
   if (dividend == (jint) 0x80000000L && divisor == -1)
     return 0;
-
+  
   return dividend % divisor;
 }
 
@@ -1117,8 +1110,12 @@ jlong
 _Jv_divJ (jlong dividend, jlong divisor)
 {
   if (__builtin_expect (divisor == 0, false))
-    _Jv_ThrowSignal (arithexception);
-  
+    {
+      java::lang::ArithmeticException *arithexception 
+       = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+
   if (dividend == (jlong) 0x8000000000000000LL && divisor == -1)
     return dividend;
 
@@ -1129,8 +1126,12 @@ jlong
 _Jv_remJ (jlong dividend, jlong divisor)
 {
   if (__builtin_expect (divisor == 0, false))
-    _Jv_ThrowSignal (arithexception);
-  
+    {
+      java::lang::ArithmeticException *arithexception 
+       = new java::lang::ArithmeticException (JvNewStringLatin1 ("/ by zero"));      
+      throw arithexception;
+    }
+
   if (dividend == (jlong) 0x8000000000000000LL && divisor == -1)
     return 0;