[vmkit-commits] [vmkit] r180516 - Cleaning the code
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:20:30 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:19:00 2013
New Revision: 180516
URL: http://llvm.org/viewvc/llvm-project?rev=180516&view=rev
Log:
Cleaning the code
(cherry picked from commit 89297bb89a0259c79cff462af2daab2fb96e9abe)
Modified:
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/GNuClasspathUnsafe.inc
vmkit/trunk/lib/j3/ClassLib/Unsafe.inc
vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp
vmkit/trunk/lib/vmkit/CommonThread/ctlock.cpp
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/GNuClasspathUnsafe.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/GNuClasspathUnsafe.inc?rev=180516&r1=180515&r2=180516&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/GNuClasspathUnsafe.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/GNuClasspathUnsafe.inc Thu Apr 25 12:19:00 2013
@@ -5,6 +5,7 @@ extern "C" {
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_unpark(
JavaObject* unsafe, JavaObject* thread) {
+//return;
llvm_gcroot(unsafe, 0);
llvm_gcroot(thread, 0);
JavaObject* vmthread;
@@ -31,4 +32,4 @@ JavaObject* unsafe, JavaObject* thread)
//fprintf(stderr, "unparking done %lld\n", th->getThreadID());
}
-}
\ No newline at end of file
+}
Modified: vmkit/trunk/lib/j3/ClassLib/Unsafe.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/Unsafe.inc?rev=180516&r1=180515&r2=180516&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/Unsafe.inc (original)
+++ vmkit/trunk/lib/j3/ClassLib/Unsafe.inc Thu Apr 25 12:19:00 2013
@@ -484,6 +484,7 @@ JavaObject* unsafe, jlong ptr, jlong val
//===--- Park/Unpark thread support ---------------------------------------===//
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_park(
JavaObject* unsafe, jboolean isAbsolute, jlong time) {
+//return;
llvm_gcroot(unsafe, 0);
JavaThread* thread = (JavaThread*)JavaThread::get();
thread->parkLock.park(isAbsolute, time, thread);
Modified: vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp?rev=180516&r1=180515&r2=180516&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/Sigsegv.cpp Thu Apr 25 12:19:00 2013
@@ -97,7 +97,7 @@ void sigsegvHandler(int n, siginfo_t *in
}
void sigsTermHandler(int n, siginfo_t *info, void *context) {
- fprintf(stderr, "\nJVM termination because user request\n");
+ //fprintf(stderr, "\nJVM termination because user request\n");
finishForCtrl_C = true;
condForCtrl_C.signal();
//lockForCtrl_C.Lock();
Modified: vmkit/trunk/lib/vmkit/CommonThread/ctlock.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ctlock.cpp?rev=180516&r1=180515&r2=180516&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ctlock.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ctlock.cpp Thu Apr 25 12:19:00 2013
@@ -100,22 +100,36 @@ void LockNormal::unlock(vmkit::Thread* o
void LockRecursive::lock() {
if (!selfOwner()) {
+
+
Thread* th = Thread::get();
th->enterUncooperativeCode();
pthread_mutex_lock((pthread_mutex_t*)&internalLock);
+ assert((n == 0) && "Inconsistent state of recursive lock");
th->leaveUncooperativeCode();
owner = th;
}
+ else {
+ assert((n != 0) && "Inconsistent state of recursive lock");
+ }
++n;
}
int LockRecursive::tryLock() {
- int res = 0;
+ int res = -1;
if (!selfOwner()) {
+ Thread* th = Thread::get();
+ th->enterUncooperativeCode();
res = pthread_mutex_trylock((pthread_mutex_t*)&internalLock);
- owner = vmkit::Thread::get();
+ if (!res) {
+ ++n;
+ owner = vmkit::Thread::get();
+ }
+ th->leaveUncooperativeCode();
}
- ++n;
+ else
+ n++;
+
return res;
}
@@ -209,12 +223,13 @@ int Cond::timedWait(Lock* l, struct time
int res = pthread_cond_timedwait((pthread_cond_t*)&internalCond,
(pthread_mutex_t*)&(l->internalLock),
&timeout);
- th->leaveUncooperativeCode();
+
if (res != 0) {
pthread_cond_destroy (&internalCond) ;
pthread_cond_init (&internalCond, NULL);
}
+ th->leaveUncooperativeCode();
assert((!res || res == ETIMEDOUT) && "Error on timed wait");
l->unsafeLock(n);
@@ -249,7 +264,7 @@ int Cond::myTimeWait(Lock* l, bool isAbs
absTime.tv_nsec = 0;
}
else {
- absTime.tv_sec = now.tv_sec + secs + 0; // 150 / 850 / 1000
+ absTime.tv_sec = now.tv_sec + secs + 1100; // 150 / 850 / 1000
absTime.tv_nsec = (nsec % NANOSECS_PER_SEC) + now.tv_usec*1000;
if (absTime.tv_nsec >= NANOSECS_PER_SEC) {
absTime.tv_nsec -= NANOSECS_PER_SEC;
@@ -266,12 +281,13 @@ int Cond::myTimeWait(Lock* l, bool isAbs
int res = pthread_cond_timedwait((pthread_cond_t*)&internalCond,
(pthread_mutex_t*)&(l->internalLock),
&absTime);
- th->leaveUncooperativeCode();
+
if (res != 0) {
pthread_cond_destroy (&internalCond) ;
pthread_cond_init (&internalCond, NULL);
}
+ th->leaveUncooperativeCode();
assert((!res || res == ETIMEDOUT) && "Error on timed wait");
l->unsafeLock(n);
More information about the vmkit-commits
mailing list