This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
3.4 PATCH: Fix Tru64 UNIX libjava bootstrap failure in java/lang/natObject.cc
- From: Rainer Orth <ro at TechFak dot Uni-Bielefeld dot DE>
- To: java-patches at gcc dot gnu dot org
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 23 Oct 2003 22:14:55 +0200 (MEST)
- Subject: 3.4 PATCH: Fix Tru64 UNIX libjava bootstrap failure in java/lang/natObject.cc
Current mainline failed to bootstrap on alpha-dec-osf4.0f and
alpha-dec-osf5.1:
/vol/gnu/src/gcc/gcc-dist/libjava/java/lang/natObject.cc: In function `bool _Jv_ObjectCheckMonitor(java::lang::Object*)':
/vol/gnu/src/gcc/gcc-dist/libjava/java/lang/natObject.cc:1130: error: ISO C++ forbids comparison between pointer and integer
This is the following test
not_mine = hl ? (hl->si.mutex.owner != self) : true;
where hl->si.mutex.owner is pthread_t (a pointer to some structure on
Tru64 UNIX), self is _Jv_ThreadId_t (typedef'ed to unsigned long).
The following patch fixes this and allowed the bootstrap to finish. There
are several libjava testsuite regressions compared to my last successful
bootstrap on 20030925, but they are almost certainly unrelated:
FAIL: ArrayClass -O3 compilation from bytecode
ArrayClass.java: In class `ArrayClass':
ArrayClass.java: In method `class$(java.lang.String)':
ArrayClass.java:0: internal compiler error: in cgraph_function_possibly_inlined_p, at cgraph.c:541
They happen on several other platforms (e.g. i386-pc-solaris2.10,
mips-sgi-irix6.5) as well, even when POSIX Threads are not in use, but only
at -O3.
Ok for mainline?
Rainer
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University
Thu Oct 23 02:27:28 2003 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* java/lang/natObject.cc (_Jv_ObjectCheckMonitor): Use
_Jv_MutexCheckMonitor instead of accessing mutex.owner directly.
Index: libjava/java/lang/natObject.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/lang/natObject.cc,v
retrieving revision 1.28
diff -u -p -r1.28 natObject.cc
--- libjava/java/lang/natObject.cc 21 Oct 2003 04:46:19 -0000 1.28
+++ libjava/java/lang/natObject.cc 23 Oct 2003 20:04:19 -0000
@@ -1127,7 +1127,7 @@ retry:
else
{
heavy_lock* hl = find_heavy(addr, he);
- not_mine = hl ? (hl->si.mutex.owner != self) : true;
+ not_mine = hl ? _Jv_MutexCheckMonitor(&hl->si.mutex) : true;
}
release_set(&(he -> address), address); // unlock hash entry