Import GNU Classpath (classpath-0_97_2-release).

libjava/

2008-06-28  Matthias Klose  <doko@ubuntu.com>

        Import GNU Classpath (classpath-0_97_2-release).

        * Regenerate class and header files.
        * Regenerate auto* files.
        * gcj/javaprims.h: Define jobjectRefType.
        * jni.cc (_Jv_JNI_GetObjectRefType): New (stub only).
        (_Jv_JNIFunctions): Initialize GetObjectRefType.
        * gnu/classpath/jdwp/VMVirtualMachine.java,
        java/security/VMSecureRandom.java: Merge from classpath.
        * HACKING: Fix typo.
        * ChangeLog-2007: New file.
        * configure.ac: Set JAVAC, pass --disable-regen-headers to classpath.

libjava/classpath/

2008-06-28  Matthias Klose  <doko@ubuntu.com>

        * m4/ac_prog_javac.m4: Disable check for JAVAC, when
        not configured with --enable-java-maintainer-mode.
        * aclocal.m4, configure: Regenerate.
        * native/jni/gstreamer-peer/Makefile.am: Do not link with
        libclasspathnative.
        * native/jni/gstreamer-peer/Makefile.in: Regenerate.
        * tools/Makefile.am, lib/Makefile.am: Use JAVAC for setting
        JCOMPILER, drop flags not understood by gcj.

