[vmkit-commits] [vmkit] r119497 - in /vmkit/branches/multi-vm: include/mvm/Threads/Thread.h lib/J3/Classpath/ClasspathVMThread.inc lib/J3/Classpath/JavaUpcalls.cpp 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
Wed Nov 17 07:06:00 PST 2010
Author: gthomas
Date: Wed Nov 17 09:06:00 2010
New Revision: 119497
URL: http://llvm.org/viewvc/llvm-project?rev=119497&view=rev
Log:
split JavaThread and mvm::MutatorThread
Modified:
vmkit/branches/multi-vm/include/mvm/Threads/Thread.h
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
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/include/mvm/Threads/Thread.h (original)
+++ vmkit/branches/multi-vm/include/mvm/Threads/Thread.h Wed Nov 17 09:06:00 2010
@@ -138,6 +138,8 @@
class ExceptionBuffer;
+class VMThreadData {};
+
/// Thread - This class is the base of custom virtual machines' Thread classes.
/// It provides static functions to manage threads. An instance of this class
/// contains all thread-specific informations.
@@ -395,7 +397,7 @@
/// vmData - vm specific data
///
- void* vmData;
+ VMThreadData* vmData;
};
#ifndef RUNTIME_DWARF_EXCEPTIONS
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/ClasspathVMThread.inc Wed Nov 17 09:06:00 2010
@@ -86,7 +86,7 @@
javaThread = vm->upcalls->assocThread->getInstanceObjectField(vmThread);
assert(javaThread && "VMThread with no Java equivalent");
- JavaThread* th = new JavaThread(javaThread, vmThread, vm);
+ mvm::MutatorThread* th = JavaThread::create(javaThread, vmThread, vm);
if (!th) vm->outOfMemoryError();
th->start((void (*)(mvm::Thread*))start);
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Classpath/JavaUpcalls.cpp Wed Nov 17 09:06:00 2010
@@ -279,7 +279,7 @@
RG = rootGroup->getStaticObjectField();
assert(RG && "No root group");
assert(vm->getMainThread() && "VM did not set its main thread");
- CreateJavaThread(vm, (JavaThread*)vm->getMainThread(), "main", RG);
+ CreateJavaThread(vm, JavaThread::j3Thread(vm->getMainThread()), "main", RG);
// Create the "system" group.
SystemGroup = threadGroup->doNew(vm);
@@ -289,11 +289,11 @@
// Create the finalizer thread.
assert(vm->getFinalizerThread() && "VM did not set its finalizer thread");
- CreateJavaThread(vm, vm->getFinalizerThread(), "Finalizer", SystemGroup);
+ CreateJavaThread(vm, JavaThread::j3Thread(vm->getFinalizerThread()), "Finalizer", SystemGroup);
// Create the enqueue thread.
assert(vm->getEnqueueThread() && "VM did not set its enqueue thread");
- CreateJavaThread(vm, vm->getEnqueueThread(), "Reference", SystemGroup);
+ CreateJavaThread(vm, JavaThread::j3Thread(vm->getEnqueueThread()), "Reference", SystemGroup);
}
extern "C" void nativeInitWeakReference(JavaObjectReference* reference,
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/Compiler/JavaAOTCompiler.cpp Wed Nov 17 09:06:00 2010
@@ -2130,7 +2130,7 @@
void JavaAOTCompiler::compileFile(Jnjvm* vm, const char* n) {
name = n;
- JavaThread* th = new JavaThread(0, 0, vm);
+ mvm::MutatorThread* th = JavaThread::create(0, 0, vm);
vm->setMainThread(th);
th->start((void (*)(mvm::Thread*))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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.cpp Wed Nov 17 09:06:00 2010
@@ -47,6 +47,16 @@
#endif
}
+JavaThread* JavaThread::j3Thread(mvm::Thread* mut) {
+ return (JavaThread*)mut->vmData;
+}
+
+mvm::MutatorThread *JavaThread::create(JavaObject* thread, JavaObject* vmth, Jnjvm* isolate) {
+ mvm::MutatorThread *res = (mvm::MutatorThread*)new JavaThread(thread, vmth, isolate);
+ res->vmData = (mvm::VMThreadData*)res;
+ return res;
+}
+
JavaThread::~JavaThread() {
delete localJNIRefs;
#ifdef SERVICE
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/JavaThread.h Wed Nov 17 09:06:00 2010
@@ -145,11 +145,16 @@
/// ~JavaThread - Delete any potential malloc'ed objects used by this thread.
///
~JavaThread();
-
+
+private:
/// JavaThread - Creates a Java thread.
///
JavaThread(JavaObject* thread, JavaObject* vmThread, Jnjvm* isolate);
+public:
+ static mvm::MutatorThread* create(JavaObject* thread, JavaObject* vmThread, Jnjvm* isolate);
+ static JavaThread* j3Thread(mvm::Thread* mut);
+
/// get - Get the current thread as a JnJVM object.
///
static JavaThread* get() {
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.cpp Wed Nov 17 09:06:00 2010
@@ -1088,11 +1088,11 @@
JnjvmClassLoader* loader = bootstrapLoader;
// First create system threads.
- finalizerThread = new JavaThread(0, 0, this);
- finalizerThread->start((void (*)(mvm::Thread*))finalizerStart);
+ finalizerThread = JavaThread::j3Thread(JavaThread::create(0, 0, this));
+ finalizerThread->start(finalizerStart);
- enqueueThread = new JavaThread(0, 0, this);
- enqueueThread->start((void (*)(mvm::Thread*))enqueueStart);
+ enqueueThread = JavaThread::j3Thread(JavaThread::create(0, 0, this));
+ enqueueThread->start(enqueueStart);
// Initialise the bootstrap class loader if it's not
// done already.
@@ -1132,7 +1132,7 @@
#endif
// The initialization code of the classes initialized below may require
// to get the Java thread, so we create the Java thread object first.
- upcalls->InitializeThreading(this);
+ upcalls->InitializeThreading(this);
LOAD_CLASS(upcalls->newClass);
LOAD_CLASS(upcalls->newConstructor);
@@ -1282,7 +1282,7 @@
return;
}
-void Jnjvm::mainJavaStart(JavaThread* thread) {
+void Jnjvm::mainJavaStart(mvm::Thread* thread) {
JavaString* str = NULL;
JavaObject* instrumenter = NULL;
@@ -1294,7 +1294,7 @@
llvm_gcroot(args, 0);
llvm_gcroot(exc, 0);
- Jnjvm* vm = thread->getJVM();
+ Jnjvm* vm = JavaThread::j3Thread(thread)->getJVM();
vm->bootstrapLoader->analyseClasspathEnv(vm->bootstrapLoader->bootClasspathEnv);
vm->argumentsInfo.readArgs(vm);
if (vm->argumentsInfo.className == NULL) {
@@ -1306,7 +1306,7 @@
vm->argumentsInfo.argv = vm->argumentsInfo.argv + pos - 1;
vm->argumentsInfo.argc = vm->argumentsInfo.argc - pos + 1;
- vm->mainThread = thread;
+ // vm->mainThread = thread;
TRY {
vm->loadBootstrap();
@@ -1393,12 +1393,13 @@
sa.sa_flags |= SA_RESTART;
sigaction(SIGUSR1, &sa, NULL);
- mvm::Thread* th = new JavaThread(0, 0, this);
+ mvm::Thread* th = JavaThread::create(0, 0, this);
th->start(serviceCPUMonitor);
#endif
- mainThread = new JavaThread(0, 0, this);
- mainThread->start((void (*)(mvm::Thread*))mainJavaStart);
+ mainThread = JavaThread::create(0, 0, this);
+ mainJ3Thread = JavaThread::j3Thread(mainThread);
+ mainThread->start(mainJavaStart);
}
Jnjvm::Jnjvm(mvm::BumpPtrAllocator& Alloc, JnjvmBootstrapLoader* loader) :
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=119497&r1=119496&r2=119497&view=diff
==============================================================================
--- vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h (original)
+++ vmkit/branches/multi-vm/lib/J3/VMCore/Jnjvm.h Wed Nov 17 09:06:00 2010
@@ -25,6 +25,10 @@
#include "JNIReferences.h"
#include "LockedMap.h"
+namespace mvm {
+ class MutatorThread;
+}
+
namespace j3 {
class ArrayObject;
@@ -120,11 +124,11 @@
/// finalizerThread - The thread that finalizes Java objects.
///
- JavaThread* finalizerThread;
+ JavaThread* finalizerThread;
/// enqueueThread - The thread that enqueue Java references.
///
- JavaThread* enqueueThread;
+ JavaThread* enqueueThread;
/// CreateError - Creates a Java object of the specified exception class
/// and calling its <init> function.
@@ -160,7 +164,7 @@
/// mainJavaStart - Starts the execution of the application in a Java thread.
///
- static void mainJavaStart(JavaThread* thread);
+ static void mainJavaStart(mvm::Thread* thread);
/// mainCompileStart - Starts the static compilation of classes in a Java
/// thread.
@@ -239,6 +243,12 @@
/// hashStr - Hash map of java/lang/String objects allocated by this JVM.
///
StringMap hashStr;
+
+ /// hashStr - Hash map of java/lang/String objects allocated by this JVM.
+ /// mainJ3Thread - the main j3 thread
+ JavaThread* mainJ3Thread;
+
+ JavaThread *getMainJ3Thread() { return mainJ3Thread; }
public:
@@ -304,7 +314,7 @@
/// getFinalizerThread - Get the finalizer thread of this VM.
///
- JavaThread* getFinalizerThread() const { return finalizerThread; }
+ JavaThread* getFinalizerThread() const { return finalizerThread; }
/// setEnqueueThread - Set the enqueue thread of this VM.
///
@@ -312,7 +322,7 @@
/// getEnqueueThread - Get the enqueue thread of this VM.
///
- JavaThread* getEnqueueThread() const { return enqueueThread; }
+ JavaThread* getEnqueueThread() const { return enqueueThread; }
/// ~Jnjvm - Destroy the JVM.
///
More information about the vmkit-commits
mailing list