summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-13 12:20:45 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-13 12:20:45 +0000
commit7a986f179d24748f29c99d9cc39d2b06c64d91b5 (patch)
treef6a9be472e2ed22b97800e7de0cfd99ecb2818bd /libjava
parentd46ab9f316b9aaf78c25cbc3dead3bd15dd3e762 (diff)
downloadgcc-7a986f179d24748f29c99d9cc39d2b06c64d91b5.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67892 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog16
-rw-r--r--libjava/include/default-signal.h3
-rw-r--r--libjava/include/dwarf2-signal.h12
-rw-r--r--libjava/include/i386-signal.h3
-rw-r--r--libjava/include/s390-signal.h3
-rw-r--r--libjava/include/sparc-signal.h3
-rw-r--r--libjava/include/win32-signal.h3
-rw-r--r--libjava/include/x86_64-signal.h1
-rw-r--r--libjava/prims.cc57
9 files changed, 45 insertions, 56 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 81c271b0763..24a8e9dbaf7 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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.
diff --git a/libjava/include/default-signal.h b/libjava/include/default-signal.h
index 492f0cacdc7..1c50f5f7ec3 100644
--- a/libjava/include/default-signal.h
+++ b/libjava/include/default-signal.h
@@ -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)
diff --git a/libjava/include/dwarf2-signal.h b/libjava/include/dwarf2-signal.h
index 7dbcd9dfd2d..43f0cbe914f 100644
--- a/libjava/include/dwarf2-signal.h
+++ b/libjava/include/dwarf2-signal.h
@@ -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); \
diff --git a/libjava/include/i386-signal.h b/libjava/include/i386-signal.h
index 6ad496c47a4..869a928332c 100644
--- a/libjava/include/i386-signal.h
+++ b/libjava/include/i386-signal.h
@@ -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; \
diff --git a/libjava/include/s390-signal.h b/libjava/include/s390-signal.h
index 44777c0672b..8b9adae05a0 100644
--- a/libjava/include/s390-signal.h
+++ b/libjava/include/s390-signal.h
@@ -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; \
diff --git a/libjava/include/sparc-signal.h b/libjava/include/sparc-signal.h
index 8694fc598ed..1676d26396b 100644
--- a/libjava/include/sparc-signal.h
+++ b/libjava/include/sparc-signal.h
@@ -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; \
diff --git a/libjava/include/win32-signal.h b/libjava/include/win32-signal.h
index e12c3c36681..8d8a9e2d5bf 100644
--- a/libjava/include/win32-signal.h
+++ b/libjava/include/win32-signal.h
@@ -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)
diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h
index 54095a96df3..eb034473f9e 100644
--- a/libjava/include/x86_64-signal.h
+++ b/libjava/include/x86_64-signal.h
@@ -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); \
diff --git a/libjava/prims.cc b/libjava/prims.cc
index 9ddd1d2c2af..8d9cc6d97d7 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -122,39 +122,27 @@ void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
#endif
-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;