prims.cc (_Jv_Abort): Always print error message using fprintf, don't try to allocate.
* 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. From-SVN: r46424
This commit is contained in:
parent
187e37f9a6
commit
afb2dec526
4 changed files with 30 additions and 9 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2001-10-23 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2001-10-22 Tom Tromey <tromey@redhat.com>
|
2001-10-22 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* java/util/GregorianCalendar.java (getGregorianChange): Removed
|
* java/util/GregorianCalendar.java (getGregorianChange): Removed
|
||||||
|
|
|
@ -131,6 +131,9 @@ namespace gcj
|
||||||
extern _Jv_Utf8Const *clinit_name; /* "<clinit>" */
|
extern _Jv_Utf8Const *clinit_name; /* "<clinit>" */
|
||||||
extern _Jv_Utf8Const *init_name; /* "<init>" */
|
extern _Jv_Utf8Const *init_name; /* "<init>" */
|
||||||
extern _Jv_Utf8Const *finit_name; /* "finit$", */
|
extern _Jv_Utf8Const *finit_name; /* "finit$", */
|
||||||
|
|
||||||
|
/* Set to true by _Jv_CreateJavaVM. */
|
||||||
|
extern bool runtimeInitialized;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Type of pointer used as finalizer. */
|
/* Type of pointer used as finalizer. */
|
||||||
|
|
|
@ -14,6 +14,7 @@ details. */
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <gcj/cni.h>
|
#include <gcj/cni.h>
|
||||||
#include <jvm.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
|
// If you get this, it means you have the same class in two
|
||||||
// different libraries.
|
// 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;
|
check_class = check_class->next;
|
||||||
|
|
|
@ -299,10 +299,7 @@ _Jv_Abort (const char *, const char *, int, const char *message)
|
||||||
"libgcj failure: %s\n in function %s, file %s, line %d\n",
|
"libgcj failure: %s\n in function %s, file %s, line %d\n",
|
||||||
message, function, file, line);
|
message, function, file, line);
|
||||||
#else
|
#else
|
||||||
java::io::PrintStream *err = java::lang::System::err;
|
fprintf (stderr, "libgcj failure: %s\n", message);
|
||||||
err->print(JvNewStringLatin1 ("libgcj failure: "));
|
|
||||||
err->println(JvNewStringLatin1 (message));
|
|
||||||
err->flush();
|
|
||||||
#endif
|
#endif
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
@ -872,6 +869,8 @@ namespace gcj
|
||||||
_Jv_Utf8Const *clinit_name;
|
_Jv_Utf8Const *clinit_name;
|
||||||
_Jv_Utf8Const *init_name;
|
_Jv_Utf8Const *init_name;
|
||||||
_Jv_Utf8Const *finit_name;
|
_Jv_Utf8Const *finit_name;
|
||||||
|
|
||||||
|
bool runtimeInitialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
jint
|
jint
|
||||||
|
@ -879,12 +878,10 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
|
||||||
{
|
{
|
||||||
using namespace gcj;
|
using namespace gcj;
|
||||||
|
|
||||||
static bool init = false;
|
if (runtimeInitialized)
|
||||||
|
|
||||||
if (init)
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
init = true;
|
runtimeInitialized = true;
|
||||||
|
|
||||||
PROCESS_GCJ_PROPERTIES;
|
PROCESS_GCJ_PROPERTIES;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue