From: <cap...@us...> - 2009-01-21 01:15:26
|
Revision: 15289 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15289&view=rev Author: captain5050 Date: 2009-01-21 01:15:21 +0000 (Wed, 21 Jan 2009) Log Message: ----------- Don't loop when blocked on exit from JNI Modified Paths: -------------- rvmroot/branches/RVM-PureNativeThread/workingMergeUp/rvm/src/org/jikesrvm/jni/JNIEnvironment.java Modified: rvmroot/branches/RVM-PureNativeThread/workingMergeUp/rvm/src/org/jikesrvm/jni/JNIEnvironment.java =================================================================== --- rvmroot/branches/RVM-PureNativeThread/workingMergeUp/rvm/src/org/jikesrvm/jni/JNIEnvironment.java 2009-01-19 15:40:29 UTC (rev 15288) +++ rvmroot/branches/RVM-PureNativeThread/workingMergeUp/rvm/src/org/jikesrvm/jni/JNIEnvironment.java 2009-01-21 01:15:21 UTC (rev 15289) @@ -18,7 +18,6 @@ import org.jikesrvm.runtime.Entrypoints; import org.jikesrvm.runtime.Magic; import org.jikesrvm.runtime.RuntimeEntrypoints; -import org.jikesrvm.runtime.SysCall; import org.jikesrvm.scheduler.RVMThread; import org.jikesrvm.scheduler.Synchronization; import org.vmmagic.pragma.Entrypoint; @@ -368,9 +367,11 @@ @Entrypoint public Object exitFromJNI(int offset) { // Transition processor from IN_JNI to IN_JAVA - while(!Synchronization.tryCompareAndSwap(Magic.getThreadRegister(), + if(!Synchronization.tryCompareAndSwap(Magic.getThreadRegister(), Entrypoints.execStatusField.getOffset(), RVMThread.IN_JNI, RVMThread.IN_JAVA)) { RVMThread.leaveJNIBlockedFromCallIntoNative(); + if (VM.VerifyAssertions) + VM._assert(RVMThread.getCurrentThread().execStatus == RVMThread.IN_JAVA); } // Restore JNI ref top and saved frame pointer JNIRefsTop = JNIRefsSavedFP; @@ -511,8 +512,3 @@ } } } -/* -Local Variables: - c-basic-offset: 2 -End: -*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |