You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by mc...@apache.org on 2008/03/07 16:19:37 UTC
svn commit: r634713 -
/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp
Author: mcfirst
Date: Fri Mar 7 07:19:35 2008
New Revision: 634713
URL: http://svn.apache.org/viewvc?rev=634713&view=rev
Log:
Applying patch from HARMONY-5533 [drlvm] SystemResourceOrientedTest failure from the reliability test suite
Modified:
harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp?rev=634713&r1=634712&r2=634713&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/thread_ti_instr.cpp Fri Mar 7 07:19:35 2008
@@ -364,13 +364,16 @@
jthread_get_contended_monitor(jthread java_thread, jobject * monitor)
{
assert(java_thread);
+ assert(monitor);
+ *monitor = NULL;
vm_thread_t vm_thread = jthread_get_vm_thread_from_java(java_thread);
- assert(vm_thread);
+ if (!vm_thread) {
+ return TM_ERROR_NONE;
+ }
jvmti_thread_t jvmti_thread = &vm_thread->jvmti_thread;
- if (jvmti_thread)
+ if (jvmti_thread) {
*monitor = jvmti_thread->contended_monitor;
- else
- *monitor = NULL;
+ }
return TM_ERROR_NONE;
} // jthread_get_contended_monitor
@@ -384,13 +387,16 @@
IDATA VMCALL jthread_get_wait_monitor(jthread java_thread, jobject * monitor)
{
assert(java_thread);
+ assert(monitor);
+ *monitor = NULL;
vm_thread_t vm_thread = jthread_get_vm_thread_from_java(java_thread);
- assert(vm_thread);
+ if (!vm_thread) {
+ return TM_ERROR_NONE;
+ }
jvmti_thread_t jvmti_thread = &vm_thread->jvmti_thread;
- if (jvmti_thread)
+ if (jvmti_thread) {
*monitor = jvmti_thread->wait_monitor;
- else
- *monitor = NULL;
+ }
return TM_ERROR_NONE;
} // jthread_get_wait_monitor
@@ -407,19 +413,23 @@
assert(monitor);
assert(lock_owner);
+ *lock_owner = NULL;
+ IDATA status = TM_ERROR_NONE;
+
hythread_suspend_disable();
hythread_thin_monitor_t *lockword = vm_object_get_lockword_addr(monitor);
hythread_t native_thread = hythread_thin_monitor_get_owner(lockword);
- if (!native_thread) {
- *lock_owner = NULL;
- } else {
+ if (native_thread) {
vm_thread_t vm_thread = jthread_get_vm_thread(native_thread);
- assert(vm_thread);
- *lock_owner = vm_thread->java_thread;
+ if (vm_thread) {
+ *lock_owner = vm_thread->java_thread;
+ } else {
+ status = TM_ERROR_ILLEGAL_STATE;
+ }
}
hythread_suspend_enable();
- return TM_ERROR_NONE;
+ return status;
} // jthread_get_lock_owner
/**
@@ -472,9 +482,11 @@
if (status != TM_ERROR_NONE) {
return status;
}
- assert(java_thread);
vm_thread_t vm_thread = jthread_get_vm_thread_from_java(java_thread);
- assert(vm_thread);
+ if (!vm_thread) {
+ status = hythread_global_unlock();
+ return status;
+ }
jvmti_thread_t jvmti_thread = &vm_thread->jvmti_thread;
if (!jvmti_thread)
{