[vmkit-commits] [vmkit] r100929 - /vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sat Apr 10 09:15:40 PDT 2010
Author: geoffray
Date: Sat Apr 10 11:15:40 2010
New Revision: 100929
URL: http://llvm.org/viewvc/llvm-project?rev=100929&view=rev
Log:
Do a try catch on loadBootstrap so that we can debug if something went wrong.
Modified:
vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=100929&r1=100928&r2=100929&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Sat Apr 10 11:15:40 2010
@@ -1235,41 +1235,51 @@
JavaString* str = 0;
JavaObject* instrumenter = 0;
ArrayObject* args = 0;
+ JavaObject* exc = 0;
llvm_gcroot(str, 0);
llvm_gcroot(instrumenter, 0);
llvm_gcroot(args, 0);
+ llvm_gcroot(exc, 0);
Jnjvm* vm = thread->getJVM();
vm->mainThread = thread;
- vm->loadBootstrap();
+ try {
+ vm->loadBootstrap();
+ } catch (...) {
+ exc = JavaThread::get()->pendingException;
+ }
+ if (exc != NULL) {
+ assert(exc && "No Java exception");
+ fprintf(stderr, "Exception %s while bootstraping VM",
+ UTF8Buffer(exc->getClass()->name).cString());
+ } else {
#ifdef SERVICE
- thread->ServiceException = vm->upcalls->newThrowable->doNew(vm);
+ thread->ServiceException = vm->upcalls->newThrowable->doNew(vm);
#endif
- ClArgumentsInfo& info = vm->argumentsInfo;
+ ClArgumentsInfo& info = vm->argumentsInfo;
- if (info.agents.size()) {
- assert(0 && "implement me");
- instrumenter = 0;//createInstrumenter();
- for (std::vector< std::pair<char*, char*> >::iterator i =
- info.agents.begin(),
- e = info.agents.end(); i!= e; ++i) {
- str = vm->asciizToStr(i->second);
- vm->executePremain(i->first, str, instrumenter);
+ if (info.agents.size()) {
+ assert(0 && "implement me");
+ instrumenter = 0;//createInstrumenter();
+ for (std::vector< std::pair<char*, char*> >::iterator i =
+ info.agents.begin(), e = info.agents.end(); i!= e; ++i) {
+ str = vm->asciizToStr(i->second);
+ vm->executePremain(i->first, str, instrumenter);
+ }
}
- }
- UserClassArray* array = vm->bootstrapLoader->upcalls->ArrayOfString;
- args = (ArrayObject*)array->doNew(info.argc - 2, vm);
- for (int i = 2; i < info.argc; ++i) {
- args->elements[i - 2] = (JavaObject*)vm->asciizToStr(info.argv[i]);
- }
+ UserClassArray* array = vm->bootstrapLoader->upcalls->ArrayOfString;
+ args = (ArrayObject*)array->doNew(info.argc - 2, vm);
+ for (int i = 2; i < info.argc; ++i) {
+ args->elements[i - 2] = (JavaObject*)vm->asciizToStr(info.argv[i]);
+ }
- vm->executeClass(info.className, args);
-
+ vm->executeClass(info.className, args);
+ }
vm->threadSystem.nonDaemonLock.lock();
--(vm->threadSystem.nonDaemonThreads);
if (vm->threadSystem.nonDaemonThreads == 0)
More information about the vmkit-commits
mailing list