Revision: 15687
http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15687&view=revAuthor: dgrove-oss
Date: 2009-05-08 12:32:26 +0000 (Fri, 08 May 2009)
Log Message:
-----------
RVM-712 : Fix missing case in RVMMethod.isUninterruptible that was resulting in incorrect computation of uninterruptibility for methods of Uninterruptible classes that were annotated as UnpreemptibleNoWarn. Also fix half a dozen violations that had been missed because the checking was incomplete.
Modified Paths:
--------------
rvmroot/trunk/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ReferenceProcessor.java
rvmroot/trunk/rvm/src/org/jikesrvm/VM.java
rvmroot/trunk/rvm/src/org/jikesrvm/classloader/RVMMethod.java
rvmroot/trunk/rvm/src/org/jikesrvm/scheduler/Lock.java
rvmroot/trunk/rvm/src-generated/options/Options.template
Modified: rvmroot/trunk/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ReferenceProcessor.java
===================================================================
--- rvmroot/trunk/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ReferenceProcessor.java 2009-05-08 06:47:00 UTC (rev 15686)
+++ rvmroot/trunk/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ReferenceProcessor.java 2009-05-08 12:32:26 UTC (rev 15687)
@@ -384,7 +384,7 @@
* be the address of a heap object, depending on the VM.
* @param trace the thread local trace element.
*/
- @UnpreemptibleNoWarn("Call out to ReferenceQueue API")
+ @UninterruptibleNoWarn("Call out to ReferenceQueue API")
public ObjectReference processReference(TraceLocal trace, ObjectReference reference) {
if (VM.VerifyAssertions) VM._assert(!reference.isNull());
Modified: rvmroot/trunk/rvm/src/org/jikesrvm/VM.java
===================================================================
--- rvmroot/trunk/rvm/src/org/jikesrvm/VM.java 2009-05-08 06:47:00 UTC (rev 15686)
+++ rvmroot/trunk/rvm/src/org/jikesrvm/VM.java 2009-05-08 12:32:26 UTC (rev 15687)
@@ -2317,7 +2317,7 @@
* @param value value to pass to host o/s
*/
@NoInline
- @UnpreemptibleNoWarn("We need to do preemptible operations but are accessed from unpreemptible code")
+ @UninterruptibleNoWarn("We're never returning to the caller, so even though this code is preemptible it is safe to call from any context")
public static void sysExit(int value) {
handlePossibleRecursiveCallToSysExit();
Modified: rvmroot/trunk/rvm/src/org/jikesrvm/classloader/RVMMethod.java
===================================================================
--- rvmroot/trunk/rvm/src/org/jikesrvm/classloader/RVMMethod.java 2009-05-08 06:47:00 UTC (rev 15686)
+++ rvmroot/trunk/rvm/src/org/jikesrvm/classloader/RVMMethod.java 2009-05-08 12:32:26 UTC (rev 15687)
@@ -619,6 +619,7 @@
if (hasInterruptibleAnnotation()) return false;
if (hasPreemptibleAnnotation()) return false;
if (hasUnpreemptibleAnnotation()) return false;
+ if (hasUnpreemptibleNoWarnAnnotation()) return false;
if (hasUninterruptibleAnnotation()) return true;
if (hasUninterruptibleNoWarnAnnotation()) return true;
return getDeclaringClass().hasUninterruptibleAnnotation();
Modified: rvmroot/trunk/rvm/src/org/jikesrvm/scheduler/Lock.java
===================================================================
--- rvmroot/trunk/rvm/src/org/jikesrvm/scheduler/Lock.java 2009-05-08 06:47:00 UTC (rev 15686)
+++ rvmroot/trunk/rvm/src/org/jikesrvm/scheduler/Lock.java 2009-05-08 12:32:26 UTC (rev 15687)
@@ -266,6 +266,7 @@
*
* @param o the object to be unlocked
*/
+ @Unpreemptible
public void unlockHeavy(Object o) {
boolean deflated = false;
mutex.lock(); // Note: thread switching is not allowed while mutex is held.
Modified: rvmroot/trunk/rvm/src-generated/options/Options.template
===================================================================
--- rvmroot/trunk/rvm/src-generated/options/Options.template 2009-05-08 06:47:00 UTC (rev 15686)
+++ rvmroot/trunk/rvm/src-generated/options/Options.template 2009-05-08 12:32:26 UTC (rev 15687)
@@ -185,6 +185,7 @@
}
// Print a short description of every option
+ @Interruptible
public static void printHelp() {
VM.sysWrite("Commands\n");
@@ -243,6 +244,7 @@
}
// print the options values
+ @Interruptible
public static void printOptions() {
VM.sysWrite("Current value of VM options:\n");
//Begin generated option value printing
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image
processing features enabled.
http://p.sf.net/sfu/kodak-com_______________________________________________
Jikesrvm-commits mailing list
Jikesrvm-commits@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits