[vmkit-commits] [vmkit] r120569 - in /vmkit/branches/multi-vm/lib/J3: Classpath/ClasspathVMThread.inc Classpath/JavaUpcalls.cpp Compiler/JavaAOTCompiler.cpp VMCore/JavaThread.cpp VMCore/JavaThread.h VMCore/Jnjvm.cpp VMCore/Jnjvm.h VMCore/ReferenceQueue.cpp
Gael Thomas
gael.thomas at lip6.fr
Wed Dec 1 02:54:33 PST 2010
Author: gthomas
Date: Wed Dec 1 04:54:32 2010
New Revision: 120569
URL: http://llvm.org/viewvc/llvm-project?rev=120569&view=rev
Log:
store also mainThread, finalizerThread and referenceThread in JavaThread. Define a function attach in VMThreadData to attach the vm specific data to its thread
Modified:
vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc
vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp
vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h
vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp
vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h
vmkit/branches/multi-vm/lib/J3/VMCore/ReferenceQueue.cpp
Modified: vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc Wed Dec 1 04:54:32 2010
@@ -93,13 +93,13 @@
javaThread = vm->upcalls->assocThread->getInstanceObjectField(vmThread);
assert(javaThread && "VMThread with no Java equivalent");
- mvm::Thread* mut = JavaThread::create(vm);
+ JavaThread* th = JavaThread::create(vm);
- if (!mut) vm->outOfMemoryError();
- mut->start((void (*)(mvm::Thread*))start);
+ if (!th) vm->outOfMemoryError();
+ th->mut->start((void (*)(mvm::Thread*))start);
// Now that the thread has been created, initialise its object fields.
- JavaThread::j3Thread(mut)->initialise(javaThread, vmThread);
+ th->initialise(javaThread, vmThread);
END_NATIVE_EXCEPTION
}
Modified: vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp Wed Dec 1 04:54:32 2010
@@ -280,7 +280,7 @@
RG = rootGroup->getStaticObjectField();
assert(RG && "No root group");
assert(vm->getMainThread() && "VM did not set its main thread");
- CreateJavaThread(vm, JavaThread::j3Thread(vm->getMainThread()), "main", RG);
+ CreateJavaThread(vm, vm->javaMainThread, "main", RG);
// Create the "system" group.
SystemGroup = threadGroup->doNew(vm);
@@ -290,11 +290,11 @@
// Create the finalizer thread.
assert(vm->getFinalizerThread() && "VM did not set its finalizer thread");
- CreateJavaThread(vm, JavaThread::j3Thread(vm->getFinalizerThread()), "Finalizer", SystemGroup);
+ CreateJavaThread(vm, vm->javaFinalizerThread, "Finalizer", SystemGroup);
// Create the enqueue thread.
assert(vm->getReferenceThread() && "VM did not set its enqueue thread");
- CreateJavaThread(vm, JavaThread::j3Thread(vm->getReferenceThread()), "Reference", SystemGroup);
+ CreateJavaThread(vm, vm->javaReferenceThread, "Reference", SystemGroup);
}
extern "C" void Java_java_lang_ref_WeakReference__0003Cinit_0003E__Ljava_lang_Object_2(
Modified: vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp Wed Dec 1 04:54:32 2010
@@ -2133,9 +2133,9 @@
void JavaAOTCompiler::compileFile(Jnjvm* vm, const char* n) {
name = n;
- mvm::Thread* th = JavaThread::create(vm);
- vm->setMainThread(th);
- th->start(mainCompilerStart);
+ vm->javaMainThread = JavaThread::create(vm);
+ vm->mainThread = vm->javaMainThread->mut;
+ vm->javaMainThread->mut->start(mainCompilerStart);
vm->waitForExit();
}
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp Wed Dec 1 04:54:32 2010
@@ -26,7 +26,6 @@
currentAddedReferences = NULL;
javaThread = NULL;
vmThread = NULL;
- jnjvm = isolate;
#ifdef SERVICE
eipIndex = 0;
@@ -41,12 +40,11 @@
return (JavaThread*)mut->vmData;
}
-mvm::Thread *JavaThread::create(Jnjvm* isolate) {
+JavaThread *JavaThread::create(Jnjvm* isolate) {
mvm::MutatorThread *mut = new mvm::MutatorThread();
JavaThread *th = new JavaThread(mut, isolate);
- mut->MyVM = isolate;
- mut->vmData = th;
- return mut;
+ th->attach();
+ return th;
}
void JavaThread::initialise(JavaObject* thread, JavaObject* vmth) {
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h Wed Dec 1 04:54:32 2010
@@ -120,7 +120,7 @@
/// create - Creates a Java thread and a mutator thread.
///
- static mvm::Thread* create(Jnjvm* isolate);
+ static JavaThread* create(Jnjvm* isolate);
/// j3Thread - gives the JavaThread associated with the mutator thread
///
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp Wed Dec 1 04:54:32 2010
@@ -1070,10 +1070,14 @@
// First create system threads.
finalizerThread = new FinalizerThread(this);
+ javaFinalizerThread = new JavaThread(finalizerThread, this);
+ javaFinalizerThread->attach();
finalizerThread->start(
(void (*)(mvm::Thread*))FinalizerThread::finalizerStart);
referenceThread = new ReferenceThread(this);
+ javaReferenceThread = new JavaThread(referenceThread, this);
+ javaReferenceThread->attach();
referenceThread->start(
(void (*)(mvm::Thread*))ReferenceThread::enqueueStart);
@@ -1287,8 +1291,6 @@
vm->argumentsInfo.argv = vm->argumentsInfo.argv + pos - 1;
vm->argumentsInfo.argc = vm->argumentsInfo.argc - pos + 1;
- // vm->mainThread = thread;
-
TRY {
vm->loadBootstrap();
} CATCH {
@@ -1339,7 +1341,8 @@
void Jnjvm::runApplication(int argc, char** argv) {
argumentsInfo.argc = argc;
argumentsInfo.argv = argv;
- mainThread = JavaThread::create(this);
+ javaMainThread = JavaThread::create(this);
+ mainThread = javaMainThread->mut;
mainThread->start((void (*)(mvm::Thread*))mainJavaStart);
}
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h Wed Dec 1 04:54:32 2010
@@ -249,6 +249,15 @@
/// hashStr - Hash map of java/lang/String objects allocated by this JVM.
///
StringMap hashStr;
+
+ /// javaMainThread - the java main thread
+ JavaThread* javaMainThread;
+
+ /// javaFinalizerThread - the java finalizer thread
+ JavaThread* javaFinalizerThread;
+
+ /// javaReferenceThread - the java reference thread
+ JavaThread* javaReferenceThread;
public:
Modified: vmkit/branches/multi-vm/lib/J3/VMCore/ReferenceQueue.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/lib/J3/VMCore/ReferenceQueue.cpp?rev=120569&r1=120568&r2=120569&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/ReferenceQueue.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/ReferenceQueue.cpp Wed Dec 1 04:54:32 2010
@@ -25,7 +25,6 @@
ToEnqueueIndex = 0;
MyVM = vm;
- vmData = new JavaThread(this, vm);
}
@@ -169,7 +168,6 @@
CurrentFinalizedIndex = 0;
MyVM = vm;
- vmData = new JavaThread(this, vm);
}
void FinalizerThread::growFinalizationQueue() {
More information about the vmkit-commits
mailing list