From-SVN: r137223
This commit is contained in:
Matthias Klose
2008-06-28 13:29:13 +00:00
parent 15c151967d
commit e0441a5bfb
1429 changed files with 32837 additions and 18119 deletions
@@ -88,11 +88,6 @@ public class BufferedReader extends Reader
// This is package-private because it is used by LineNumberReader.
static final int DEFAULT_BUFFER_SIZE = 8192;
/**
* The line buffer for <code>readLine</code>.
*/
private StringBuffer sbuf = null;
/**
* Create a new <code>BufferedReader</code> that will read from the
* specified subordinate stream with a default buffer size of 8192 chars.
@@ -455,10 +450,7 @@ public class BufferedReader extends Reader
pos++;
return str;
}
if (sbuf == null)
sbuf = new StringBuffer(200);
else
sbuf.setLength(0);
StringBuilder sbuf = new StringBuilder(200);
sbuf.append(buffer, pos, i - pos);
pos = i;
// We only want to return null when no characters were read before
@@ -267,7 +267,7 @@ public class CharArrayWriter extends Writer
* sequence is wrapped around an input buffer, the results will
* depend on the current position and length of that buffer.
*
* @param seq the character sequence to append. If seq is null,
* @param cs the character sequence to append. If seq is null,
* then the string "null" (the string representation of null)
* is appended.
* @return a reference to this object.
@@ -294,7 +294,7 @@ public class CharArrayWriter extends Writer
* <code>append(seq.subSequence(start,end))</code> when the sequence
* is not null.
*
* @param seq the character sequence to append. If seq is null,
* @param cs the character sequence to append. If seq is null,
* then the string "null" (the string representation of null)
* is appended.
* @param start the index of the first Unicode character to use from
+49 -5
View File
@@ -1,5 +1,6 @@
/* DataInputStream.java -- FilteredInputStream that implements DataInput
Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005 Free Software Foundation
Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2008
Free Software Foundation
This file is part of GNU Classpath.
@@ -349,7 +350,7 @@ public class DataInputStream extends FilterInputStream implements DataInput
*/
public final String readLine() throws IOException
{
StringBuffer strb = new StringBuffer();
StringBuilder strb = new StringBuilder();
while (true)
{
@@ -590,13 +591,56 @@ public class DataInputStream extends FilterInputStream implements DataInput
public static final String readUTF(DataInput in) throws IOException
{
final int UTFlen = in.readUnsignedShort ();
byte[] buf = new byte [UTFlen];
return readUTF(in, UTFlen);
}
/**
* This method is similar to <code>readUTF</code>, but the
* UTF-8 byte length is in 64 bits.
* This method is not public. It is used by <code>ObjectInputStream</code>.
*
* @return The <code>String</code> read
*
* @exception EOFException If end of file is reached before reading
* the String
* @exception UTFDataFormatException If the data is not in UTF-8 format
* @exception IOException If any other error occurs
*
* @see DataOutput#writeUTFLong
*/
final String readUTFLong () throws IOException
{
long l = readLong ();
if (l > Integer.MAX_VALUE)
throw new IOException("The string length > Integer.MAX_VALUE");
final int UTFlen = (int)l;
return readUTF (this, UTFlen);
}
/**
* This method performs the main task of <code>readUTF</code> and
* <code>readUTFLong</code>.
*
* @param in The <code>DataInput</code> source to read from
*
* @param len The UTF-8 byte length of the String to be read
*
* @return The String read from the source
*
* @exception IOException If an error occurs
*
* @see DataInput#readUTF
*/
private static final String readUTF(DataInput in, int len) throws IOException
{
byte[] buf = new byte [len];
// This blocks until the entire string is available rather than
// doing partial processing on the bytes that are available and then
// blocking. An advantage of the latter is that Exceptions
// could be thrown earlier. The former is a bit cleaner.
in.readFully (buf, 0, UTFlen);
in.readFully (buf, 0, len);
return convertFromUTF (buf);
}
@@ -703,7 +747,7 @@ public class DataInputStream extends FilterInputStream implements DataInput
{
// Give StringBuffer an initial estimated size to avoid
// enlarge buffer frequently
StringBuffer strbuf = new StringBuffer (buf.length / 2 + 2);
StringBuilder strbuf = new StringBuilder (buf.length / 2 + 2);
for (int i = 0; i < buf.length; )
{
+67 -17
View File
@@ -1,5 +1,5 @@
/* DataOutputStream.java -- Writes primitive Java datatypes to streams
Copyright (C) 1998, 2001, 2003, 2005 Free Software Foundation, Inc.
Copyright (C) 1998, 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -379,19 +379,20 @@ public class DataOutputStream extends FilterOutputStream implements DataOutput
/**
* Calculate the length, in bytes, of a <code>String</code> in Utf8 format.
* This method is package-private so that <code>ObjectOutputStream</code>
* may use it. The return type is long so that a long string whose
* Utf8 byte count is 64 bit long may be handled.
*
* @param value The <code>String</code> to measure
* @param start String index at which to begin count
* @param sum Starting Utf8 byte count
*
* @throws UTFDataFormatException if result would exceed 65535
*/
private int getUTFlength(String value, int start, int sum)
throws IOException
long getUTFlength(String value, int start, long sum)
{
int len = value.length();
for (int i = start; i < len && sum <= 65535; ++i)
for (int i = start; i < len; ++i)
{
char c = value.charAt(i);
if (c >= '\u0001' && c <= '\u007f')
@@ -402,9 +403,6 @@ public class DataOutputStream extends FilterOutputStream implements DataOutput
sum += 3;
}
if (sum > 65535)
throw new UTFDataFormatException ();
return sum;
}
@@ -441,11 +439,71 @@ public class DataOutputStream extends FilterOutputStream implements DataOutput
* @see DataInput#readUTF
*/
public final synchronized void writeUTF(String value) throws IOException
{
long l = getUTFlength(value, 0, 0);
if (l > 65535)
throw new UTFDataFormatException ();
writeUTFShort(value, (int)l);
}
/**
* This method performs the main task of <code>writeUTF</code>.
* This method is package-private because ObjectOutputStream uses it.
*
* @param value The <code>String</code> to write to the output in UTF format
*
* @param bytelen The UTF-8 byte length of the <code>String</code>. When
* this method is called, the expected byte length must have been calculated
* by <code>getUTFlength</code>.
*
* @exception IOException If an error occurs
*
* @see DataInput#readUTF
*/
final synchronized void writeUTFShort(String value, int bytelen)
throws IOException
{
writeShort(bytelen);
writeUTFBytes(value);
}
/**
* This method is similar to <code>writeUTF</code>, but it writes the
* UTF-8 byte length in 64 bits.
* This method is not public but <code>ObjectOutputStream</code> uses it.
*
* @param value The <code>String</code> to write to the output in UTF format
*
* @param bytelen The UTF-8 byte length of the <code>String</code>. When
* this method is called, the expected byte length must have been calculated
* by <code>getUTFlength</code>.
*
* @exception IOException If an error occurs
*
*/
final synchronized void writeUTFLong(String value, long bytelen)
throws IOException
{
writeLong(bytelen);
writeUTFBytes(value);
}
/**
* This method performes the main task of <code>writeUTF</code> and
* <code>WriteUTFLong</code>, which is to write the UTF-8 byte
* sequence to the output.
*
* @param value The <code>String</code> to write to the output in UTF format
*
* @exception IOException If an error occurs
*
*/
private final synchronized void writeUTFBytes(String value)
throws IOException
{
int len = value.length();
int i = 0;
int pos = 0;
boolean lengthWritten = false;
if (buf == null)
buf = new byte[512];
@@ -472,14 +530,6 @@ public class DataOutputStream extends FilterOutputStream implements DataOutput
buf[pos++] = (byte) (0x80 | (0x3f & c));
}
}
if (! lengthWritten)
{
if (i == len)
writeShort(pos);
else
writeShort(getUTFlength(value, i, pos));
lengthWritten = true;
}
write(buf, 0, pos);
pos = 0;
}
+67
View File
@@ -1292,6 +1292,73 @@ public class File implements Serializable, Comparable<File>
return VMFile.setExecutable(path, executable, ownerOnly);
}
/**
* Get the total space for the partition pointed by this file path, in bytes.
*
* @return the total number of bytes in this partition.
* @since 1.6
*/
public long getTotalSpace()
{
// check security manager.
SecurityManager s = System.getSecurityManager();
if (s != null)
s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
checkRead();
return VMFile.getTotalSpace(path);
}
/**
* Get the free space in the partition pointed by this file path, in bytes.
*
* @return the number of free bytes in this partition.
* @since 1.6
*/
public long getFreeSpace()
{
// check security manager.
SecurityManager s = System.getSecurityManager();
if (s != null)
s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
checkRead();
return VMFile.getFreeSpace(path);
}
/**
* Get the usable space in the partition pointed by this file path, in bytes.
* This is not necessarily the same as the number returned by
* {@link #getFreeSpace()}.
*
* <strong>Implementation note</strong>: Unlike the RI, on Linux and UNIX
* like systems this methods take into account the reserved space for the
* "root" user. This means that the returned results will be a little
* different if a normal user or root perform the query.
*
* Also, the bytes returned should be interpreted as an hint, and may be
* different at each call of this method or even right after the method
* returns.
*
* @return the number of usable bytes in this partition.
* @since 1.6
*/
public long getUsableSpace()
{
// check security manager.
SecurityManager s = System.getSecurityManager();
if (s != null)
s.checkPermission(new RuntimePermission("getFileSystemAttributes"));
checkRead();
// root users can use the reserved extra space
String user = System.getProperty("user.name");
if (user != null && user.equals("root"))
return VMFile.getFreeSpace(path);
return VMFile.getUsableSpace(path);
}
/**
* This method sets the file represented by this object to be read only.
* A read only file or directory cannot be modified. Please note that
@@ -59,7 +59,7 @@ public class FileOutputStream extends OutputStream
{
private FileDescriptor fd;
private FileChannelImpl ch;
private final FileChannelImpl ch;
/**
* This method initializes a <code>FileOutputStream</code> object to write
@@ -1,5 +1,5 @@
/* ObjectInputStream.java -- Class used to read serialized objects
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2008
Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -367,7 +367,6 @@ public class ObjectInputStream extends InputStream
}
case TC_STRING:
case TC_LONGSTRING:
{
if(dump) dumpElement("STRING=");
String s = this.realInputStream.readUTF();
@@ -377,6 +376,16 @@ public class ObjectInputStream extends InputStream
break;
}
case TC_LONGSTRING:
{
if(dump) dumpElement("STRING=");
String s = this.realInputStream.readUTFLong();
if(dump) dumpElementln(s);
ret_val = processResolution(null, s, assignNewHandle(s,shared),
shared);
break;
}
case TC_ARRAY:
{
if(dump) dumpElementln("ARRAY");
@@ -926,7 +935,7 @@ public class ObjectInputStream extends InputStream
return null;
ObjectStreamClass oclazz;
oclazz = (ObjectStreamClass)classLookupTable.get(clazz);
oclazz = classLookupTable.get(clazz);
if (oclazz == null)
return ObjectStreamClass.lookup(clazz);
else
@@ -1,5 +1,5 @@
/* ObjectOutputStream.java -- Class used to write serialized objects
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008
Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -363,10 +363,22 @@ public class ObjectOutputStream extends OutputStream
if (obj instanceof String)
{
realOutput.writeByte(TC_STRING);
if (shared)
assignNewHandle(obj);
realOutput.writeUTF((String)obj);
String s = (String)obj;
long l = realOutput.getUTFlength(s, 0, 0);
if (l <= 65535)
{
realOutput.writeByte(TC_STRING);
if (shared)
assignNewHandle(obj);
realOutput.writeUTFShort(s, (int)l);
}
else
{
realOutput.writeByte(TC_LONGSTRING);
if (shared)
assignNewHandle(obj);
realOutput.writeUTFLong(s, l);
}
break;
}
@@ -106,7 +106,7 @@ public class ObjectStreamClass implements Serializable
if (cl == null)
return null;
ObjectStreamClass osc = (ObjectStreamClass) classLookupTable.get(cl);
ObjectStreamClass osc = classLookupTable.get(cl);
if (osc != null)
return osc;
@@ -830,7 +830,7 @@ outer:
}
if (loadedByBootOrApplicationClassLoader(cl))
uidCache.put(cl,new Long(result));
uidCache.put(cl,Long.valueOf(result));
}
return result;
}
@@ -1074,7 +1074,7 @@ outer:
try
{
return (Externalizable)constructor.newInstance(null);
return (Externalizable)constructor.newInstance();
}
catch(Exception x)
{
@@ -91,17 +91,17 @@ public class OutputStreamWriter extends Writer
/**
* The charset encoder.
*/
private CharsetEncoder encoder;
private final CharsetEncoder encoder;
/**
* java.io canonical name of the encoding.
*/
private String encodingName;
private final String encodingName;
/**
* Buffer output before character conversion as it has costly overhead.
*/
private CharBuffer outputBuffer;
private final CharBuffer outputBuffer;
private final static int BUFFER_SIZE = 1024;
/**
@@ -120,7 +120,11 @@ public class OutputStreamWriter extends Writer
public OutputStreamWriter (OutputStream out, String encoding_scheme)
throws UnsupportedEncodingException
{
CharsetEncoder encoder;
String encodingName;
this.out = out;
outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
try
{
// Don't use NIO if avoidable
@@ -128,44 +132,44 @@ public class OutputStreamWriter extends Writer
{
encodingName = "ISO8859_1";
encoder = null;
return;
}
/*
* Workraround for encodings with a byte-order-mark.
* We only want to write it once per stream.
*/
try
{
if(encoding_scheme.equalsIgnoreCase("UnicodeBig") ||
encoding_scheme.equalsIgnoreCase("UTF-16") ||
encoding_scheme.equalsIgnoreCase("UTF16"))
{
encoding_scheme = "UTF-16BE";
out.write((byte)0xFE);
out.write((byte)0xFF);
}
else if(encoding_scheme.equalsIgnoreCase("UnicodeLittle")){
encoding_scheme = "UTF-16LE";
out.write((byte)0xFF);
out.write((byte)0xFE);
}
}
catch(IOException ioe)
{
}
outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
Charset cs = EncodingHelper.getCharset(encoding_scheme);
if(cs == null)
throw new UnsupportedEncodingException("Encoding "+encoding_scheme+
" unknown");
encoder = cs.newEncoder();
encodingName = EncodingHelper.getOldCanonical(cs.name());
encoder.onMalformedInput(CodingErrorAction.REPLACE);
encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
else
{
/*
* Workaround for encodings with a byte-order-mark.
* We only want to write it once per stream.
*/
try
{
if(encoding_scheme.equalsIgnoreCase("UnicodeBig") ||
encoding_scheme.equalsIgnoreCase("UTF-16") ||
encoding_scheme.equalsIgnoreCase("UTF16"))
{
encoding_scheme = "UTF-16BE";
out.write((byte)0xFE);
out.write((byte)0xFF);
}
else if(encoding_scheme.equalsIgnoreCase("UnicodeLittle"))
{
encoding_scheme = "UTF-16LE";
out.write((byte)0xFF);
out.write((byte)0xFE);
}
}
catch(IOException ioe)
{
}
Charset cs = EncodingHelper.getCharset(encoding_scheme);
if(cs == null)
throw new UnsupportedEncodingException("Encoding "+encoding_scheme+
" unknown");
encoder = cs.newEncoder();
encodingName = EncodingHelper.getOldCanonical(cs.name());
encoder.onMalformedInput(CodingErrorAction.REPLACE);
encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
}
}
catch(RuntimeException e)
{
@@ -174,6 +178,8 @@ public class OutputStreamWriter extends Writer
encoder = null;
encodingName = "ISO8859_1";
}
this.encoder = encoder;
this.encodingName = encodingName;
}
/**
@@ -184,8 +190,10 @@ public class OutputStreamWriter extends Writer
*/
public OutputStreamWriter (OutputStream out)
{
CharsetEncoder encoder;
String encodingName;
this.out = out;
outputBuffer = null;
outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
try
{
String encoding = System.getProperty("file.encoding");
@@ -203,8 +211,9 @@ public class OutputStreamWriter extends Writer
{
encoder.onMalformedInput(CodingErrorAction.REPLACE);
encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
outputBuffer = CharBuffer.allocate(BUFFER_SIZE);
}
this.encoder = encoder;
this.encodingName = encodingName;
}
/**
@@ -345,7 +354,7 @@ public class OutputStreamWriter extends Writer
{
byte[] b = new byte[count];
for(int i=0;i<count;i++)
b[i] = (byte)((buf[offset+i] <= 0xFF)?buf[offset+i]:'?');
b[i] = nullConversion(buf[offset+i]);
out.write(b);
} else {
try {
@@ -369,6 +378,10 @@ public class OutputStreamWriter extends Writer
}
}
private byte nullConversion(char c) {
return (byte)((c <= 0xFF)?c:'?');
}
/**
* This method writes <code>count</code> bytes from the specified
* <code>String</code> starting at position <code>offset</code> into the
@@ -398,7 +411,20 @@ public class OutputStreamWriter extends Writer
*/
public void write (int ch) throws IOException
{
write(new char[]{ (char)ch }, 0, 1);
// No buffering, no encoding ... just pass through
if (encoder == null && outputBuffer == null) {
out.write(nullConversion((char)ch));
} else {
if (outputBuffer != null) {
if (outputBuffer.remaining() == 0) {
writeConvert(outputBuffer.array(), 0, BUFFER_SIZE);
outputBuffer.clear();
}
outputBuffer.put((char)ch);
} else {
writeConvert(new char[]{ (char)ch }, 0, 1);
}
}
}
} // class OutputStreamWriter
@@ -82,7 +82,7 @@ public class PipedInputStream extends InputStream
* This is the internal circular buffer used for storing bytes written
* to the pipe and from which bytes are read by this stream
*/
protected byte[] buffer = new byte[PIPE_SIZE];
protected byte[] buffer = null;
/**
* The index into buffer where the next byte from the connected
@@ -107,8 +107,25 @@ public class PipedInputStream extends InputStream
*/
public PipedInputStream()
{
this(PIPE_SIZE);
}
/**
* Creates a new <code>PipedInputStream</code> of the given size that is not
* connected to a <code>PipedOutputStream</code>.
* It must be connected before bytes can be read from this stream.
*
* @since 1.6
* @since IllegalArgumentException If pipeSize <= 0.
*/
public PipedInputStream(int pipeSize) throws IllegalArgumentException
{
if (pipeSize <= 0)
throw new IllegalArgumentException("pipeSize must be > 0");
this.buffer = new byte[pipeSize];
}
/**
* This constructor creates a new <code>PipedInputStream</code> and connects
* it to the passed in <code>PipedOutputStream</code>. The stream is then
@@ -121,9 +138,28 @@ public class PipedInputStream extends InputStream
*/
public PipedInputStream(PipedOutputStream source) throws IOException
{
this();
connect(source);
}
/**
* This constructor creates a new <code>PipedInputStream</code> of the given
* size and connects it to the passed in <code>PipedOutputStream</code>.
* The stream is then ready for reading.
*
* @param source The <code>PipedOutputStream</code> to connect this
* stream to
*
* @since 1.6
* @exception IOException If <code>source</code> is already connected.
*/
public PipedInputStream(PipedOutputStream source, int pipeSize)
throws IOException
{
this(pipeSize);
connect(source);
}
/**
* This method connects this stream to the passed in
* <code>PipedOutputStream</code>.
+8 -7
View File
@@ -76,7 +76,7 @@ public class PrintStream extends FilterOutputStream implements Appendable
/**
* Encoding name
*/
private String encoding;
private final String encoding;
/**
* This boolean indicates whether or not an error has ever occurred
@@ -88,7 +88,7 @@ public class PrintStream extends FilterOutputStream implements Appendable
* This is <code>true</code> if auto-flush is enabled,
* <code>false</code> otherwise
*/
private boolean auto_flush;
private final boolean auto_flush;
/**
* This method initializes a new <code>PrintStream</code> object to write
@@ -185,16 +185,17 @@ public class PrintStream extends FilterOutputStream implements Appendable
public PrintStream (OutputStream out, boolean auto_flush)
{
super (out);
String encoding;
try {
this.encoding = SystemProperties.getProperty("file.encoding");
encoding = SystemProperties.getProperty("file.encoding");
} catch (SecurityException e){
this.encoding = "ISO8859_1";
encoding = "ISO8859_1";
} catch (IllegalArgumentException e){
this.encoding = "ISO8859_1";
encoding = "ISO8859_1";
} catch (NullPointerException e){
this.encoding = "ISO8859_1";
encoding = "ISO8859_1";
}
this.encoding = encoding;
this.auto_flush = auto_flush;
}