[vmkit-commits] [vmkit] r61518 - /vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Dec 31 01:05:55 PST 2008
Author: geoffray
Date: Wed Dec 31 03:05:53 2008
New Revision: 61518
URL: http://llvm.org/viewvc/llvm-project?rev=61518&view=rev
Log:
Do a try catch when loading the class, because it may raise an exception.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=61518&r1=61517&r2=61518&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Dec 31 03:05:53 2008
@@ -880,16 +880,16 @@
}
void Jnjvm::executeClass(const char* className, ArrayObject* args) {
- const UTF8* name = appClassLoader->asciizConstructUTF8(className);
- UserClass* cl = (UserClass*)appClassLoader->loadName(name, true, true);
- cl->initialiseClass(this);
-
- const UTF8* funcSign =
- appClassLoader->asciizConstructUTF8("([Ljava/lang/String;)V");
- const UTF8* funcName = appClassLoader->asciizConstructUTF8("main");
- JavaMethod* method = cl->lookupMethod(funcName, funcSign, true, true, 0);
-
try {
+ const UTF8* name = appClassLoader->asciizConstructUTF8(className);
+ UserClass* cl = (UserClass*)appClassLoader->loadName(name, true, true);
+ cl->initialiseClass(this);
+
+ const UTF8* funcSign =
+ appClassLoader->asciizConstructUTF8("([Ljava/lang/String;)V");
+ const UTF8* funcName = appClassLoader->asciizConstructUTF8("main");
+ JavaMethod* method = cl->lookupMethod(funcName, funcSign, true, true, 0);
+
method->invokeIntStatic(this, method->classDef, args);
}catch(...) {
}
@@ -913,16 +913,20 @@
void Jnjvm::executePremain(const char* className, JavaString* args,
JavaObject* instrumenter) {
- const UTF8* name = appClassLoader->asciizConstructUTF8(className);
- UserClass* cl = (UserClass*)appClassLoader->loadName(name, true, true);
- cl->initialiseClass(this);
+ try {
+ const UTF8* name = appClassLoader->asciizConstructUTF8(className);
+ UserClass* cl = (UserClass*)appClassLoader->loadName(name, true, true);
+ cl->initialiseClass(this);
- const UTF8* funcSign = appClassLoader->asciizConstructUTF8(
+ const UTF8* funcSign = appClassLoader->asciizConstructUTF8(
"(Ljava/lang/String;Ljava/lang/instrument/Instrumentation;)V");
- const UTF8* funcName = appClassLoader->asciizConstructUTF8("premain");
- JavaMethod* method = cl->lookupMethod(funcName, funcSign, true, true, 0);
+ const UTF8* funcName = appClassLoader->asciizConstructUTF8("premain");
+ JavaMethod* method = cl->lookupMethod(funcName, funcSign, true, true, 0);
- method->invokeIntStatic(this, method->classDef, args, instrumenter);
+ method->invokeIntStatic(this, method->classDef, args, instrumenter);
+ } catch(...) {
+ JavaThread::get()->clearException();
+ }
}
void Jnjvm::waitForExit() {
More information about the vmkit-commits
mailing list