[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