Archie Cobbs <archie@dellroad.org> wrote on Mon, 5 Apr 2004 22:30:34 -0500:
Is this the right place to send Mauve patches? If not please point me
(or the patch) in the right direction.
There's a list mauve-discuss@sources.redhat.com (presumably with mostly
the same subscribers as commit-classpath@gnu.org, although there seem to
be also a few non-Classpath people there).
In JC, phantom references are enqueued on the next finalizer run
after the one that finalizes the object, and finalizer runs only
happen after a GC cycle, therefore the patch below is required to
make JC pass the test; ie, the test is being too strict.
Index: gnu/testlet/java/lang/ref/PhantomReference/phantom.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/lang/ref/PhantomReference/
phantom.java,v
retrieving revision 1.1
diff -u -r1.1 phantom.java
--- gnu/testlet/java/lang/ref/PhantomReference/phantom.java 27 Sep
2001 15:44:09 -0000 1.1
+++ gnu/testlet/java/lang/ref/PhantomReference/phantom.java 6 Apr
2004 03:28:19 -0000
@@ -70,6 +70,8 @@
PhantomReference wr = try1 (q, harness);
System.gc ();
+ Thread.yield();
+ System.gc ();
Reference r = null;
try
Does this really guarantee that the finalizer has run? Couldn't this also
lead to any other thread, such as some VM-internal thread, without
running the finalizer? If so, you might want to call Object.notify in the
finalizer and Object.wait at the above code location.