[vmkit-commits] [vmkit] r55473 - in /vmkit/trunk/lib/JnJVM/VMCore: Jnjvm.cpp Jnjvm.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Aug 28 09:08:51 PDT 2008


Author: geoffray
Date: Thu Aug 28 11:08:48 2008
New Revision: 55473

URL: http://llvm.org/viewvc/llvm-project?rev=55473&view=rev
Log:
Get the key only if we're the first isolate.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=55473&r1=55472&r2=55473&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu Aug 28 11:08:48 2008
@@ -802,13 +802,14 @@
 }
 
 void Jnjvm::runIsolate(const char* className, ArrayObject* args) {
-  Jnjvm *isolate = allocateIsolate();
+  int stack;
+  Jnjvm *isolate = allocateIsolate(&stack);
   isolate->loadBootstrap();
   isolate->executeClass(className, args);
   isolate->waitForExit();
 }
 
-Jnjvm* Jnjvm::allocateIsolate() {
+Jnjvm* Jnjvm::allocateIsolate(void* sp) {
   Jnjvm *isolate= gc_new(Jnjvm)();
 
 #ifdef MULTIPLE_GC
@@ -821,16 +822,19 @@
   
   isolate->bootstrapThread = allocator_new(&isolate->allocator, JavaThread)();
   isolate->bootstrapThread->initialise(0, isolate);
-  void* baseSP = mvm::Thread::get()->baseSP;
-  isolate->bootstrapThread->threadID = (mvm::Thread::self() << 8) & 0x7FFFFF00;
+  void* baseSP = sp ? sp : mvm::Thread::get()->baseSP;
   
 #ifdef MULTIPLE_GC
   isolate->bootstrapThread->GC = isolate->GC;
   isolate->GC->inject_my_thread(baseSP);
-#endif 
+#else
+  if (sp) Collector::inject_my_thread(baseSP);
+#endif
+
   isolate->bootstrapThread->baseSP = baseSP;
   JavaThread::threadKey->set(isolate->bootstrapThread);
   
+  isolate->bootstrapThread->threadID = (mvm::Thread::self() << 8) & 0x7FFFFF00;
   isolate->threadSystem = new ThreadSystem();
   isolate->name = "isolate";
   isolate->appClassLoader = 0;

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=55473&r1=55472&r2=55473&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Thu Aug 28 11:08:48 2008
@@ -352,7 +352,7 @@
 
   /// allocateIsolate - Allocates a new JVM.
   ///
-  static Jnjvm* allocateIsolate();
+  static Jnjvm* allocateIsolate(void* sp = 0);
   
   /// runIsolate - Runs an isolate with the given main class and with
   /// these Java args. This should be called internaly by the javax.isolate





More information about the vmkit-commits mailing list