This is the mail archive of the java@gcc.gnu.org mailing list for the Java 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: libjava testsuite failures (regressions 3.2 -> 3.3)


On 17 Jan 2003, Tom Tromey wrote:
> Matthias> +WARNING: program timed out.
> Matthias> +FAIL: SyncTest execution - gij test
> Matthias> +WARNING: program timed out.
> Matthias> +FAIL: SyncTest execution - gij test
>
> I see this one too but I haven't investigated.  This could be a real
> regression.  Or it could just be that gij is very slow.

Indeed.  What's interesting about this example is that the gij test takes
over 60 seconds on my x86-linux laptop if compiled with gcj -C, but
finishes in only 4 seconds if compiled with javac!

Without looking at the bytecode, I'd guess javac is hoisting the
SyncTest.class lookup out of the while loop, whereas gcj -C performs no
optimizations.

Doing this by hand might be appropriate for the test case, to prevent
annoying timeouts:

--- SyncTest.java       Fri Jan 17 22:42:38 2003
+++ SyncTest.new        Fri Jan 17 22:49:48 2003
@@ -3,8 +3,9 @@
   static int counter;

   public void run() {
+    Object lock = SyncTest.class;
     for (int n = 0; n < 1000000; n++)
-      synchronized (SyncTest.class) {
+      synchronized (lock) {
         counter++;
       }
   }



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