[vmkit-commits] [vmkit] r121367 - in /vmkit/branches/multi-vm: include/mvm/Threads/Thread.h include/mvm/VirtualMachine.h lib/J3/Classpath/ClasspathVMThread.inc lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/VMCore/JavaThread.cpp lib/J3/VMCore/JavaThread.h lib/J3/VMCore/Jnjvm.cpp lib/J3/VMCore/Jnjvm.h

Gael Thomas gael.thomas at lip6.fr
Thu Dec 9 04:22:35 PST 2010


Author: gthomas
Date: Thu Dec  9 06:22:35 2010
New Revision: 121367

URL: http://llvm.org/viewvc/llvm-project?rev=121367&view=rev
Log:
use the new runApplication function, unify the creation of JavaThread

Modified:
    vmkit/branches/multi-vm/include/mvm/Threads/Thread.h
    vmkit/branches/multi-vm/include/mvm/VirtualMachine.h
    vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc
    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

Modified: vmkit/branches/multi-vm/include/mvm/Threads/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/include/mvm/Threads/Thread.h?rev=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/mvm/Threads/Thread.h (original)
+++ vmkit/branches/multi-vm/include/mvm/Threads/Thread.h Thu Dec  9 06:22:35 2010
@@ -133,7 +133,7 @@
 class VMKit;
 
 // WARNING: if you modify this class, you must also change mvm-runtime.ll
