[vmkit-commits] [vmkit] r57441 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMThread.cpp VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaObject.cpp VMCore/JavaThread.cpp VMCore/JavaThread.h VMCore/Jnjvm.cpp VMCore/Jnjvm.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Oct 13 07:16:43 PDT 2008
Author: geoffray
Date: Mon Oct 13 09:16:42 2008
New Revision: 57441
URL: http://llvm.org/viewvc/llvm-project?rev=57441&view=rev
Log:
Inline locks and conds in objects.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThread.cpp Mon Oct 13 09:16:42 2008
@@ -59,9 +59,9 @@
if (!isDaemon) {
- ts.nonDaemonLock->lock();
+ ts.nonDaemonLock.lock();
ts.nonDaemonThreads++;
- ts.nonDaemonLock->unlock();
+ ts.nonDaemonLock.unlock();
}
#ifdef SERVICE_VM
@@ -75,11 +75,11 @@
isolate->upcalls->runVMThread->invokeIntSpecial(isolate, vmthClass, vmThread);
if (!isDaemon) {
- ts.nonDaemonLock->lock();
+ ts.nonDaemonLock.lock();
ts.nonDaemonThreads--;
if (ts.nonDaemonThreads == 0)
- ts.nonDaemonVar->signal();
- ts.nonDaemonLock->unlock();
+ ts.nonDaemonVar.signal();
+ ts.nonDaemonLock.unlock();
}
#ifdef SERVICE_VM
@@ -129,16 +129,16 @@
JavaField* field = vm->upcalls->vmdataVMThread;
JavaThread* th = (JavaThread*)field->getObjectField(vmthread);
- th->lock->lock();
+ th->lock.lock();
th->interruptFlag = 1;
// here we could also raise a signal for interrupting I/O
if (th->state == JavaThread::StateWaiting) {
th->state = JavaThread::StateInterrupted;
- th->varcond->signal();
+ th->varcond.signal();
}
- th->lock->unlock();
+ th->lock.unlock();
}
JNIEXPORT jboolean JNICALL Java_java_lang_VMThread_interrupted(
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Mon Oct 13 09:16:42 2008
@@ -91,14 +91,10 @@
CommonClass::~CommonClass() {
delete display;
- delete lockVar;
- delete condVar;
}
CommonClass::CommonClass() {
display = 0;
- lockVar = 0;
- condVar = 0;
virtualVT = 0;
}
@@ -264,8 +260,6 @@
bool isArray) {
name = n;
this->virtualVT = 0;
- this->lockVar = mvm::Lock::allocRecursive();
- this->condVar = mvm::Cond::allocCond();
this->status = loaded;
this->classLoader = loader;
this->array = isArray;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Mon Oct 13 09:16:42 2008
@@ -296,11 +296,11 @@
/// lockVar - When multiple threads want to load/resolve/initialize a class,
/// they must be synchronized so that these steps are only performed once
/// for a given class.
- mvm::Lock* lockVar;
+ mvm::LockRecursive lockVar;
/// condVar - Used to wake threads waiting on the load/resolve/initialize
/// process of this class, done by another thread.
- mvm::Cond* condVar;
+ mvm::Cond condVar;
/// classLoader - The Jnjvm class loader that loaded the class.
///
@@ -364,32 +364,32 @@
/// acquire - Acquire this class lock.
///
void acquire() {
- lockVar->lock();
+ lockVar.lock();
}
/// release - Release this class lock.
///
void release() {
- lockVar->unlock();
+ lockVar.unlock();
}
/// waitClass - Wait for the class to be loaded/initialized/resolved.
///
void waitClass() {
- condVar->wait(lockVar);
+ condVar.wait(&lockVar);
}
/// broadcastClass - Unblock threads that were waiting on the class being
/// loaded/initialized/resolved.
///
void broadcastClass() {
- condVar->broadcast();
+ condVar.broadcast();
}
/// ownerClass - Is the current thread the owner of this thread?
///
bool ownerClass() {
- return mvm::Lock::selfOwner(lockVar);
+ return mvm::Lock::selfOwner(&lockVar);
}
/// lookupMethodDontThrow - Lookup a method in the method map of this class.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp Mon Oct 13 09:16:42 2008
@@ -27,14 +27,14 @@
for (std::vector<JavaThread*>::iterator i = threads.begin(),
e = threads.end(); i!= e;) {
JavaThread* cur = *i;
- cur->lock->lock();
+ cur->lock.lock();
if (cur->interruptFlag != 0) {
- cur->lock->unlock();
+ cur->lock.unlock();
++i;
continue;
} else if (cur->javaThread != 0) {
- cur->varcond->signal();
- cur->lock->unlock();
+ cur->varcond.signal();
+ cur->lock.unlock();
threads.erase(i);
break;
} else { // dead thread
@@ -48,9 +48,9 @@
for (std::vector<JavaThread*>::iterator i = threads.begin(),
e = threads.end(); i!= e; ++i) {
JavaThread* cur = *i;
- cur->lock->lock();
- cur->varcond->signal();
- cur->lock->unlock();
+ cur->lock.lock();
+ cur->varcond.signal();
+ cur->lock.unlock();
}
threads.clear();
}
@@ -170,12 +170,12 @@
if (owner()) {
LockObj * l = changeToFatlock();
JavaThread* thread = JavaThread::get();
- mvm::Lock* mutexThread = thread->lock;
- mvm::Cond* varcondThread = thread->varcond;
+ mvm::Lock& mutexThread = thread->lock;
+ mvm::Cond& varcondThread = thread->varcond;
- mutexThread->lock();
+ mutexThread.lock();
if (thread->interruptFlag != 0) {
- mutexThread->unlock();
+ mutexThread.unlock();
thread->interruptFlag = 0;
thread->isolate->interruptedException(this);
} else {
@@ -187,13 +187,13 @@
thread->state = JavaThread::StateWaiting;
if (timed) {
- timeout = varcondThread->timed_wait(mutexThread, info);
+ timeout = varcondThread.timed_wait(&mutexThread, info);
} else {
- varcondThread->wait(mutexThread);
+ varcondThread.wait(&mutexThread);
}
bool interrupted = (thread->interruptFlag != 0);
- mutexThread->unlock();
+ mutexThread.unlock();
mvm::LockRecursive::my_lock_all(&l->lock, recur);
if (interrupted || timeout) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp Mon Oct 13 09:16:42 2008
@@ -29,13 +29,3 @@
buf->write("Thread:");
javaThread->print(buf);
}
-
-JavaThread::~JavaThread() {
- delete lock;
- delete varcond;
-}
-
-JavaThread::JavaThread() {
- lock = 0;
- varcond = 0;
-}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h Mon Oct 13 09:16:42 2008
@@ -34,8 +34,8 @@
static VirtualTable *VT;
JavaObject* javaThread;
Jnjvm* isolate;
- mvm::Lock* lock;
- mvm::Cond* varcond;
+ mvm::LockNormal lock;
+ mvm::Cond varcond;
JavaObject* pendingException;
void* internalPendingException;
uint32 interruptFlag;
@@ -48,14 +48,12 @@
virtual void print(mvm::PrintBuffer *buf) const;
virtual void TRACER;
- ~JavaThread();
- JavaThread();
+ ~JavaThread() {}
+ JavaThread() {}
void initialise(JavaObject* thread, Jnjvm* isolate) {
this->javaThread = thread;
this->isolate = isolate;
- this->lock = mvm::Lock::allocNormal();
- this->varcond = mvm::Cond::allocCond();
this->interruptFlag = 0;
this->state = StateRunning;
this->pendingException = 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Mon Oct 13 09:16:42 2008
@@ -754,14 +754,14 @@
}
void Jnjvm::waitForExit() {
- threadSystem.nonDaemonLock->lock();
+ threadSystem.nonDaemonLock.lock();
--(threadSystem.nonDaemonThreads);
while (threadSystem.nonDaemonThreads) {
- threadSystem.nonDaemonVar->wait(threadSystem.nonDaemonLock);
+ threadSystem.nonDaemonVar.wait(&threadSystem.nonDaemonLock);
}
- threadSystem.nonDaemonLock->unlock();
+ threadSystem.nonDaemonLock.unlock();
return;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=57441&r1=57440&r2=57441&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Mon Oct 13 09:16:42 2008
@@ -57,14 +57,14 @@
/// nonDaemonLock - Protection lock for the nonDaemonThreads variable.
///
- mvm::Lock* nonDaemonLock;
+ mvm::LockNormal nonDaemonLock;
/// nonDaemonVar - Condition variable to wake up the initial thread when it
/// waits for other non-daemon threads to end. The non-daemon thread that
/// decrements the nonDaemonThreads variable to zero wakes up the initial
/// thread.
///
- mvm::Cond* nonDaemonVar;
+ mvm::Cond nonDaemonVar;
/// ThreadSystem - Allocates a thread system management, initializing the
/// lock, the condition variable and setting the initial number of non
@@ -72,17 +72,12 @@
///
ThreadSystem() {
nonDaemonThreads = 1;
- nonDaemonLock = mvm::Lock::allocNormal();
- nonDaemonVar = mvm::Cond::allocCond();
}
/// ~ThreadSystem - Destroys the thread system manager. Destroys the lock and
/// the condition variable.
///
- ~ThreadSystem() {
- delete nonDaemonLock;
- delete nonDaemonVar;
- }
+ ~ThreadSystem() {}
};
More information about the vmkit-commits
mailing list