This is the mail archive of the mauve-discuss@sources.redhat.com mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Mauve patch


Hi,

On Tue, 2004-04-06 at 15:46, Archie Cobbs wrote:
> This patch doesn't guarantee anything, and in general it's impossible
> to make this test "correct" because the spec allows finalization and
> reference enqueuing to happen after arbitrarily long delays.
> 
> For example, a JVM that *never* finalizes is still within the spec
> (it would probably throw OutOfMemoryError's more readily though).
> 
> This patch simply makes the test "correct" for JC (and possibly
> some other VM(s) out there). Since there's no way to *ensure* the
> finalizer and reference enqueing thread(s) have run, we just try
> to give them every opportunity to do so before declaring that their
> work should be done.

I committed it to mauve as follows since it doesn't break things for
others and might actually help.

2004-04-15  Archie Cobbs  <archie@dellroad.org>

       * gnu/testlet/java/lang/ref/PhantomReference/phantom.java: Give the
       runtime some more hints (Thread.yield/System.gc) that it should
       really garbage collect.

But a "non-portable" section in Mauve is also a good idea. It is just
more work :)

Cheers,

Mark

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	15 Apr 2004 20:18:34 -0000
@@ -54,6 +54,9 @@
     phantom twt = new phantom ();
     PhantomReference wr = genRef (q, twt);
 
+    // Give the runtime some hints that it should really garbage collect.
+    System.gc ();
+    System.yield ();
     System.gc ();
 
     Reference r = q.poll ();

Attachment: signature.asc
Description: This is a digitally signed message part


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]