[vmkit-commits] [vmkit] r67300 - /vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Mar 19 03:26:46 PDT 2009


Author: geoffray
Date: Thu Mar 19 05:26:43 2009
New Revision: 67300

URL: http://llvm.org/viewvc/llvm-project?rev=67300&view=rev
Log:
Who knew that initialization of simple classes may in fact run complex code?


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=67300&r1=67299&r2=67300&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu Mar 19 05:26:43 2009
@@ -817,6 +817,13 @@
   LOAD_CLASS(upcalls->newVMThread);
   ptr = ((uintptr_t*)upcalls->newVMThread->getVirtualVT());
   ptr[VT_DESTRUCTOR_OFFSET] = (uintptr_t)JavaObjectVMThread::staticDestructor;
+
+#ifdef SERVICE
+  if (!IsolateID)
+#endif
+  // The initialization code of the classes initialized below may require
+  // to get the Java thread, so we create the Java thread object first.
+  mapInitialThread();
   
   LOAD_CLASS(upcalls->newStackTraceElement);
   LOAD_CLASS(upcalls->newVMThrowable);
@@ -860,13 +867,10 @@
   LOAD_CLASS(upcalls->ClassNotFoundException); 
 #undef LOAD_CLASS
 
-#ifdef SERVICE
-  if (!IsolateID)
-#endif
-  mapInitialThread();
   loadAppClassLoader();
   JavaObject* obj = JavaThread::get()->currentThread();
   JavaObject* javaLoader = appClassLoader->getJavaClassLoader();
+
 #ifdef SERVICE
   if (!IsolateID)
 #endif





More information about the vmkit-commits mailing list