summaryrefslogtreecommitdiffstats
path: root/libjava/java
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-23 05:42:03 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-23 05:42:03 +0000
commit5bac6719fb51efc5ae3ed6e1610ff50043183d05 (patch)
treebf8ec1fbae17015b582311573e8b7f51bcecfd33 /libjava/java
parent314f2422942f727134ce2052ad12cfa1efeea167 (diff)
downloadppe42-gcc-5bac6719fb51efc5ae3ed6e1610ff50043183d05.tar.gz
ppe42-gcc-5bac6719fb51efc5ae3ed6e1610ff50043183d05.zip
* prims.cc (_Jv_Abort): Always print error message using fprintf,
don't try to allocate. (_Jv_CreateJavaVM): Set gcj::runTimeInitialized. * include/jvm.h (gcj::runTimeInitialized): New variable declaration. * java/lang/natClassLoader.cc (_Jv_RegisterClassHookDefault): Handle duplicate class registration with JvFail if the runtime hasn't been initialized yet. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46424 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/natClassLoader.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index 3c2679bd8b4..d92a90c8b8c 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -14,6 +14,7 @@ details. */
#include <stdlib.h>
#include <string.h>
+#include <stdio.h>
#include <gcj/cni.h>
#include <jvm.h>
@@ -452,7 +453,17 @@ _Jv_RegisterClassHookDefault (jclass klass)
{
// If you get this, it means you have the same class in two
// different libraries.
- throw new java::lang::VirtualMachineError (JvNewStringLatin1 ("class registered twice"));
+ char *message;
+ asprintf (&message, "Duplicate class registration: %s",
+ klass->name->data);
+ if (! gcj::runtimeInitialized)
+ JvFail (message);
+ else
+ {
+ java::lang::String *str = JvNewStringLatin1 (message);
+ free (message);
+ throw new java::lang::VirtualMachineError (str);
+ }
}
check_class = check_class->next;
OpenPOWER on IntegriCloud