[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