[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