-// WARNING: when a VMThreadData is store in a thread (in allVmsData), you must never delete it yourself.
+// WARNING: when a VMThreadData is in a thread (in allVmsData), you must never delete it yourself.
 class VMThreadData {
 public:
   /// mut - The associated thread mutator

Modified: vmkit/branches/multi-vm/include/mvm/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/multi-vm/include/mvm/VirtualMachine.h?rev=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/mvm/VirtualMachine.h (original)
+++ vmkit/branches/multi-vm/include/mvm/VirtualMachine.h Thu Dec  9 06:22:35 2010
@@ -50,7 +50,7 @@
 //===----------------------------------------------------------------------===//
 	/// buildVMThreadData - allocate a java thread for the underlying mutator. Called when the java thread is a foreign thread.
 	///
-	virtual VMThreadData* buildVMThreadData(Thread* mut) = 0; //{ return new VMThreadData(this, mut); }
+	virtual VMThreadData* buildVMThreadData(Thread* mut) { return new VMThreadData(this, mut); }
 
 	/// runApplicationImpl - code executed after a runApplication in a vmkit thread
 	///

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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc Thu Dec  9 06:22:35 2010
@@ -87,7 +87,7 @@
   javaThread = vm->upcalls->assocThread->getInstanceObjectField(vmThread);
   assert(javaThread && "VMThread with no Java equivalent");
  
-	JavaThread* th = JavaThread::create(vm);
+	JavaThread* th = JavaThread::associate(vm, new mvm::MutatorThread(vm->vmkit));
 
   if (!th) vm->outOfMemoryError();
   th->mut->start((void (*)(mvm::Thread*))start);

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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp Thu Dec  9 06:22:35 2010
@@ -1904,9 +1904,12 @@
 
 static const char* name;
 
-void mainCompilerStart(mvm::Thread* mut) {
-  JavaThread* th = JavaThread::j3Thread(mut);
-  Jnjvm* vm = th->getJVM();
+
+void mainCompilerStart(mvm::VirtualMachine* _vm, int argc, char** argv) {
+	Jnjvm* vm = (Jnjvm*)_vm;
+
+	JavaThread::associate(vm, mvm::Thread::get());
+
   JnjvmBootstrapLoader* bootstrapLoader = vm->bootstrapLoader;
   JavaAOTCompiler* M = (JavaAOTCompiler*)bootstrapLoader->getCompiler();
   JavaJITCompiler* Comp = 0;
@@ -2090,7 +2093,7 @@
 
 void JavaAOTCompiler::compileFile(Jnjvm* vm, const char* n) {
   name = n;
-	JavaThread::create(vm)->mut->start(mainCompilerStart);
+	vm->runApplication(mainCompilerStart, 0, 0);
   vm->vmkit->waitNonDaemonThreads();
 }
 

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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp Thu Dec  9 06:22:35 2010
@@ -31,14 +31,14 @@
 	return (JavaThread*)mut->vmData;
 }
 
-JavaThread *JavaThread::create(Jnjvm* vm) {
-	mvm::Thread *mut = new mvm::MutatorThread(vm->vmkit);
+JavaThread* JavaThread::associate(Jnjvm* vm, mvm::Thread* mut) {
 	JavaThread *th   = new JavaThread(vm, mut);
 	mut->allVmsData[vm->vmID] = th;
 	mut->attach(vm);
 	return th;
 }
 
+
 void JavaThread::initialise(JavaObject* thread, JavaObject* vmth) {
   llvm_gcroot(thread, 0);
   llvm_gcroot(vmth, 0);

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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h Thu Dec  9 06:22:35 2010
@@ -111,13 +111,15 @@
   ///
   ~JavaThread();
 
+private:
   /// JavaThread - Creates a Java thread. 
   ///
   JavaThread(Jnjvm* vm, mvm::Thread*mut);
 
-  /// create - Creates a Java thread and a mutator thread.
+public:
+  /// associate - Associate a java thread to the mutator
   ///
-	static JavaThread* create(Jnjvm* vm);
+	static JavaThread* associate(Jnjvm* vm, mvm::Thread* mut);
 
   /// 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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp Thu Dec  9 06:22:35 2010
@@ -1060,9 +1060,7 @@
 }
 
 mvm::VMThreadData* Jnjvm::buildVMThreadData(mvm::Thread* mut) {
-	JavaThread* th = new JavaThread(this, mut);
-	mut->allVmsData[vmID] = th; // will be done by my caller but I have to call java code before
-	mut->vmData = th;           // will be done by my caller but I have to call java code before
+	JavaThread* th = JavaThread::associate(this, mut);
 	upcalls->CreateForeignJavaThread(this, th);
 	return th;
 }
@@ -1245,8 +1243,7 @@
   } IGNORE;
 }
 
-void Jnjvm::mainJavaStart(mvm::Thread* thread) {
-
+void Jnjvm::runApplicationImpl(int argc, char** argv) {
   JavaString* str = NULL;
   JavaObject* instrumenter = NULL;
   ArrayObject* args = NULL;
@@ -1259,18 +1256,22 @@
   llvm_gcroot(args, 0);
   llvm_gcroot(exc, 0);
 
-  Jnjvm* vm = JavaThread::j3Thread(thread)->getJVM();
-  vm->bootstrapLoader->analyseClasspathEnv(vm->bootstrapLoader->bootClasspathEnv);
-  vm->argumentsInfo.readArgs(vm);
-  if (vm->argumentsInfo.className == NULL)
+	JavaThread::associate(this, mvm::Thread::get());
+
+  argumentsInfo.argc = argc;
+  argumentsInfo.argv = argv;
+
+  bootstrapLoader->analyseClasspathEnv(bootstrapLoader->bootClasspathEnv);
+  argumentsInfo.readArgs(this);
+  if (argumentsInfo.className == NULL)
     return;
 
-  int pos = vm->argumentsInfo.appArgumentsPos;  
-  vm->argumentsInfo.argv = vm->argumentsInfo.argv + pos - 1;
-  vm->argumentsInfo.argc = vm->argumentsInfo.argc - pos + 1;
+  int pos = argumentsInfo.appArgumentsPos;  
+  argumentsInfo.argv = argumentsInfo.argv + pos - 1;
+  argumentsInfo.argc = argumentsInfo.argc - pos + 1;
 
   TRY {
-    vm->loadBootstrap();
+    loadBootstrap();
   } CATCH {
     exc = mvm::Thread::get()->getPendingException();
   } END_CATCH;
@@ -1280,42 +1281,28 @@
     fprintf(stderr, "Exception %s while bootstrapping VM.",
 						exc ? UTF8Buffer(JavaObject::getClass(jexc)->name).cString() : " foreign exception");
   } else {
-    ClArgumentsInfo& info = vm->argumentsInfo;
+    ClArgumentsInfo& info = argumentsInfo;
   
     if (info.agents.size()) {
       assert(0 && "implement me");
       instrumenter = 0;//createInstrumenter();
       for (std::vector< std::pair<char*, char*> >::iterator i = 
            info.agents.begin(), e = info.agents.end(); i!= e; ++i) {
-        str = vm->asciizToStr(i->second);
-        vm->executePremain(i->first, str, instrumenter);
+        str = asciizToStr(i->second);
+        executePremain(i->first, str, instrumenter);
       }
     }
     
-    UserClassArray* array = vm->upcalls->ArrayOfString;
+    UserClassArray* array = upcalls->ArrayOfString;
     args = (ArrayObject*)array->doNew(info.argc - 2);
     for (int i = 2; i < info.argc; ++i) {
-      ArrayObject::setElement(args, (JavaObject*)vm->asciizToStr(info.argv[i]), i - 2);
+      ArrayObject::setElement(args, (JavaObject*)asciizToStr(info.argv[i]), i - 2);
     }
 
-    vm->executeClass(info.className, args);
+    executeClass(info.className, args);
   }
 }
 
-void Jnjvm::associateBootstrapJavaThread() {
-	mvm::Thread* mut = mvm::Thread::get();
-	JavaThread *th   = new JavaThread(this, mut);
-	mut->allVmsData[vmID] = th;
-	mut->attach(this);
-}
-
-void Jnjvm::runApplicationImpl(int argc, char** argv) {
-	associateBootstrapJavaThread();
-  argumentsInfo.argc = argc;
-  argumentsInfo.argv = argv;
-	mainJavaStart(mvm::Thread::get());
-}
-
 Jnjvm::Jnjvm(mvm::BumpPtrAllocator& Alloc, mvm::VMKit* vmkit, JavaCompiler* Comp, bool dlLoad) : 
 	VirtualMachine(Alloc, vmkit), 
 	lockSystem(Alloc) {

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=121367&r1=121366&r2=121367&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h Thu Dec  9 06:22:35 2010
@@ -282,10 +282,6 @@
 	///
   virtual void runApplicationImpl(int argc, char** argv);
   
-	/// associateBootstrapJavaThread - allocate a bootstrap java thread for the underlying mutator during bootstrap. 
-	///
-	void associateBootstrapJavaThread();
-
 	/// buildVMThreadData - allocate a java thread for the underlying mutator. Called when the java thread is a foreign thread.
 	///
 	virtual mvm::VMThreadData* buildVMThreadData(mvm::Thread* mut);





More information about the vmkit-commits mailing list