This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: libjava testsuite failures (regressions 3.2 -> 3.3)
- From: Jeff Sturm <jsturm at one-point dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: Matthias Klose <doko at cs dot tu-berlin dot de>, <java at gcc dot gnu dot org>
- Date: Fri, 17 Jan 2003 22:57:09 -0500 (EST)
- Subject: 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++;
}
}