[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