This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
JNI vs. #ifdef INTERPRETER
- To: java at gcc dot gnu dot org
- Subject: JNI vs. #ifdef INTERPRETER
- From: mgd at swarm dot org (Marcus G. Daniels)
- Date: 27 Mar 2001 17:56:55 -0800
An observation: _Jv_GetJNIEnvNewFrame and _Jv_LookupJNIMethod aren't defined
unless INTERPRETER is defined which means that it isn't possible to use
JNI on platforms like Sparc Solaris that don't build with interpreter support.
Witness:
$ CLASSPATH=/net/maya/disk1/Scratch/mgd/build/swarm-jdk/java gcj --encoding=UTF-8 TestSwarm.java /net/maya/disk1/Scratch/mgd/build/swarm-jdk/java/swarm/swarm.so --main=TestSwarm
/net/maya/disk1/Scratch/mgd/build/swarm-jdk/java/swarm/swarm.so: undefined reference to `_Jv_GetJNIEnvNewFrame'
/net/maya/disk1/Scratch/mgd/build/swarm-jdk/java/swarm/swarm.so: undefined reference to `_Jv_LookupJNIMethod'
collect2: ld returned 1 exit status
$
Here's what happens when building on Solaris with --enable-interpreter.
(Without --enable-interpreter, a bootstrap otherwise works fine.)
openwin/include -W -Wall -D_GNU_SOURCE -g -O2 -Wp,-MD,.deps/resolve.pp -c /disks
/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc -fPIC -DPIC -o .libs/resolve.o
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc:1062: 'ffi_raw_closure' is
used as a type, but is not defined as a type.
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc: In member function `void*
_Jv_InterpMethod::ncode()':
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc:1109: `struct
ncode_closure' has no member named `closure'
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc:1112: `ffi_prep_java_raw_clo
sure' undeclared (first use this function)
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc:1112: (Each undeclared
identifier is reported only once for each function it appears in.)
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc: In member function `void*
_Jv_JNIMethod::ncode()':
/disks/disk1/Scratch/mgd/src/gcc/libjava/resolve.cc:1171: `struct
ncode_closure' has no member named `closure'
make[3]: *** [resolve.lo] Error 1
$