Re: [patch] Merge GNU Classpath (libgcj-snapshot-20090102) to trunk

"Andrew John Hughes" <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
2009/1/6 Andrew John Hughes <[email protected]>:
> 2009/1/6 Tom Tromey <[email protected]>:
>>>>>>> "Andrew" == Andrew John Hughes <[email protected]> writes:
>>
>> Andrew> This patch updates the version of Classpath on trunk to
>> Andrew> encompass a number of regression fixes recently added to GNU
>> Andrew> Classpath.
>>
>> Andrew> Ok for trunk?
>>
>> Yes, this is ok.
>> Thanks for doing this.
>>
>
> Thanks for reviewing :)
>
>> Andrew>         * java/lang/String.java:
>> Andrew>         (byte[],int,int,String): Call new Charset method.
>> [...]
>>
>> Due to the libgcj override, this changes won't show up.  So, if you
>> want this in the next libgcj, you'll have to apply them to the local
>> String.
>>
>
> Ah yes, thanks for spotting.  I'll post a patch to sync String once
> the merge is committed.
>
>> Tom
>>
>
> --
> Andrew :-)
>
> Support Free Java!
> Contribute to GNU Classpath and the OpenJDK
> http://www.gnu.org/software/classpath
> http://openjdk.java.net
>
> PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
> Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
>


I've implemented the two new methods in libjava/java/lang/String.java
and natString.cc.  The structure of String.java seems to suggest that
pretty much everything of any worth is native in GCJ's String
implementation, so I ported the implementation of the
String(byte[],int.int,java.nio.charset.Charset) over to CNI using the
existing CNI constructors as a base.

However, it seems bringing NIO into String causes some build issues.
A number of NIO classes are in standard.omit.in:

gnu/java/nio/charset/iconv
java/util/zip/DeflaterConstants.java
java/util/zip/DeflaterEngine.java
java/util/zip/DeflaterHuffman.java
java/util/zip/DeflaterPending.java
java/util/zip/InflaterDynHeader.java
java/util/zip/InflaterHuffmanTree.java
java/util/zip/OutputWindow.java
java/util/zip/PendingBuffer.java
java/util/zip/StreamManipulator.java
gnu/java/nio/NIOSocketImpl.java
gnu/java/nio/KqueueSelectorImpl.java
gnu/java/nio/EpollSelectorImpl.java
gnu/java/nio/FileChannelImpl.java
gnu/java/nio/KqueueSelectionKeyImpl.java
gnu/java/nio/EpollSelectionKeyImpl.java

Because java.lang.String now uses Charset, CharsetDecoder, CharBuffer
and ByteBuffer, it seems to be dragging in most of these excluded
classes and failing as a result:

libtool: compile:  /home/andrew/builder/gcj/gcc/gcj
-B/home/andrew/builder/gcj/x86_64-unknown-linux-gnu/libjava/ -B/home\
/andrew/builder/gcj/gcc/ -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/andrew/projects/classpath/gcj/sources/g\
cc/libjava/classpath/lib --encoding=UTF-8 -Wno-deprecated
-fbootstrap-classes -g -O2 -c -fsource-filename=/home/andrew/b\
uilder/gcj/x86_64-unknown-linux-gnu/libjava/classpath/lib/classes -MT
gnu/java/net/protocol/jar.lo -MD -MP -MF gnu/java/\
net/protocol/jar.deps @gnu/java/net/protocol/jar.list  -fPIC -o
gnu/java/net/protocol/.libs/jar.o
libtool: compile:  /home/andrew/builder/gcj/gcc/gcj
-B/home/andrew/builder/gcj/x86_64-unknown-linux-gnu/libjava/ -B/home\
/andrew/builder/gcj/gcc/ -fomit-frame-pointer -fclasspath=
-fbootclasspath=/home/andrew/projects/classpath/gcj/sources/g\
cc/libjava/classpath/lib --encoding=UTF-8 -Wno-deprecated
-fbootstrap-classes -g -O2 -c -fsource-filename=/home/andrew/b\
uilder/gcj/x86_64-unknown-linux-gnu/libjava/classpath/lib/classes -MT
gnu/java/nio.lo -MD -MP -MF gnu/java/nio.deps @gnu\
/java/nio.list  -fPIC -o gnu/java/.libs/nio.o
gnu/java/nio/EpollSelectionKeyImpl.java: In class
'gnu.java.nio.EpollSelectionKeyImpl':
gnu/java/nio/EpollSelectionKeyImpl.java: In method
'gnu.java.nio.EpollSelectionKeyImpl.interestOps(int)':
In file included from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/gnu/java/nio/DatagramChannelSelectionKey.j\
ava:57,
                 from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/gnu/java/nio/DatagramChannelImpl.java:300,
                 from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/classpath/gnu/java/nio/ChannelWriter.java:\
189,
                 from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/classpath/gnu/java/nio/ChannelReader.java:\
215,
                 from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/classpath/gnu/java/nio/ChannelOutputStream\
.java:66,
                 from
/home/andrew/projects/classpath/gcj/sources/gcc/libjava/classpath/gnu/java/nio/ChannelInputStream.\
java:90,
                 from <built-in>:64:
gnu/java/nio/EpollSelectionKeyImpl.java:97: error: cannot find file
for class gnu.java.nio.EpollSelectorImpl
gnu/java/nio/EpollSelectionKeyImpl.java:97: error: class
'gnu.java.nio.EpollSelectorImpl' has no method named 'epoll_mod\
ify' matching signature '(Lgnu/java/nio/EpollSelectionKeyImpl;I)V'
gnu/java/nio/EpollSelectionKeyImpl.java: In method
'gnu.java.nio.EpollSelectionKeyImpl.selector()':
gnu/java/nio/EpollSelectionKeyImpl.java:120: error: cannot find file
for class gnu.java.nio.EpollSelectorImpl
gnu/java/nio/EpollSelectionKeyImpl.java:120: internal compiler error:
vector VEC(tree,base) index domain error, in class\
_depth at java/class.c:576
Please submit a full bug report,

The above list suggests we shouldn't have compiled these classes, yet
class files (but no headers) are present in the source tree now.
Any ideas?
-- 
Andrew :-)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.