1999-12-21  Per Bothner  <per@bothner.com>

	* java/lang/natClass.cc (getDeclaredMethods): Correctly compute
	offset in new Method.

1999-12-22  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/lang/natObject.cc (notify): Throw message with
	IllegalMonitorStateException.
	(notifyAll): Ditto.
	(wait): Ditto.
	* java/lang/Thread.java (isInterrupted): Don't clear interrupt_flag.
	(isInterrupted_): New function, which does clear interrupt_flag.
	(interrupt): Use `isInterrupted_'.
	* java/lang/natThread.cc (interrupt): Add comment.
	(join): Set `prev' in joiner loop.
	Change various calls to `isInterrupted' to use `isInterrupted_'.
	* posix-threads.cc (_Jv_CondWait): Allways use pthread_cond_timedwait
	on linux. Set result to 0 on an interrupt. Test interrupted status
	of java Thread object directly. 
	FLAG_INTERRUPTED: removed.
	(_Jv_ThreadStart): Throw OutOfMemoryError if pthread_create fails.
	(_Jv_ThreadInterrupt): Don't set FLAG_INTERRUPTED.
	(_Jv_InitThreads): Don't block SIGINT.
	(_Jv_ThreadWait): Don't configure SIGINT handler.

1999-12-21  Tom Tromey  <tromey@cygnus.com>

	* mauve-libgcj: Added java.lang.reflect.Modifier.toString12.

1999-12-20  Tom Tromey  <tromey@cygnus.com>

	* java/lang/reflect/Modifier.java (STRICT): New constant.
	(isStrict): New method.
	(toString): Added `strict'.

1999-12-23  Anthony Green  <green@cygnus.com>

	* configure: Rebuilt.
	* configure.in (LIBDATASTARTSPEC): Force data_start in with
	linker trick.

1999-12-19  Anthony Green  <green@cygnus.com>

	* libgcjdata.c: New file.
	* libgcj.spec.in: Use @LIBDATASTARTSPEC@ in startfile.
	* configure: Rebuilt.
	* configure.in (LIBDATASTARTSPEC): Force data with a known name
	into the program.
	* Makefile.in: Rebuilt.
	* Makefile.am: Build libgcjdata.a.

	* libgcj.spec.in: Use @FORCELIBGCCSPEC@ in startfile.
	* configure: Rebuilt.
	* configure.in (FORCELIBGCCSPEC): Force important parts of libgcc
	into every program.

1999-12-17  Tom Tromey  <tromey@cygnus.com>

	* java/lang/reflect/Method.java (toString): Call getType if
	required.  Partial fix for PR libgcj/111.  From Per Bothner.

	* java/lang/natPosixProcess.cc (startProcess): Don't use sprintf.

1999-12-16  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/lang/Boolean.java (Boolean(String)): Set `value' to false on a 
	null String constructor parameter.
	* java/net/natPlainSocketImpl.cc: Remove unneccessary sprintf calls
	for exception messages.
	BooleanClass: declare.
	(setOption): Use BooleanClass instead of Class.forName() for
	instanceof test.
	(bind): Cast 4th parameter of setsockopt to `char *' for
	compatibility with older Solaris headers.
	* java/net/natPlainDatagramSocketImpl.cc: Remove unneccessary
	sprintf calls for exception messages.
	BooleanClass, IntegerClass: declare.
	(setOption): Use BooleanClass and IntegerClass, not Class.forName()
	for instanceof test.

1999-12-15  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc (init_properties): Don't set user.name or
	user.home if NO_GETUID defined.  Only set user.dir if getcwd
	exists.

	* include/config.h.in: Rebuilt.
	* acconfig.h (NO_GETUID): New define.
	* configure.in: Rebuilt.
	* configure.in: Define NO_GETUID in cross case.  Check for getcwd
	in native case.

1999-12-08  Tom Tromey  <tromey@cygnus.com>

	* include/posix-threads.h (_Jv_PthreadCheckMonitor): Handle case
	where no recursive mutexes exist.  Fixes PR libgcj/117.

1999-12-05  Anthony Green  <green@cygnus.com>

	* include/jvm.h: Declare many functions with
	__attribute__((__malloc__)).
	* gcj/javaprims.h: Ditto.

Thu Dec  2 17:26:47 1999  Anthony Green  <green@cygnus.com>

	* THANKS: Giving credit where credit is due.

1999-12-02  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/net/ServerSocket.java (ServerSocket): Bind to any interface 
	if bindAddr is null.
	* java/lang/natString.cc (equalsIgnoreCase): return false if
	anotherString is null.
	* java/lang/Boolean.java (valueOf): return FALSE if argument is
	null.

1999-11-30  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_MutexInit): Use _Jv_PthreadGetMutex to get
	mutex to initialize.  Initialize `count' if required.
	Fixes PR libgcj/98.

1999-11-27  Per Bothner  <per@bothner.com>

	* exception.cc:  Remove prototype declarations for malloc and free.
	These clash with recent versions of glibc, which specifies `throws ()'
	when __cplusplus is defined.  Instead, #include <stdlib.h>.

1999-11-24  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_NewObjectArray): Use
	_Jv_GetArrayElementFromElementType.
	(_Jv_NewPrimArray): Likewise.
	* java/lang/natObject.cc (clone): Use
	_Jv_GetArrayElementFromElementType instead of sizeof.
	* java/lang/natSystem.cc (arraycopy): Use
	_Jv_GetArrayElementFromElementType.
	* include/jvm.h (_Jv_GetArrayElementFromElementType): New
	function.

1999-11-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/net/natPlainSocketImpl.cc: Fix potential buffer overruns in
	Exception messages. PR java.net/57.
	(bind): set SO_REUSEADDR before bind.
	* java/net/natPlainDatagramSocketImpl.cc: Fix potential buffer
	overruns. PR java.net/57.

1999-11-19  Tom Tromey  <tromey@cygnus.com>

	* Makefile.am (DIVIDESPEC): Removed.
	(EXCEPTIONSPEC): Removed.

1999-11-19  Andrew Haley  <aph@cygnus.com>

	* Makefile.am (JCFLAGS): Add -L$(here)
	(JC1FLAGS): Ditto.
	* Makefile.in: Rebuild.

1999-11-18  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natDouble.cc: Include <config.h>.

	* include/config.h.in: Rebuilt.
	* acconfig.h (SJLJ_EXCEPTIONS): Undefine.
	* configure.host: Force -fsjlj-exceptions on non-sparc, non-x86
	targets.
	* configure: Rebuilt.
	* configure.in (EXCEPTIONSPEC): Allow -fsjlj-exceptions to be
	requested by configure.host.  Don't put `-D' option into
	libgcj.spec; instead, define SJLJ_EXCEPTIONS with AC_DEFINE.

	* configure: Rebuilt.
	* configure.in (EXCEPTIONSPEC): Changed `_' to `-' in
	sjlj-exceptions.

1999-11-18  Andrew Haley  <aph@cygnus.com>

	* Makefile.am: rename SJLJ_EXCEPTIONS to EXCEPTIONSPEC.
	(AM_CFLAGS): remove SJLJ_EXCEPTIONS.
	(JC1FLAGS): Ditto.
	* Makefile.in: Rebuild
	* acconfig.h: remove SJLJ_EXCEPTIONS
	* configure.in: rename SJLJ_EXCEPTIONS to EXCEPTIONSPEC.
	Do not AC_DEFINE SJLJ_EXCEPTIONS.
	* libgcj.spec.in: Add EXCEPTIONSPEC to jc1.
	* gcj/Makefile.in, include/Makefile.in: rebuild.
	* include/config.h.in: remove SJLJ_EXCEPTIONS.
		
1999-11-18  Andrew Haley  <aph@cygnus.com>

	* gij.cc (main): Rename label to prevent conflict.

	* exception.cc (_Jv_type_matcher): Don't check the table if we're
	using setjmp/longjmp exceptions: there isn't one.

1999-11-17  Andrew Haley  <aph@cygnus.com>

	* exception.cc (_Jv_type_matcher): Ignore null exception tables.
	(_Jv_Throw ): Add SJLJ_EXCEPTIONS.
	(__sjthrow): Add declaration.
	* Makefile.am (JCFLAGS): Add SJLJ_EXCEPTIONS
	(JC1FLAGS): Ditto
	(AM_CFLAGS): Ditto
	(AM_CXXFLAGS): Ditto
	* Makefile.in: Rebuild
	* acconfig.h: Add SJLJ_EXCEPTIONS
	* configure.in: Add SJLJ_EXCEPTIONS
	* configure: Rebuild.
	* gcj/Makefile.in: Rebuild.
	* gcj/cni.h: Add support for sjlj-exceptions.
	* gcj/javaprims.h: Add _Jv_Sjlj_Throw.
	* include/Makefile.in: Rebuild.
	* include/default-signal.h: Add support for sjlj-exceptions.

1999-11-18  Tom Tromey  <tromey@cygnus.com>

	* no-threads.cc (_Jv_ThreadStart): Use JvFail and not JvAssert.

	* java/lang/natClass.cc (MCACHE_SIZE): Define as a power of 2
	minus 1.
	(method_cache): Made larger.

1999-11-11  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_MutexInit): Use _Jv_PthreadGetMutex when
	initializing mutex.  Initialize `count' when required.

1999-11-07  Anthony Green  <green@trip.cygnus.com>

	* java/util/zip/ZipFile.java: Compute the offset of the ZipEntry
	data correctly.

1999-11-05  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (destroy): Removed incorrect comment.

1999-11-05  Jeff Sturm  <jsturm@sigma6.com>

	* boehm.cc (_Jv_GCSetInitialHeapSize): Swapped size & current.
	* prims.cc (parse_heap_size): Use end, not spec.  Use 1024
	multipler for `k'.

1999-11-05  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (stop): Removed argument name.

	* java/lang/ThreadGroup.java (ThreadGroup(int)): No longer
	`private'; now has default access.
	* Makefile.in: Rebuilt.
	* Makefile.am (java/lang/ThreadGroup.h): Removed.

1999-11-04  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natClass.cc (method_cache_count): Removed.
	(_Jv_FindMethodInCache): Don't loop looking for the hash entry.
	(_Jv_AddMethodToCache): Don't loop.

	* configure.in: Removed `qt' threads case.
	* include/quick-threads.h: Removed.
	* quick-threads.cc: Removed.

	* include/quick-threads.h (_Jv_ThreadCancel): Removed.
	(_Jv_ThreadDestroy): Likewise.
	* include/no-threads.h (_Jv_ThreadCancel): Removed.
	(_Jv_ThreadDestroy): Likewise.
	* include/posix-threads.h (struct _Jv_Thread_t): Removed
	`exception' field.
	(_Jv_ThreadCancel): Removed decl.
	(_Jv_ThreadDestroy): Removed.
	* posix-threads.cc (_Jv_ThreadCancel): Removed.
	(throw_cleanup): Removed.
	(really_start): Don't push or pop cleanup.
	(_Jv_ThreadInitData): Don't initialize `exception' field.
	* java/lang/Thread.java (stop): Officially unimplemented.
	* java/lang/natThread.cc (stop): Officially unimplemented.

1999-11-02  Bryce McKinlay  <bryce@albatross.co.nz>

	* posix-threads.cc: Don't include boehm-config.h. Include gcconfig.h 
	instead.

1999-11-02  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc: Don't include boehm-config.h.

1999-11-01  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (_Jv_InitGC): Set GC_java_finalization.
	(sum_blocks): Removed.
	(_Jv_GCFreeMemory): Use GC_get_free_bytes.

1999-11-01  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/io/PrintStream (PrintStream): Fix illegal usage of "this" 
	  before "super".
	* java/io/OutputStreamWriter (OutputStreamWriter): ditto.
	* java/io/InputStreamReader (InputStreamReader): ditto.

1999-10-22  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (java/lang/ClassLoader.h): New target.
	* java/lang/natClassLoader.cc (_Jv_FindClass): Removed reference
	to `redirect'.

	* include/java-props.h (_Jv_Compiler_Properties): Changed
	declaration.
	* gcj/array.h (JvRunMain, _Jv_RunMain): Don't declare.
	* include/jvm.h (_Jv_GCSetInitialHeapSize,
	_Jv_GCSetMaximumHeapSize): Declare.
	(JvRunMain, _Jv_RunMain): Declare.
	(_Jv_SetMaximumHeapSize, _Jv_SetInitialHeapSize): Declare.
	* nogc.cc (_Jv_GCSetInitialHeapSize): New function.
	(_Jv_GCSetMaximumHeapSize): Likewise.
	* boehm.cc (_Jv_GCSetInitialHeapSize): New function.
	(_Jv_GCSetMaximumHeapSize): Likewise.
	* prims.cc (parse_heap_size): New function.
	(_Jv_SetInitialHeapSize): Likewise.
	(_Jv_SetMaximumHeapSize): Likewise.
	(_Jv_Compiler_Properties): New global.
	* gij.cc (help): New function.
	(version): Likewise.
	(heap_size): Likewise.
	(heap_max_size): Likewise.
	(main): Parse arguments.  Set _Jv_Compiler_Properties.
	Include <config.h>, <java-props.h>.
	(_Jv_Compiler_Properties): Removed.

1999-10-18  Tom Tromey  <tromey@cygnus.com>

	* gnu/gcj/runtime/VMClassLoader.java (getVMClassLoader): New
	method.
	(redirect): New static field.
	* java/lang/ClassLoader.java (getSystemClassLoader): Now
	native
	(getVMClassLoader0): Removed.
	* java/lang/natClassLoader.cc (getVMClassLoader0): Removed.
	(redirect): Removed.
	(getSystemClassLoader): Implemented.

1999-10-16  Anthony Green  <green@cygnus.com>

	* java/lang/ClassLoader.java (getSystemResource): Use
	getSystemClassLoader instead of ClassLoader.system.
	(getSystemResourceAsStream): Ditto.

	* java/lang/natClassLoader.cc (redirect): Make static and
	remove #ifdef INTERPRETER so it is always defined.
	(getVMClassLoader0): Remove #ifdef INTERPRETER so it always
	returns a VMClassLoader.

	* java/util/ResourceBundle.java (trySomeGetBundle): Create a
	PropertyResourceBundle if a properties file is found before a
	ResourceBundle class.

1999-10-15  Tom Tromey  <tromey@cygnus.com>

	* gij.cc (main): Formatting fixes.
	(_Jv_Compiler_Properties): Define.
	* java/lang/natSystem.cc (_Jv_Environment_Properties): Don't
	declare.
	(init_properties): Set properites from _Jv_Compiler_Properties.
	* include/java-props.h (_Jv_Compiler_Properties,
	_Jv_Environment_Properties): Declare.

	* include/java-props.h: Added copyright.

1999-10-13  Anthony Green  <green@cygnus.com>

	* libtool-version: Catch up by incrementing current.

	* configure.host: Disable use of GCJ_PROPERTIES for mips-tx39.
	* configure, include/config.h.in: Rebuilt.
	* acconfig.h (DISABLE_GETENV_PROPERTIES): Undefine.
	* configure.in: Added --disable-getenv-properties and new define
	`DISABLE_GETENV_PROPERTIES'.

	* prims.cc (PROCESS_GCJ_PROPERTIES): Define.
	(next_property_key): New function.
	(next_property_value): New function.
	(process_gcj_properties): New function.
	(JvRunMain): Call process_gcj_properties.
	(_JvRunMain): Ditto.

	* java/lang/natSystem.cc (init_properties): Set properties defined
	in GCJ_PROPERTIES.

	* include/java-props.h: New file.

	* java/lang/natSystem.cc (init_properties): Add new properties to
	conform with Java Product Versioning Specification.

1999-10-12  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Fixed test for --disable-java-net.

1999-10-06  Tom Tromey  <tromey@cygnus.com>

	* configure.in (GCJ): Define as "target-gcj", not "target/gcj"
	when building Canadian cross.
	(NATIVE): Don't define when cross-compiling.

1999-10-04  Tom Tromey  <tromey@cygnus.com>

	* java/net/natPlainSocketImpl.cc: Don't include headers if
	java.net is disabled.

	* Makefile.in: Rebuilt.
	* Makefile.am (ZINCS): Removed.  This is defined in configure.in
	when needed, and must be left empty when not needed.

1999-10-01  Anthony Green  <green@cygnus.com>

	* THANKS: Refreshed from htdocs version.

1999-10-01  Steve Chamberlain  <sac@pobox.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (ZINCS): Define

	* configure: Rebuilt.
	* configure.in (ZLIBSPEC): Spell -lzgcj correctly.

	* java/lang/ieeefp.h: Add definitions for picoJava.

1999-10-01  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Set classpath when invoking gcj.  Use changequote
	around sed invocation.

	* java/net/natPlainSocketImpl.cc: Stub native functions if
	DISABLE_JAVA_NET is defined.
	* java/net/natPlainDatagramSocketImpl.cc (setTimeToLive): Fixed
	typo in exception string.
	(getTimeToLive): Likewise.
	Stub native functions if DISABLE_JAVA_NET is defined.
	* java/net/natInetAddress.cc: Stub native functions if
	DISABLE_JAVA_NET is defined.
	* configure.host: Disable java.net for mips-tx39.
	* configure, include/config.h.in: Rebuilt.
	* acconfig.h (DISABLE_JAVA_NET): Undefine.
	* configure.in: Added --disable-java-net and new define
	`DISABLE_JAVA_NET'.

1999-09-30  Tom Tromey  <tromey@cygnus.com>

	* java/net/natPlainDatagramSocketImpl.cc: Indentation fix.

1999-09-29  Bryce McKinlay  <bryce@albatross.co.nz>

	* README: New file.

1999-09-28  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (PROCESS): In POSIX case, only set if not already
	set.
	* configure.host (PROCESS): Set in mips-tx39 case.

	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4 (LIB_AC_PROG_CC, LIB_AC_PROG_CXX): Provide
	appropriate AC_PROG_ symbol.

1999-09-24  Tom Tromey  <tromey@cygnus.com>

	* include/sparc-signal.h (SIGNAL_HANDLER): Third argument now a
	`void *'.
	(MAKE_THROW_FRAME): Cast third argument back to `ucontext_t *'.

	Fix for PR java.util/47:
	* configure, include/config.h: Rebuilt.
	* configure.in: Don't look for ctime or ctime_r.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_source_files): Don't mention natDate.cc.
	* java/util/natDate.cc: Removed.
	* java/util/TimeZone.java (tzIDs, rawOffsets, timeZones): New
	static fields.
	(getAvailableIDs): Rewrote.
	(getTimeZone): Rewrote.
	* java/util/Date.java (toGMTString): New method.
	(toLocaleString): New method.
	(toString): Rewrote.

1999-09-23  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Print message when checking to see if gcj can
	handle -fuse-divide-subroutine.

	* java/lang/natFirstThread.cc (run): Renamed from `run0'.  Removed
	dead code.
	* java/lang/FirstThread.java (run0): Renamed to `run'.
	(run): Removed.

	* prims.cc (main_init): New function.
	(JvRunMain): Call it.
	(_Jv_RunMain): Likewise.
	Include <signal.h>.
	(main_init): Ignore SIGPIPE.  Fixes PR 51.

1999-09-22  Tom Tromey  <tromey@cygnus.com>

	* libgcj.spec.in: Use `jc1' spec, not `cc1' spec.

1999-09-16  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/text/MessageFormat.java (MessageFormat(String)): Set the
	default locale.
	* java/text/NumberFormat.java: Check that object is a Number. If
	not, throw IllegialArgumentException.

1999-09-21  Tom Tromey  <tromey@cygnus.com>

	* gnu/gcj/convert/Output_UTF8.java (write): Don't exit loop unless
        both `inlength' and `bytes_todo' are 0.  Simplified 2-byte case.

	* include/posix-threads.h (_Jv_MutexDestroy): Use
	_Jv_PthreadGetMutex.
	(_Jv_MutexLock): Likewise.
	(_Jv_MutexUnlock): Likewise.

	* java/io/OutputStreamWriter.java (OutputStreamWriter): Reverted
	previous patch; it too was incorrect.
	* java/io/PrintStream.java (PrintStream): Likewise.

	* java/io/OutputStreamWriter.java (OutputStreamWriter): Don't
	refer to `this' before calling superclass constructor.
	* java/io/PrintStream.java (PrintStream): Don't refer to `this'
	before calling superclass constructor.

1999-09-20  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Send output of `-fuse-divide-subroutine' test
	compilation to /dev/null.

1999-09-14  Tom Tromey  <tromey@cygnus.com>

	* include/java-insns.h: Turned constants into an enum.  Added
	multiple-inclusion protection.

1999-09-10  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Build include/Makefile.
	* Makefile.in: Rebuilt.
	* Makefile.am (SUBDIRS): Added gcj and include.
	(install-data-local): New target.
	(extra_headers): New macro.
	* include/Makefile.in: New file.
	* include/Makefile.am: New file.

	* interpret.cc: Don't include gcj/field.h or gcj/cni.h.
	* java/lang/reflect/natField.cc: Don't include gcj/field.h or
	gcj/cni.h.
	* boehm.cc: Don't include java-threads.h or gcj/field.h.
	* resolve.cc: Include config.h.
	* defineclass.cc: Include config.h.
	* include/java-interp.h: Don't include config.h.
	* include/jvm.h: Include java-threads.h, Object.h, java-gc.h,
	cni.h.

	* gcj/javaprims.h: Regenerated namespace decls.
	* classes.pl (scan): Don't put `;' after closing brace.

	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Added -I for top_srcdir.
	* configure.in: Create gcj/Makefile.
	* gcj/Makefile.in: New file.
	* gcj/Makefile.am: New file.
	* java/lang/Object.h: Don't include any other headers.
	* gcj/array.h: Renamed from include/java-array.h.
	* gcj/field.h: Renamed from include/java-field.h.
	* gcj/method.h: Renamed from include/java-method.h.
	* gcj/cni.h, gcj/javaprims.h: Moved from include/.
	Updated all files to reflect new include structure.

1999-09-09  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Fixed typo; variable is THREADSPEC and not
	THREADSPECS.

1999-09-08  Tom Tromey  <tromey@cygnus.com>

	* include/posix-threads.h (_Jv_PthreadCheckMonitor): Reverted
	previous change and implemented a correct test in the __m_count
	case.

	* include/posix-threads.h (_Jv_PthreadCheckMonitor): Changed test
	in __m_count case.

1999-09-07  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_CondWait): pthread_ calls return error
	code and don't set errno.

	* posix-threads.cc (_Jv_CondWait): Check `errno' against EINTR,
	not `r'.  Changed `done_sleeping' to a `bool'.

1999-09-07  Matt Welsh <mdw@cs.berkeley.edu>

	* libjava/posix-threads.cc: Added _Jv_ThreadDataKey.
	Added FLAG_INTERRUPTED to indicate that a thread was interrupted
	by another thread, rather than by the GC.
	(_Jv_CondWait): Prevent premature thread wakeup by GC.
	(_Jv_InitThreads): Initialize _Jv_ThreadDataKey.
	* libjava/include/posix-threads.h (_Jv_ThreadCurrentData): New 
	function.

1999-09-03  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Check for fstat function.
	* java/io/natFileDescriptorPosix.cc (available): Use fstat() if
	FIONREAD fails.

1999-09-02  Tom Tromey  <tromey@cygnus.com>

	* include/java-array.h (jobjectArrayjchar): Removed unused
	declaration.

	* java/lang/natClassLoader.cc (_Jv_WaitForState): Call
	_Jv_PrepareCompiledClass while holding class mutex.

1999-09-01  Tom Tromey  <tromey@cygnus.com>

	* include/posix-threads.h (PTHREAD_MUTEX_IS_STRUCT): New define.
	(_Jv_PthreadGetMutex): Use it.
	(_Jv_PthreadCheckMonitor): Use new M_COUNT macros.
	(_Jv_MutexInit): Use PTHREAD_MUTEX_IS_STRUCT.
	(_Jv_MutexLock): Likewise.
	(_Jv_MutexUnlock): Likewise.
	* include/config.h.in: Rebuilt.
	* acconfig.h (PTHREAD_MUTEX_HAVE_M_COUNT,
	PTHREAD_MUTEX_HAVE___M_COUNT): New undefs.
	* configure: Rebuilt.
	* libgcj.spec.in: Don't mention INTERPSPEC.
	* configure.in (INTERPSPEC): Removed.
	Only run pthreads-related checks when using POSIX threads.  Check
	for m_count and __m_count in mutex structure.

1999-09-01  Matt Welsh <mdw@cs.berkeley.edu>

	* java/lang/natClass.cc: Fixed notification of threads
	when class initialization is complete.

1999-09-01  Tom Tromey  <tromey@cygnus.com>

	* java/lang/reflect/Modifier.java (ALL_FLAGS): New constant.
	* resolve.cc: Removed constants defined by
	java.lang.reflect.Modifier.
	Include <java/lang/reflect/Modifier.h>.
	(_Jv_ResolvePoolEntry): Use values from Modifier.
	(_Jv_DetermineVTableIndex): Likewise.
	(_Jv_PrepareClass): Likewise.
	(ncode): Likewise.
	* defineclass.cc (_Jv_ClassReader): Removed constants defined by
	java.lang.reflect.Modifier.
	Include <java/lang/reflect/Modifier.h>.
	(checkExtends): Use values from Modifier.
	(checkImplements): Likewise.
	(handleField): Likewise.
	(handleConstantValueAttribute): Likewise.
	(handleFieldsEnd): Likewise.
	(handleMethod ): Likewise.
	(handleMethodsEnd): Likewise.
	(handleClassBegin): Likewise.
	* interpret.cc: Removed constants defined by
	java.lang.reflect.Modifier.
	(continue1): Use values from Modifier.
	* java/lang/natClassLoader.cc: Removed constants defined by
	java.lang.reflect.Modifier.

	* java/lang/natClassLoader.cc (_Jv_NewClass): Use
	JV_STATE_NOTHING, not `0'.
	* java/lang/Class.h: Replaced JV_STATE_ defines with enum.

	* posix-threads.cc (_Jv_CondWait): Use _Jv_PthreadGetMutex.
	* include/posix-threads.h (_Jv_Mutex_t): Define as structure,
	except on Linux.
	(_Jv_PthreadGetMutex): New function.
	(_Jv_PthreadCheckMonitor): Use it.
	(_Jv_MutexInit): Likewise.  ALso, initialize `count'.
	(_Jv_MutexLock): Update `count'.
	(_Jv_MutexUnlock): Likewise.
	(_Jv_PthreadCheckMonitor): Use Linux-specific knowledge when
	appropriate.

1999-09-01  Kresten Krab Thorup  <krab@gnu.org>

	* Makefile.am (.java.lo): Add rule.

	* Makefile.in: Rebuilt.

1999-09-01  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_CondWait): Call _Jv_PthreadCheckMonitor.
	* include/posix-threads.h (_Jv_PthreadCheckMonitor): New
	function.
	(_Jv_CondNotify): Use it.
	(_Jv_CondNotifyAll): Likewise.

	* java/lang/Class.h (JV_STATE_NOTHING): Correct misspelling.

1999-08-31  Tom Tromey  <tromey@cygnus.com>

	* include/jvm.h (_Jv_makeUtf8TypeConst): Removed unused
	declaration.

1999-08-24  Bryce McKinlay  <bryce@albatross.co.nz>

	* posix-threads.cc: Include <errno.h>.

1999-08-23  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc: Undefine TRUE and FALSE.

	* posix-threads.cc (_Jv_CondWait): Use ETIMEDOUT, not ETIME.

1999-08-21  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_CondWait): Treat a timeout as a normal
	result.  PR 40.

1999-08-21  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in: Check for in_addr_t in netinet/in.h too.  Check
	for ip_mreq too.
	* acconfig.h: Define HAVE_IN_ADDR_T instead of in_addr_t.
	(HAVE_STRUCT_IP_MREQ): Added.
	* configure, include/config.h.in: Rebuilt.
	* java/net/natInetAddress.cc (aton): Typedef in_addr_t to jint
	if needed.
	* java/net/natPlainDatagramSocketImpl.cc (McastReq, mcastGrp):
	Disable if ip_mreq is not available.
	
	* configure.in: Check types ssize_t and in_addr_t.
	* acconfig.h: Undefine them.
	* configure, include/config.h.in: Rebuilt.

	* java/lang/natSystem.cc (getpwuid_adaptor): New overloaded
	function that detects the signature of getpwuid_r.
	(init_properties): Use it.
	* java/util/natDate.cc (ctime_adaptor): Likewise for ctime_r.
	(toString): Use it.

1999-08-20  Kresten Krab Thorup  <krab@samam.daimi.au.dk>

	* interpret.cc (continue1): Implement explicit dispatch table.
	insn_target: Explicit interpreter switch table.  
	SAVE_PC: New macro, moves pc saving code into instructions that
	require so.
	NEXT_INSN: New macro, replaces `goto next_insn' in all insns.
	PC_REGISTER_ASM: New macro.
	INLINE_SWITCH: New macro.  Constrols dispatching strategy.
	opcode: Remove local variable.
	{i,l,f,d}{load,store}_{0,1,2,3}: Expand definitions.
	(POKEI): Use _Jv_word.
	(iinc): Use _Jv_word.
	(dupx): Change reference argument (sp) to pointer.  
	(jvdump): Remove
	
	* interpret.cc: Remove instruction timing instrumentation.  

	* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Changed
	comment.  Don't use _Jv_ClassNameSamePackage. 

	* gnu/gcj/util/path/{SearchPath,ZipFileEntry,DirectoryPathEntry,
	URLPathEntry, CacheEntry}: Removed.
	
	* Makefile.am (ordinary_java_source_files): Remove gnu/gcj/util/path
	package.
	(.java.lo): Rule removed.

	* Makefile.in: Rebuilt.

1999-08-19  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (class locker): New class.
	(join): Use a locker around _Jv_CondWait.
	(sleep): Likewise.

1999-08-18  Tom Tromey  <tromey@cygnus.com>

	* java/lang/ThreadGroup.java: Fixed now-erroneous comment.
	* java/lang/natThread.cc (finish_): Call ThreadGroup.remove.

1999-08-18  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h ("Java"): Regenerated namespace decls.

1999-08-18  Kresten Krab Thorup  <krab@gnu.org>

	* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Renamed
	from _Jv_InternClassStrings.   

	* prims.cc (_Jv_RunMain): New function.
	(JvRunMain): Remove gij-support.

	* gij.cc (main): Use _Jv_RunMain.

	* java/util/zip/ZipFile.java: Call readDirectory in constructor.

	* interpret.cc (PUSHA, PUSHI, PUSHF, PUSHL, PUSHD): Don't store
	argument in temp variable.
	(continue1): For all op_x2y insns, use temp variable for
	intermediate value.  Also remove some comments.

	* java/lang/natClass.cc (newInstance): Call _Jv_InitClass.
	(forName): Don't call _Jv_InitClass.

	* java/lang/Class.java (getResource,getResourceAsStream): Implement.

	* java/util/zip/ZipEntry.java (ZipEntry(ZipEntry)): New construcor.

	* java/util/jar/JarInputStream.java: New file.

	* java/util/jar/JarEntry.java: New file.

	* java/util/jar/JarFile.java: New file.

	* java/net/URLClassLoader.java: New file.

	* java/net/JarURLConnection.java: New file.

	* gnu/gcj/protocol/jar/Handler.java: New file.

	* gnu/gcj/protocol/jar/Connection.java: New file.

	* java/security/SecureClassLoader.java: New file.

	* java/lang/ClassLoader.java (parent): New variable.
	(ClassLoader (ClassLoader)): new constructor.  
	(findClass): New method.
	(loadClass): Add default 1.2 implementation.
	(getSystemResourceAsBytes, getResourceAsBytes): Removed.
	(readfully): Removed.

	* gnu/gcj/runtime/VMClassLoader.java: Moved from java/lang. 
	(findSystemClass): New method.
	(VMClassLoader): Constructor rewritten.
	(init): New method.
	All other methods removed.
	
	* java/lang/natClassLoader.cc: Change use of java::lang::VMClassLoader
	to gnu::gcj::runtime::VMClassLoader. 
	(_Jv_InternClassStrings): Use _Jv_ResolvePoolEntry.  Also handle
	class entries.   
	(VMClassLoader::findSystemClass): renamed from findBootClass.

	* Makefile.am: Add new files.
	(FirstThread.h, ThreadGroup.h): Add _Jv_Main friend.

	* Makefile.in: Rebuilt.

1999-08-17  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (sleep): Turn 0 millis and 0 nanos into 1
	nano.
	* include/quick-threads.h (_Jv_CondWait): Don't round to 0
	inappropriately.

1999-08-16  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Set DIVIDESPEC to empty string if compiler does
	not support -fuse-divide-subroutine.

1999-08-14  Per Bothner  <per@bothner.com>

	* resolve.cc (_Jv_PrepareClass): Use ClassLoader::resolveClass0.
	* java/lang/natClass.cc (initializeClass): Likewise.
	* java/lang/ClassLoader.java (resolveClass0): New static method.
	(resolveClass): Call resolveClass0.
	(findSystemClass): No longer static.

1999-08-12  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* include/javaprims.h (TRUE, FALSE): Redefine as themselves.

1999-08-11  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/util/BitSet.java (set, clear, hashCode): specify "1" constant
	as long.

Mon Aug  9 18:33:38 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

        * Makefile: Rebuilt.
	* Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native
	builds.

	* java/net/natPlainSocketImpl.cc: Include <sys/select.h> only if
	present.

	* configure: Rebuilt.
	* configure.in: Properly align --help output, fix capitalization
	and punctuation.
	* acinclude.m4: Likewise.

1999-08-09  Kresten Krab Thorup  <krab@gnu.org>

	* include/javaprims.h (_Jv_word, _Jv_word2): New types.

	* include/java-interp.h (_Jv_InterpMethodInvocation): Use _Jv_word.
	(_Jv_callInterpretedMethod): Unused. Remove.
	(_Jv_InterpMethod::run,run_normal,run_synch_object,run_synch_class):
	Use ffi_raw.
	* include/java-cpool.h (_Jv_get, _Jv_put): Remove.
	(_Jv_{store,load}{Indexes,Int,Float,Long,Double}): Use _Jv_word.
	* boehm.cc (_Jv_MarkObj): Use _Jv_word.
	* interpret.cc: use _Jv_word.
	* defineclass.cc: use_Jv_word.
	* resolve.cc: Use _Jv_word.
	(_Jv_ResolvePoolEntry): Return _Jv_word.
	* java/lang/Class.h (_Jv_Constants): Use _Jv_word for cpool.
	* java/lang/natClassLoader.cc (_Jv_InternClassStrings): Use _Jv_word.

	* interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1): 
	Change comment.

Mon Aug  9 18:33:38 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure: Rebuilt.
	* configure.in (sched_yield): Try librt first, then libposix4.
	Add -lrt, -lposix4 to THREADSPEC.

1999-08-08  Anthony Green  <green@cygnus.com>

	* gnu/gcj/util/path/SearchPath.java: Comment out verbose output.

1999-08-08  Anthony Green  <green@cygnus.com>

	* defineclass.cc (_Jv_VerifyClassName): Verify array names
	correctly.

1999-08-08  Anthony Green  <green@cygnus.com>

	* gij.cc: New file.

	* include/config.h.in: Rebuilt.
	* acconfig.h: Add INTERPRETER.

	* Makefile.in: Rebuilt.
	* Makefile.am (libffi_files): Identify the libffi object files for
	inclusion in libgcj.
	(LIBFFIINCS): Define.

	* interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1):
	Dummy definition for configurations without an interpreter.
	
	* java/net/natPlainSocketImpl.cc (getOption): Disamiguate call to
	java::lang::Boolean constructor.

	* include/java-interp.h: Always include java-cpool.h.

	* java/lang/natClassLoader.cc (getVMClassLoader0): Always return 0
	when INTERPRETER not defined.

	* java/lang/Class.h (finalize): Define.

	* gnu/gcj/util/path/DirectoryPathEntry.java (getURL): Catch
	IOException from File.getCanonicalPath.
	(getStream): Likewise.

	* NEWS: More news.
	* THANKS: More thanks.

1999-08-08  Kresten Krab Thorup  <krab@gnu.org>

	* resolve.cc (get_ffi_type_from_signature): Generate uint16 for
	jchar type.
	(_Jv_PrepareClass): Allow non-abstract classes to
	have abstract subclasses.
	(_Jv_ResolvePoolEntry): Revert subclass check for protected
	fields and methods.
	* interpret.cc (continue1/perform_invoke): Don't sign extend
	uint16 return val. 
	(continue1/lshl,lshr): Push long, not int.
	(continue1/ulshr): Use UINT64, not long long.
 	* defineclass.cc (handleFieldsEnd): Handle case when all fields
	are static.
	* java/lang/natClass.cc (forName): Add call to _Jv_InitClass.
 	* java/lang/FirstThread.java (run): Add top-level exception
	handler. 
	(run0): Renamed from run.

1999-08-08  Kresten Krab Thorup  <krab@gnu.org>
 
 	* configure.in (--with-interpreter): Added.
 	* include/config.h.in (INTERPRETER): Added.
 
 	* java/lang/ClassLoader.java: File replaced.
 	* java/lang/VMClassLoader.java: New file.
 	* java/lang/natClassLoader.cc: New file.
 	* gnu/gcj/runtime/MethodInvocation.java: New file.
 	* gnu/gcj/util/path/SearchPath.java: New file.
 	* gnu/gcj/util/path/PathEntry.java: New file.
 	* gnu/gcj/util/path/DirectoryPathEntry.java: New file.
 	* gnu/gcj/util/path/ZipPathEntry.java: New file.
 	* gnu/gcj/util/path/URLPathEntry.java: New file.
 	* gnu/gcj/util/path/CacheEntry.java: New file. 
 	* include/java-interp.h: New file.
 	* include/java-cpool.h: New file.
 	* include/java-insns.h: New file.
 	* defineclass.cc: New file.
 	* interpret.cc: New file.
 	* resolve.cc: New file.
 
 	* java/lang/natClass.cc (loaded_classes, _Jv_RegisterClass,
 	_Jv_RegisterClasses, _Jv_FindClassInCache, _Jv_FindClass,
 	_Jv_NewClass, _Jv_FindArrayClass): Moved to natClassLoader.cc.
 	(finalize): New.
 	(STATE_NOTHING, STATE_RESOLVED, STATE_IN_PROGRESS, STATE_DONE,
 	STATE_ERROR): Moved to java/lang/Class.h and renamed with JV_
 	prefix. 
 	(initializeClass): Use new JV_ prefixed names.  Also, call
 	ClassLoader::resolveClass instead of _Jv_ResolveClass.
 		
 	* java/lang/Class.h (JV_STATE_PRELOADING, JV_STATE_LOADING,
 	JV_STATE_LOADED, JV_STATE_COMPILED, JV_STATE_PREPARED,
 	JV_STATE_LINKED): New.
 	(_Jv_WaitForState, _Jv_RegisterInitiatingLoader,
 	_Jv_UnregisterClass, _Jv_InternClassStrings): New friends.
 	(_Jv_IsInterpretedClass, _Jv_InitField, _Jv_LookupDeclaredMethod,
 	_Jv_DetermineVTableIndex, _Jv_ResolvePoolEntry, _Jv_PrepareClass,
 	_Jv_ClassReader, _Jv_InterpClass, _Jv_InterpMethod,
 	_Jv_InterpMethodInvocation): New friends for interpreter.
 	(finalize): New.
 	(CONSTANT_Class, CONSTANT_String, etc.): Moved to
 	include/java-cpool.h and renamed with JV_ prefix.
 	
 	* include/jvm.h (_Jv_makeUtf8Const, _Jv_makeUtf8TypeConst): New
 	decls.
 	(_Jv_UnregisterClass): New decl.
 
 	* java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added
 	class loader argument. 
 	(_Jv_FindClass): Use class loader.
 	
 	* prims.cc (_Jv_makeUtf8Const): New function.
 	(_Jv_NewObjectArray): Change use of _Jv_FindArrayClass.
 	(_Jv_NewPrimArray): Ditto.
 	(_Jv_FindClassFromSignature): Ditto.
 	* java/lang/reflect/natArray.cc (newInstance): Ditto.
 	* java/lang/reflect/natMethod.cc (getType): Ditto.
 
 	* include/java-field.h (_Jv_Field::isRef): Make robust for
 	non-resolved contexts. 
 
 	* boehm.cc (_Jv_MarkObj): Mark interpreter-related fields. 
 	Also, don't mark class->next field.
 
 	* java/lang/VirtualMachineError.java: Added FIXME note.
 
 	* configure.in (INTERPSPEC): New spec.
 	* libgcj.spec.in: Added INTERPSPEC.
 	* Makefile.am: Added gcjh friends for java/lang/VMClassLoader and
 	gnu/gcj/runtime/MethodInvocation.
 	(libgcj_la_SOURCES): Added resolve.cc defineclass.cc interpret.cc.
 	(ordinary_java_source_files): Added above mentioned java classes.
 
 	* configure: Rebuilt.
 	* Makefile.in: Rebuilt.

1999-08-06  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Look for sched_yield in -lrt.

1999-08-06  Mojo Jojo <mojojojo@pacbell.net>

	* java/util/Locale.java, CHINESE, ENGLISH, FRENCH, GERMAN,
	ITALIAN, JAPANESE, KOREAN, CANADA_FRENCH, GERMANY, ITALY, KOREA,
	SIMPLIFIED_CHINESE, TRADITIONAL_CHINESE, PRC, TAIWAN, CHINA): New
	locales.
	(toString): Print correctly when `country' is empty.

1999-08-04  Per Bothner <per@bothner.com>

	* configure.in:  Also do AC_SUBST for DIVIDESPEC.

1999-08-02  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Rebuilt for new libtool.

1999-08-02  Bryce McKinlay  <bryce@albatross.co.nz>

	* boehm.cc (_Jv_RegisterFinalizer): Cast `meth' to GC_PTR.
	* exception.cc (_Jv_Throw): Cast `_Jv_type_matcher' to __eh_matcher.
	* java/net/ServerSocket.java: Define ANY_IF.
	(ServerSocket (int,int)): Use ANY_IF instead of null to bind to
	all network interfaces.
	* java/net/DatagramSocket.java (DatagramSocket): ditto.
	* java/net/natPlainSocketImpl.cc (bind): Expect `0.0.0.0' instead of
	null.
	* java/net/natPlainDatagramSocketImpl (bind): Expect `0.0.0.0'
	instead of null.
	* java/io/natFile.cc (performMkdir): Remove FIXME.
	* java/io/natFileDescriptorPosix.cc (open): Use 0644 file mode.

1999-08-01  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in: Check for bstring.h.
	* configure, include/config.h.in: Rebuilt.
	* java/net/natPlainDatagramSocketImpl.cc: #include bstring.h.
	* java/net/natPlainSocketImpl.cc: Likewise.

1999-07-31  Tom Tromey  <tromey@cygnus.com>

	* NEWS: Likewise.
	* THANKS: New file.

1999-07-31  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* configure.in: Check for struct hostent_data and need for
	-D_REENTRANT for gethostbyname_r declaration.
	* java/net/natInetAddress.cc: Define _REENTRANT if needed.
	(lookup): Use hostent_data for fixed_buffer.
	* configure, include/config.h.in: Rebuilt.

1999-07-31  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* java/lang/natSystem.cc (arraycopy): Use bcopy if memmove is not
	available.  Don't cast memmove args to (void*).
	* configure.in: Do not abort if memmove is not available.

1999-07-22  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/lang/natString.cc (substring): optimize where substring is
	entire String.
	* java/io/File.java (getName): don't return separator with file name.
	* java/io/natFile.cc (attr): fix overflow.

Sun Jul 25 01:43:34 1999  Anthony Green  <green@cygnus.com>

	* mauve-libgcj: Disable Object Serialization tests.

1999-07-20  Warren Levy  <warrenl@cygnus.com>

	* java/net/DatagramSocket.java (DatagramSocket(int, InetAddress)):
	Default to using PlainDatagramSocketImpl.
	* java/net/PlainDatagramSocketImpl.java (close): Catch IOException.

1999-07-19  Tom Tromey  <tromey@cygnus.com>

	* include/stamp-h.in: New file.

1999-07-12  Tom Tromey  <tromey@cygnus.com>

	* java/lang/mprec.h: Protect definition of uint32_t with #ifndef
	_UINT32_T.

1999-07-07  Andrew Haley  <aph@cygnus.com>

        * include/i386-signal.h (MAKE_THROW_FRAME): Advance EIP by two
	bytes to make it point after the instruction where the trap
	occurred.
	(HANDLE_DIVIDE_OVERFLOW): Ditto.

1999-07-07  Tom Tromey  <tromey@cygnus.com>

	* mauve-libgcj: Explicitly enable formerly disabled java.text
	tests.

	* mauve-libgcj: Turn off ClassTest test.  Enable java.text tests
	again.

Mon Jul  5 12:01:35 1999  Anthony Green  <green@cygnus.com>

	* java/net/URL.java (equals): Compare strings using String.equals.
	* java/net/URL.java (sameFile): Ditto.

1999-07-02  Warren Levy  <warrenl@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Added inet_ntoa to AC_CHECK_FUNCS.
	* include/config.h.in: Rebuilt.
	* java/net/natPlainDatagramSocketImpl.cc: Added header checking.
	(mcastGrp): Updated FIXME comments.
	(setOption): Fixed typo.
	(getOption):Implemented IP_MULTICAST_IF.

1999-07-02  Warren Levy  <warrenl@cygnus.com>

	* java/net/PlainDatagramSocketImpl.java (ttl): Removed.
	* java/net/natPlainDatagramSocketImpl.cc (setTimeToLive): Implemented.
	(getTimeToLive): Implemented.
	(setOption): Implemented IP_MULTICAST_IF.

1999-07-01  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/lang/String.java (toString): Check for this == null and throw
	NullPointerException.

1999-07-01  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength
	to count and revised comments to match.
	* gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java.
	* gnu/gcj/convert/Input_JavaSrc.java (read): ditto.
	* gnu/gcj/convert/Input_SJIS.java (read): ditto.
	* gnu/gcj/convert/Input_UTF8.java (read): ditto.
	* gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto.
	* gnu/gcj/convert/natInput_SJIS.cc (read): ditto.

1999-07-01  John-Marc Chandonia  <jmc@cmpharm.ucsf.edu>

	* gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter
	properly as count rather than outlength.
	* java/io/BufferedOutputStream.java (write(byte[],int,int): Flush
	output on overflow rather than buffer fill.
	* java/io/BufferedReader.java (fill): Don't clear out the buffer
	if markPos is 0 and there is still room in the buffer.

1999-07-01  Andrew Haley  <aph@cygnus.com>

	* include/i386-signal.h: Replace sigaction () with __sigaction ().
	This is a workaround for a bug in glibc's pthreads package which
	doesn't deliver any sigcontext information to a signal handler.

1999-06-24  Tom Tromey  <tromey@cygnus.com>

	* java/lang/e_asin.c: Don't use __int32_t or __uint32_t.
	* java/lang/fdlibm.h (HUGE): Conditionally define.

Fri May 28 22:20:03 1999  Anthony Green  <green@cygnus.com>

	* java/lang/fdlibm.h: Don't use __uint32_t.  Include mprec.h.
	* java/lang/e_log.c: Don't use __uint32_t.

1999-05-27  Eric Christopher <echristo@cygnus.com>

	* configure: Rebuilt
	* configure.in: Fixed ISO C9X and namespace collision with __uint32_t
	* acconfig.h: Rebuilt
	* include/config.h.in: Rebuilt

	* java/lang/mprec.h, java/lang/e_acos.c, java/lang/e_asin.c,
 	java/lang/e_atan2.c, java/lang/e_exp.c, java/lang/e_fmod.c,
 	e_log.c, java/lang/e_pow.c, java/lang/e_rem_pio2.c,
 	java/lang/e_remainder.c, java/lang/e_sqrt.c, java/lang/fdlibm.h,
 	k_tan.c, java/lang/mprec.h, java/lang/s_atan.c,
 	java/lang/s_ceil.c, java/lang/s_copysign.c, java/lang/s_fabs.c,
 	s_floor.c, java/lang/s_rint.c, java/lang/sf_rint.c: Fixed ISO C9X
 	and namespace collision with __uint32_t

1999-06-23  Tom Tromey  <tromey@cygnus.com>

	* java/util/zip/InflaterInputStream.java (read): Throw
	ZipException if inflater throws a DataFormatException.

1999-06-23  Warren Levy  <warrenl@cygnus.com>

	* java/net/DatagramSocketImpl.java (localPort): Fixed typo to match JDK.
	* java/net/natPlainDatagramSocketImpl.cc (bind): ditto.
	* java/text/ChoiceFormat.java (nextDouble(double, boolean)): Method
	is not final per JDK.
	* java/util/PropertyResourceBundle.java (handleGetObject): Method is
	public per JDK.
	* java/util/zip/DataFormatException.java: Class extends Exception.
	* java/util/zip/Deflater.java (finalize): Method is protected per JDK.
	* java/util/zip/ZipEntry.java: Class implements ZipConstants.
	* java/util/zip/ZipInputStream.java: ditto.
	(closeEntry): Changed method name to match JDK spec.

1999-06-21  Tom Tromey  <tromey@cygnus.com>

	* java/lang/ieeefp.h (__IEEE_LITTLE_ENDIAN): Define for alpha.
	From Jeff Sturm.

	* Makefile.in: Rebuilt.
	* Makefile.am (toolexeclibdir): Define as libdir when
	appropriate.
	* configure: Rebuilt.
	* configure.in (USE_LIBDIR): New conditional.

1999-06-18  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/net/natInetAddress.cc (lookup): Preserve caller-supplied
	hostname in returned InetAddress objects.
	(getLocalHostname): Fix typo.
	* java/net/InetAddress.java (getByName): Set hostname on return
	object.
	(getLocalHost): Call lookup directly to ensure that a fully-qualified
	name is returned.

1999-06-17  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/net/natPlainSocketImpl.cc (bind): Bind to any/all network
	interfaces if host==NULL. 
	(accept): Throw message with InterruptedIOException.
	(getOption): Cache localAddress.
	* java/net/natPlainDatagramSocketImpl.cc (bind): Don't need
	'address' for DatagramSocket.
	(setTimeToLive): Fix compiler warnings.
	(getOption): Cache localAddress.
	* java/net/Socket.java (getLocalAddress): Don't need local
	InetAddress object. Add FIXME comment about calling checkConnect().
	* java/net/ServerSocket.java (ServerSocket(int)): Initialize
	connection queue to 50 as per JDK 1.2 docs.
	(ServerSocket(int,int)): Listen on all network interfaces by
	default, per JDK 1.2 docs.
	* java/net/PlainDatagramSocketImpl.java: Don't need 'address'.
	Add localAddress caching. 

1999-06-15  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/io/FilterOutputStream.java (write(byte[])): Rewrite according
	to JDK 1.2 docs.
	(write(byte[],int,int)): ditto.

1999-06-14  Bryce McKinlay  <bryce@albatross.co.nz>

	* posix-threads.cc (_Jv_CondWait): Fix currentTimeMillis() overflow.

1999-06-11  Warren Levy  <warrenl@cygnus.com>

	* mauve-libgcj: Activated java.net Mauve tests.

1999-06-10  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/net/natInetAddress.cc (aton): Fix typos.
	(lookup): Use a bigger buffer size for gethostbyname_r on all
	versions of glibc. Updated FIXME comment explaining this.
	Modified while loops to not set herr = ERANGE to work around glibc 
	problems. Use user specified hostname in InetAddress result when
	available (consistent with JDK).

1999-06-10  Warren Levy  <warrenl@cygnus.com>

	* java/io/FileDescriptor.java (FileDescriptor(String, int)):
	Throw FileNotFoundException instead of IOException.
	(open): ditto.
	* java/io/FileInputStream.java (FileInputStream): Doesn't throw
	IOException.
	* java/text/Collator.java (CANONICAL_DECOMPOSITION): Fixed typo
	in static field name.
	* java/text/DecimalFormat.java: Throw IllegalArgumentException
	throughout rather than ParseException.

1999-06-09  Bryce McKinlay  <bryce@albatross.co.nz>

	* java/lang/Runtime.java (exec): Convert prog name and arguments
	to string array.
	* java/lang/natPosixProcess.cc (startProcess): Fix typo in
	environment array conversion. Preserve current environment if envp
	not passed. Preserve PATH unless explicitly specified.
	* java/io/DataInputStream.java (readLine): Fix case where '\r' is
	followed by EOF. Set a flag when a line is terminated by '\r' and
	ignore following '\n' if set.

1999-06-02  Warren Levy  <warrenl@cygnus.com>

	* java/net/URL.java (URL(URL,String)): Initialize port to -1.
	Ignore context if spec is an absolute URL.  Fix braindead
	string comparison.
	(hashCode): Use JDK 1.2 style algorithm.
	* java/net/URLStreamHandler.java (parseURL): Reimplement to handle
	context URL properly.

1999-05-30  Anthony Green  <green@cygnus.com>

	* java/net/URLStreamHandler.java (parseURL): Parse relative URLs
	correctly.  Clean up "/../" an[Bd "/./" path fragments.

1999-05-28  Warren Levy  <warrenl@cygnus.com>

	* java/net/DatagramSocket.java (laddr): Removed.
	(DatagramSocket): Removed attempts to get or set laddr if null.
	(getLocalAddress): Reimplemented per spec.
	* java/net/MulticastSocket.java (setTimeToLive): Throw exception
	when ttl is 0.
	(joinGroup): Throw NullPointerException if any argument is null.
	(leaveGroup): ditto.
	* java/net/PlainDatagramSocketImpl.java: Updated comments.
	* java/net/PlainSocketImpl.java (timeout): Added.
	(getInputStream): Added FIXME comment on how to support timeouts
	for TCP.
	* java/net/ServerSocket.java (ServerSocket): Added FIXME comment.
	* java/net/Socket.java: Added FIXME comments to identify
	conflicting specs between the JCL and JDK 1.2 documents.
	* java/net/natPlainDatagramSocketImpl.cc (bind): Use INADDR_ANY
	if host is null.  Get localport value resolved by kernel if bind
	lport is 0.
	(receive): Implemented support for timeouts in UDP.
	(setOption): Implemented based on natPlainSocketImpl version.
	(getOption): ditto.
	* java/net/natPlainSocketImpl.cc (bind): Get localport value
	resolved by kernel if bind lport is 0.
	(connect): Get localport value resolved by kernel if bind wasn't
	done to set localport.
	(accept): Implemented support for timeouts for ServerSocket.
	(setOption): Save value for SO_TIMEOUT.
	(getOption): Return timeout for SO_TIMEOUT.

1999-05-26  Bryce McKinlay <bryce@albatross.co.nz>

	* java/net/DatagramSocket.java (getSoTimeout): Verify class type.
	* java/net/DatagramSocketImpl.java (getOption): Made abstract.
	(setOption): Made abstract.
	* java/net/PlainDatagramSocketImpl.java: Mirror SocketOptions fields
	to avoid cpp conflicts in native code.
	* java/net/PlainSocketImpl.java: Mirror SocketOptions fields to avoid
	cpp conflicts in native code.
	* java/net/ServerSocket.java (toString): Prepended "ServerSocket".
	* java/net/Socket.java (getLocalAddress): Implemented.
	(setTcpNoDelay): Implemented.
	(getTcpNoDelay): Implemented.
	(setSoLinger): Implemented.
	(getSoLinger): Implemented.
	(getSoTimeout): Verify class type.
	(setSendBufferSize): Implemented.
	(getSendBufferSize): Implemented.
	(setReceiveBufferSize): Implemented.
	(getReceiveBufferSize): Implemented.
	(toString): Prepended "Socket".
	* java/net/SocketImpl.java (toString): Rewritten.
	(getOption): Made abstract.
	(setOption): Made abstract.
	* java/net/natPlainSocketImpl.cc (connect): Set localport properly.
	(setOption): Implemented.
	(getOption): Implemented.

1999-05-26  Warren Levy  <warrenl@cygnus.com>

	* java/net/DatagramSocket.java (DatagramSocket): Get local host
	address when null.  Set SO_REUSEADDR for multicasts.
	(getSoTimeout): Implemented.
	(setSoTimeout): Implemented.
	* java/net/DatagramSocketImpl.java: Implement SocketOptions interface.
	* java/net/MulticastSocket.java (getInterface): Implemented.
	(setInterface): Implemented.
	(setTimeToLive): Check for invalid ttl.
	(joinGroup): Verify multicast address and security.
	(leaveGroup): Verify multicast address and security.
	(send): Implemented.
	* java/net/PlainDatagramSocketImpl.java (timeout): Added.
	(iface): Added.
	(ttl): Added.
	(setOption): Added.
	(getOption): Added.
	(mcastGrp): Added.
	(getTTL): Implemented as non-native.
	(setTTL): ditto.
	(join): ditto.
	(leave): ditto.
	* java/net/ServerSocket.java (setSoTimeout): Implemented.
	(getSoTimeout): Implemented.
	(setSocketFactory): Made synchronized.
	* java/net/Socket.java (setSoTimeout): Implemented.
	(getSoTimeout): Implemented.
	(close): Made synchronized.
	(setSocketImplFactory): Made synchronized.
	* java/net/SocketImpl.java: Implement SocketOptions interface.
	* java/net/natInetAddress.cc: Corrected module name at top of file.
	* java/net/natPlainDatagramSocketImpl.cc (McastReq): Added union.
	(bind): Added FIXME.
	(peek): Implemented.
	(setTTL): Removed.
	(getTTL): Removed.
	(join): Removed.
	(leave): Removed.
	(mcastGrp): Added.
	(setOption): Implemented for SO_REUSEADDR.
	(getOption): Implemented for SO_REUSEADDR.

1999-05-24  Tom Tromey  <tromey@cygnus.com>

	* java/util/ResourceBundle.java (getBundle): Throw
	NullPointerException if baseName is null.

1999-05-22  Tom Tromey  <tromey@cygnus.com>

	* java/util/zip/ZipInputStream.java (fill): New method.
	(compressed_len): New instance variable.
	(getNextStream): Set it.
	(read): Reset inflater on EOF.  Only read via `super' if entry is
	deflated.
	(skip): Only skip via `super' if entry is deflated.
	* java/util/zip/Deflater.java (last_input_count): Removed.
	* java/util/zip/natDeflater.cc (deflate): Return 0 if input array
	is length 0.
	(needsInput): Don't use last_input_count.
	(setInput): Don't set last_input_count.
	* java/util/zip/natInflater.cc (getRemaining): Return correct
	result.
	(inflate): Return 0 if input array is length 0.
	(setInput): Don't set last_input_count.
	* java/util/zip/Inflater.java (last_input_count): Removed.

1999-05-21  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Added $(ZINCS).
	* configure: Rebuilt.
	* configure.in (ZINCS): New subst.

1999-05-21  Andrew Haley  <aph@cygnus.com>

	* include/sparc-signal.h (INIT_FPE, INIT_SEGV): SA_NODEFER added
	to signal options to allow the same exceptions to be rethrown
	later.

1999-05-20  Andrew Haley  <aph@cygnus.com>

	* libjava/prims.cc (catch_fpe): Call to HANDLE_DIVIDE_OVERFLOW
	added.
	* include/i386-signal.h (HANDLE_DIVIDE_OVERFLOW): New macro.
	(INIT_FPE): Exception string made more informative.
	* include/sparc-signal.h (INIT_FPE): Exception string made more
	informative.
	* testsuite/libjava.lang/Divide_1.java: New file.
	* testsuite/libjava.lang/Divide_1.out: New file.

1999-05-19  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4 (version): New variable; pass to AM_INIT_AUTOMAKE.

	* java/util/zip/GZIPOutputStream.java (write(byte[])): New
	method.

	* java/util/zip/natInflater.cc (inflate): Cast `len' to unsigned.
	Include <stdlib.h>.
	* java/util/zip/natDeflater.cc (deflate): Cast `len' to unsigned.
	Include <stdlib.h>.
	(update): Fail in default case.  Always initialize `strat'.

	* mauve-libgcj: Enable java.util.zip.

1999-05-18  Warren Levy  <warrenl@cygnus.com>

	* Makefile.am (ordinary_java_source_files): Added DatagramPacket.java,
	DatagramSocket.java, DatagramSocketImpl.java, MulticastSocket.java,
	PlainDatagramSocketImpl.java, and SocketOptions.java.
	(nat_source_files): Added natPlainDatagramSocketImpl.cc.
	* Makefile.in: Rebuilt.

	* java/net/DatagramPacket.java: New file.
	* java/net/DatagramSocket.java: New file.
	* java/net/DatagramSocketImpl.java: New file.
	* java/net/MulticastSocket.java: New file.
	* java/net/PlainDatagramSocketImpl.java: New file.
	* java/net/SocketOptions.java: New file.
	* java/net/natPlainDatagramSocketImpl.cc: New file.

1999-05-18  Tom Tromey  <tromey@cygnus.com>

	* java/util/zip/ZipOutputStream.java (level): Initial value is
	Deflater.DEFAULT_COMPRESSION.
	(close): New method.
	(closeEntry): Likewise.
	(finish): Likewise.
	(put_version): Likewise.
	(write_entry): Likewise.
	(put2, put4): Now return `int'.
	(comment): Default to empty string.
	(bytes_written): New instance variable.
	(chain): Likewise.
	* java/util/zip/ZipEntry.java (setComment): Limit length of
	comment string.
	(setCrc): Check CRC validity.
	(setExtra): Check argument validity.
	(setMethod): Likewise.
	(setSize): Likewise.
	(ZipEntry): Likewise.
	* include/javaprims.h: Updated namespace declarations.
	* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Mention new files.
	(nat_source_files): Likewise.
	* java/util/zip/ZipFile.java (readu2): Throw ZipException, not
	EOFException.
	(read4): Likewise.
	(getInputStream): Handle compressed entries.
	* java/util/zip/GZIPOutputStream.java: New file.
	* java/util/zip/GZIPInputStream.java: New file.
	* java/util/zip/DataFormatException.java: New file.
	* java/util/zip/CheckedInputStream.java: New file.
	* java/util/zip/CheckedOutputStream.java: New file.
	* java/util/zip/InflaterInputStream.java: Implemented.
	* java/util/zip/natInflater.cc: New file.
	* java/util/zip/Deflater.java: Implemented.
	* java/util/zip/natDeflater.cc: New file.
	* java/util/zip/DeflaterOutputStream.java: Implemented.

	* java/util/zip/ZipInputStream.java (closeZipEntry): Throw
	ZipException, not IOException.
	* java/util/zip/ZipFile.java (readDirectory): Throw ZipException,
	not IOException.

1999-05-17  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc (init_properties): URL now points to
	sourceware.

1999-05-12  Per Bothner  <bothner@cygnus.com>

	* java/util/Calendar.java (set):  First call computeFields if needed.
	* java/util/natGregorianCalendar.cc (computeTime):  Cast 1000 to jlong.
	
1999-05-12  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Look for -ldl when using the Boehm collector.
	Look for sched_yield in -lposix4.

1999-05-12  Per Bothner  <bothner@cygnus.com>

	* java/io/File.java (mkdirs):  Handle a null parent directory.

1999-05-12  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h: Updated namespace declarations.
	* classes.pl (scan): Uniquify class list.
	* Makefile.in, configure: Rebuilt.
	* Makefile.am (nat_source_files): Added natConcreteProcess.cc.
	(built_java_source_files): New macro.
	(nat_headers): Added built_java_source_files.
	(javao_files): Likewise.
	(EXTRA_libgcj_la_SOURCES): Likewise.
	(libgcj.zip): Create built class files.
	($(built_java_source_files:.java=.class)): New target.
	(jv_convert_LDADD): Added -L$(here)/.libs.
	* configure.in: Create links for ConcreteProcess.java and
	natConcreteProcess.cc.
	* java/lang/Runtime.java (exec): Create a ConcreteProcess.
	* java/lang/natEcosProcess.cc: New file.
	* java/lang/EcosProcess.java: New file.
	* java/lang/PosixProcess.java: New file.
	* java/lang/natPosixProcess.cc: New file.

1999-05-12  Warren Levy  <warrenl@cygnus.com>

	* java/net/PlainSocketImpl.java: Corrected copyright & header comments.
	* java/net/SocketImpl.java: Added marker for JDK 1.2 work.
	* java/net/natPlainSocketImpl.cc (bind): Throw BindException.
	(connect): Throw ConnectException.

1999-05-11  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (jv_convert_DEPENDENCIES): Include libgcj.spec.
	* libgcj.spec.in: Don't use `+'.  Instead, put old lib spec after
	our libraries.

	* Makefile.in: Rebuilt.
	* Makefile.am (jv_convert_LDADD): Removed `-L.'; it is not needed
	and it causes problems with libtool.

	* Makefile.in, configure: Rebuilt.
	* Makefile.am (jv_convert_LDFLAGS): Removed -nodefaultlibs.
	(jv_convert_LDADD): Added ZLIBS.  Removed -lm, -lc, -lgcc.
	(jv_convert_DEPENDENCIES): Added ZDEPS.
	* configure.in (GCSPEC): Added `-L' to point to boehm-gc build
	directory.
	(THREADSPEC): Added `-L' to point to qthreads build directory.
	(ZLIBS): New subst.
	(ZDEPS): New subst.

	* configure, Makefile.in: Rebuilt.
	* Makefile.am (toolexeclib_DATA): New macro.
	* configure.in: Create libgcj.spec.  Look for -lsocket and -lnsl.
	Recognize --with-system-zlib.
	(GCSPEC): New subst.
	(THREADSPEC): New subst.
	(SYSTEMSPEC): New subst.
	(ZLIBSPEC): New subst.
	* libgcj.spec.in: New file.

1999-05-10  Tom Tromey  <tromey@cygnus.com>

	* java/io/InputStreamReader.java (read): If length is 0, return
	0.  Reset `wpos' and `wcount' when buffer has been filled and
	emptied.

	* java/util/Properties.java (save): Removed `FIXME' comment.
	(load): Invalid characters in \u now treated as terminators.
	Make sure to append character resulting from `\' handling.
	Cast to `char' when appending to key or value.
	(skip_ws): Inverted test for whitespace.

	* java/io/RandomAccessFile.java (RandomAccessFile): Removed
	`FIXME' comment.
	(readLine): Likewise.
	(readFully): Implemented.

	* java/lang/natObject.cc (sync_init): Use _Jv_AllocBytesChecked.

	* java/awt/natToolkit.cc: Added copyright header.
	* java/util/zip/InflaterInputStream.java: Added copyright header.

	* java/io/FilterWriter.java (FilterWriter): Removed `FIXME'
	comment.
	* java/io/SequenceInputStream.java (SequenceInputStream): Removed
	`FIXME' comment.
	(getNextStream): Likewise.

	* java/util/ResourceBundle.java (partialGetBundle): Explicitly use
	locale.toString().
	(getBundle): Don't explicitly throw null pointer exception.

	* gnu/gcj/RawData.java: Added copyright header.

	* include/jni.h (_Jv_va_list): Always define as va_list.

1999-05-9  Anthony Green  <green@cygnus.com>

	* java/text/DateFormat.java (computeInstance): Separate time
	and date styles.
	(getDateTimeInstance): Ditto.
	(getDateTimeInstance(int,int)): New method.

        * Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Add new classes.

	* java/util/PropertyResourceBundle.java: New file.
	* gnu/gcj/util/EnumerationChain.java: New file.

1999-05-07  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h (GCJVERSION): New undef.
	* java/lang/natSystem.cc (init_properties): Define java.version,
	java.class.version, os.name, os.arch, os.version.
	Include <sys/utsname.h> if required.
	* configure: Rebuilt.
	* configure.in: Compute and define GCJVERSION.

	* java/lang/natSystem.cc (default_file_encoding): Now static.

	* java/lang/natCharacter.cc (isLowerCase): Use a binary search.

	* libtool-version: New file.
	* Makefile.in: Rebuilt.
	* Makefile.am (libgcj_la_LDFLAGS): Use -version-info, not
	-release.

	* mauve-libgcj: Don't omit Utf8Encoding or StringTest.
	Comment out FieldPosition, ParsePosition, and SimpleDateFormat
	again (oops).

	* mauve-libgcj: Test more from java.text.  Don't mention 1.1 tests
	(we pick those up already).

1999-05-05  Per Bothner  <bothner@cygnus.com>

	* java/awt/*:  Check a bunch of classes, a few complete, but mostly
	stub classes.  (This is enough to get Kawa to compile against libgcj.)

	* gnu/gcj/RawData.java:  New class.
	* doc/cni.sgml:  Document RawData.

	* java/util/zip/InflaterInputStream.java:  New stub class.
	* java/util/zip/ZipInputStream.java:  New class.  Partly works.
	* java/util/zip/ZipConstants.java:  Add two (internal) constants.
	* java/util/zip/ZipEntry.java (timeFromDOS):  New static method.
	* java/util/zip/ZipFile.java:  Now mostly works (unless compressed).
	* java/util/zip/ZipOutputStream.java:  Start implementation.
	
	* java/lang/natSystem.cc (DEFAULT_FILE_ENCODING):  New macro.
	(default_file_encoding):  New global, initial value is above macro.
	(init_properties):  Default file.encoding to default_file_encoding.
	
	* Makefile.am:  Add new classes.

1999-05-05  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (CLEANFILES): Don't mention $(class_files).
	(clean-local): New target

	* java/lang/natRuntime.cc: Include <ltdl.h> if required.
	(load, loadLibrary): Now native.
	(init): New method.
	* java/lang/Runtime.java (load, loadLibrary): Now native.
	(init): New native method.
	(Runtime): Use init.
	* prims.cc: Include <ltdl.h> if required.
	(JvRunMain): Call LTDL_SET_PRELOADED_SYMBOLS.

1999-05-05  Gilles Zunino  <Gilles.Zunino@hei.fr>

	* configure.in: Switch from irix threads to posix threads
	* configure: Regenerate.

1999-04-30  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (jv_convert_LDADD): Added -lgcc.

1999-04-29  Tom Tromey  <tromey@cygnus.com>

	* java/lang/StringBuffer.java (ensureCapacity): Don't resize
	vector when shared.

	* java/util/Locale.java (Locale(String,String)): Implement in
	terms of 3-argument version; variant now defaults to empty
	string.
	(toString): Assume variant is not null.
	(equals): Assume all strings are not null.
	(Locale): Throw NullPointerException if any argument is null.

	* java/util/ResourceBundle.java (getBundle): Don't try the base
	name; now implicit in partialGetBundle call.
	(trySomeGetBundle): Search for parent bundles and call setParent
	as required.
	(partialGetBundle): Added `langStop' argument.  Use
	`Locale.toString' to compute bundleName.
	(resource_cache): New static field.
	(partialGetBundle): Cache the returned resource bundle.  Now
	synchronized.

	* gnu/gcj/text/LocaleData_en.java (contents): [collatorRule] Added
	missing `<'.

	* mauve-libgcj: Enable Collator and RuleBasedCollator.
	* java/text/natCollator.cc (decomposeCharacter): `base' now
	`const'.
	* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Added
	CollationElementIterator, CollationKey, Collator,
	RuleBasedCollator.
	(nat_source_files): Added natCollator.cc.
	* java/text/RuleBasedCollator.java (ceiNext): No longer static.
	(compare): Pass `this' to CollationElementIterator constructor.
	(getCollationElementIterator): Likewise.
	(ceiNext): Fix off-by-one error when finding initial substring.
	(next): Correctly mask off bits when computing return value.
	Fixed return values when one string is shorter than the other.
	* java/text/CollationElementIterator.java (collator): New field.
	(CollationElementIterator): Added collator argument.
	(next): Call ceiNext on collator object.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* natCollator.cc: New file.

	* java/util/GregorianCalendar.java (setDefaultTime): New method.
	(GregorianCalendar): Use it in all constructors.
	* java/util/Calendar.java (Calendar): Changed argument name to
	`zone' to match code.

	* gnu/gcj/text/LocaleData_en.java: Added collatorRule element.
	* java/text/CollationKey.java: New file.
	* java/text/CollationElementIterator.java: New file.
	* java/text/Collator.java: New file.
	* java/text/RuleBasedCollator.java: New file.

	* Makefile.in: Rebuilt.
	* Makefile.am (jv_convert_LDFLAGS): Added -nodefaultlibs.
	(jv_convert_LDADD): Explicltly add -lm -lc.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* configure, Makefile.in: Rebuilt.
	* configure.in: Added AM_PROG_LIBTOOL.
	(GCOBJS): Use `.lo' form of files.
	(THREADOBJS): Likewise.
	(GCDEPS): Use `.la' form of library.
	(GCLIBS): Set to be the same as GCDEPS.
	(THREADDEPS): Use `.la' form of library.
	(THREADLIBS): Set to be the same as THREADDEPS.
	* Makefile.am (toolexeclib_LTLIBRARIES): Renamed from
	toolexeclib_LIBRARIES.
	(libgcj_la_SOURCES): Renamed for libtoolization.
	(EXTRA_libgcj_la_SOURCES): Likewise.
	(libgcj_la_DEPENDENCIES): Likewise.
	(libgcj_la_LIBADD): Likewise.
	($(nat_files)): Use LTCXXCOMPILE.
	($(c_files)): Use LTCOMPILE.
	(GCJCOMPILE): New macro.
	(.class.o): Use it.
	(.java.o): Likewise.
	($(javao_files)): Likewise.
	(jv_convert_LINK): Use LIBTOOL.
	(nat_files): Use `.lo' files.
	(c_files): Likewise.
	(javao_files): Likewise.
	(.class.lo): Renamed.
	(.java.lo): Likewise.
	($(nat_files)): Depend on %.lo.
	($(c_files)): Likewise.
	($(javao_files)): Likewise.
	(jv_convert_LDADD): Link against .lo files.
	(jv_convert_DEPENDENCIES): Depend on .lo files.
	(maintainer-check): Depend on libgcj.la, but examine .a file.
	(jv_convert_DEPENDENCIES): Depend on libgcj.la.
	(libgcj_la_LDFLAGS): New macro.

1999-04-23  Warren Levy  <warrenl@cygnus.com>

	* Makefile.am: Added URLDecoder and URLEncoder.
	* Makefile.in: Rebuilt.

	* java/net/ServerSocket.java (setSocketFactory): Renamed from
	setSocketImplFactory to match spec.
	* java/net/Socket.java (getSoLinger): Changed return type to
	match spec.

	* java/net/URLDecoder.java: New file.
	* java/net/URLEncoder.java: New file.

1999-04-21  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (getBytes): Reverted earlier change and
	applied correct fix from Per Bothner.

	* java/lang/String.java: Don't throw
	UnsupportedEncodingException.

	* java/lang/natString.cc (getBytes): Correctly size result
	buffer.  From Bryce McKinlay <bryce@albatross.co.nz>.

1999-04-20  Andrew Haley  <aph@cygnus.com>

	* include/sparc-signal.h: new file.
	* configure.in: include/sparc-signal.h added.
	* configure: regenerated.
	* prims.cc (JvRunMain): signal handling code rewritten to be more
	portable.
	(catch_segv): ditto.
	(catch_fpe): ditto.
	* include/i386-signal.h: reorganized.
	* include/default-signal.h: reorganized.

1999-04-19  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc (init_properties): Only declare pwd_entry
	once.  From Anthony Green.

1999-04-19  Andrew Haley  <aph@cygnus.com>

	* Makefile.in: Processed with new automake.

1999-04-19  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h: Removed security namespace.

1999-04-20  Anthony Green  <green@cygnus.com>

	* java/io/PrintStream.java (println): Remove extra println.

1999-04-19  Anthony Green  <green@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Add new security files.

	* java/security/NoSuchAlgorithmException.java,
	java/security/MessageDigest.java: New files.

	* include/javaprims.h: Add security namespace.

1999-04-16  Per Bothner  <bothner@cygnus.com>

	* gnu/gcj/convert/JIS0201.h:  New file, generated from Unicode table.
	* gnu/gcj/convert/Input_JavaSrc.java: New BytesToUnicode class.
	* gnu/gcj/convert/Input_SJIS.java: New BytesToUnicode class.
	* gnu/gcj/convert/Output_EUCJIS.java:  New UnicodeToBytes class.
	* gnu/gcj/convert/Output_SJIS.java:  New UnicodeToBytes class.
	* gnu/gcj/convert/natInput_EUCJIS.cc:  New file.
	* gnu/gcj/convert/natInput_SJIS.cc:  New file.
	* gnu/gcj/convert/natOutput_EUCJIS.cc:  New file.
	* gnu/gcj/convert/natOutput_SJIS.cc:  New file.
	* gnu/gcj/convert/make-trie.c:  New file: functions to make a trie.
	* gnu/gcj/convert/gen-from-JIS.c:  Invoke make-trie for output.
	* gnu/gcj/convert/Unicode_to_JIS.cc:  New generated trie table.
	* Makefile.am:  Various changes for new files and conversions.

	* gnu/gcj/convert/UnicodeToBytes.java (write(String,int,int,char[])):
	New overloading, allows greater efficiency.
	* gnu/gcj/convert/Output_8859_1.java (write(String,int,int,char[])):
	New overloading (for efficiency - avoids copying).

	* gnu/gcj/convert/Output_UTF8.java:  Fix typo: 0xC0 -> 0c3F.
	* gnu/gcj/convert/Input_UTF8.java:  Fix typos in bit masks.

	* java/io/InputStreamReader.java (<init>):  Set super.in correctly.
	* java/io/OutputStreamWriter.java (<init>):  Set super.in correctly.
	(writeChars):  Don't be quite so eager to flush.
	* java/io/PrintStream.java:  Rewrite.  Now more similar to
	OutputStreamWriter, using explicit UnicodeToBytes converter.
	Also, autoflush does not need to flush so often.
	* java/lang/natString.cc (getBytes):  More efficient algorithm.
 	(init(jbyteArray,jint,jint,jstring)):  More efficient.
	
1999-04-15  Warren Levy  <warrenl@cygnus.com>

	* Makefile.am (ordinary_java_source_files): Added new Connection 
	and Handler classes in gnu.gcj.protocol.file package.
	* Makefile.in: Rebuilt.

	* gnu/gcj/protocol/file/Connection.java: New file.
	* gnu/gcj/protocol/file/Handler.java: New file.
	* gnu/gcj/protocol/http/Connection.java (getInputStream): Check
	if doInput allows input.
	(getOutputStream): Check if doOutput allows output.
	* java/net/URLStreamHandler.java (parseURL): Fix indentation.

1999-04-14  Tom Tromey  <tromey@cygnus.com>

	* java/net/natInetAddress.cc (lookup): On glibc2.0 systems, make
	buffer larger to work around bug.
	From Bryce McKinlay <bryce@albatross.co.nz>.

1999-04-14  Andrew Haley  <aph@cygnus.com>

 	* java/lang/natDouble.java (doubleToLongBits): ensure that all
 	NaNs are always converted to the same long value.  
 	* java/lang/natFloat.java (floatToIntBits): ditto, but for float
 	converted to int.

1999-04-13  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc (arraycopy): Don't always use jbyteArray;
	instead switch on actual element type.

	* Makefile.in: Rebuilt.
	* Makefile.am (AM_MAKEFLAGS): Added JC1FLAGS.

1999-04-13  Andrew Haley  <aph@cygnus.com>

        * include/i386-signal.h, include/default-signal.h: New files.   
        * prims.cc (catch_segv): Call MAKE_THROW_FRAME in exception
        handler.
        (catch_fpe): New function.      
        * configure.in: Make link to appropriate include/java-signal.h.
        * configure: Rebuilt.
        * Makefile.am: include/java-signal.h added to dependency list.
        * Makefile.in: Rebuilt.

1999-04-12  Urban Widmark <urban@svenskatest.se>

	* java/io/DataInputStream.java (readLine): Corrected handling of
	empty lines, from null to "".

1999-04-12  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (libgcj.zip): Put `gnu' classes into zip file.

	* java/lang/natSystem.cc (SystemClass): New define.
	(init_properties): Synchronize.

1999-04-08  Geoff Berry  <gcb@gnu.org>

	* natInetAddress.cc (lookup): Fix typo (AF_INET16 -> AF_INET6).
	* natPlainSocketImpl.cc (accept): Add missing else if check
	for AF_INET6.

1999-04-08  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Long.java (parseLong): Corrected overflow detection
	code.
	* java/lang/Integer.java (parseInt): Corrected overflow detection
	code.

	* java/io/PrintStream.java (print): Handle null string argument.
	(println): Likewise.

1999-04-07  Warren Levy  <warrenl@cygnus.com>

	* java/lang/natString.cc (init(jbyteArray,jint,jint,jstring)):
	Set count to 0 when InputStreamReader returns -1 for EOF.

1999-04-07  Tom Tromey  <tromey@cygnus.com>

	* mauve-libgcj: Omit java.text.Collator,
	java.text.RuleBasedCollator.

1999-04-06  Tom Tromey  <tromey@cygnus.com>

	* gnu/gcj/protocol/http/Connection.java (getHeaderField): Catch
	IOException from getHttpHeaders().
	(getHeaderFieldKey): Likewise.

	* include/javaprims.h: Regenerated declarations.

	* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Updated for removed
	files.

1999-04-06  Per Bothner  <bothner@cygnus.com>

	* java/util/zip/Adler32.java:  New class.
	* java/util/zip/CRC32.java:  Add working method bodies.
	* Makefile.am (ordinary_java_source_files):  Add new Adler32 class.
	* Makefile.in:  Re-generate.

Tue Apr  6 18:28:42 1999  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/protocol/http/Connection.java: New file.  Rewritten
	from version in removed www hierarchy.
	* gnu/gcj/protocol/http/Handler.java: New file.  Copied from
	version in removed www hierarchy.

	* gnu/gcj/www/protocol/http/Connection.java: Removed.
	* gnu/gcj/www/protocol/http/Handler.java: Removed.
	* gnu/gcj/www/protocol/http: Removed dir.
	* gnu/gcj/www/protocol: Removed dir.
	* gnu/gcj/www: Removed dir.

	* java/net/HttpURLConnection.java: Revised comments to indicate
	missing JDK 1.2 methods.

	* java/net/URL.java (setURLStreamHandler): Look in gnu/gcj/protocol
	hierarchy rather than the gnu/gcj/www/protocol one.
	* java/net/URLConnection.java: Updated status comments.
	(setContentHandler): Look in gnu/gcj/content hierarchy rather than
	the gnu/gcj/www/content one.

1999-04-06  Per Bothner  <bothner@cygnus.com>

	* Makefile.am (JIS0208_to_Unicode.cc, JIS0212_to_Unicode.cc):
	The gen-from-JIS program is in $(CONVERT_DIR).

1999-04-06  Tom Tromey  <tromey@cygnus.com>

	* mauve-libgcj: Renamed from mauve-libjava.

Tue Apr  6 03:18:38 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/HttpURLConnection.java (getResponseCode): Implemented.
	(getResponseMessage): Implemented.
	(getResponseVals): New private method.

	* java/net/URLConnection.java (getContent): Implemented.
	(setContentHandler): Convert non-alphabetic/numeric chars per spec.

1999-04-05  Tom Tromey  <tromey@cygnus.com>

	* Makefile.am (bin_PROGRAMS): Renamed convert to jv-convert.
	(jv_convert_SOURCES): Renamed.
	(EXTRA_jv_convert_SOURCES): Likewise.
	(jv_convert_LDFLAGS): Likewise.
	(jv_convert_LINK): Likewise.
	(jv_convert_LDADD): Likewise.
	(jv_convert_DEPENDENCIES): Likewise.

	* Makefile.in: Rebuilt.
	* Makefile.am (toolexeclibdir): Reference toolexecdir, not
	tooldir.

Mon Apr  5 02:14:35 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/HttpURLConnection.java (setRequestMethod): Use String.equals
	method for comparison.

	* java/net/URLConnection.java (getContentLength): Implemented.
	(getContentType): Implemented.
	(getContentEncoding): Implemented.
	(getExpiration): Implemented.
	(getDate): Implemented.
	(getLastModified): Implemented.
	(getHeaderFieldInt): Implemented.
	(getHeaderFieldDate): Implemented.

Fri Apr  2 18:04:52 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/URLConnection.java (toString): Implemented.
	(setContentHandlerFactory): Implemented.
	(setContentHandler): Wrote new private helper method.

1999-04-01  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am ($(java_source_files:.java=.class): Reverted change
	of 1999-03-31; we always want to build all the .class files.
	Depend on java_source_files, not libgcj.zip.
	(nat_headers): Define in terms of ordinary_java_source_files.

1999-03-31  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (special_java_source_files): New macro.
	(java_source_files): Use it.
	(ordinary_java_source_files): New macro.
	(java_source_files): Use it.
	($(ordinary_java_source_files:.java=.class)): Renamed to avoid
	creating headers for those files with hand-maintained headers.

	* include/javaprims.h: Regenerated namespace declarations.
	* classes.pl (scan): Include [0-9] in regexp for matching class
	names; for java.util.zip.CRC32.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Redefined to generate all possible
	header files.

	* java/util/zip/ZipException.java: In package java.util.zip, not
	java.net.

1999-03-30  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (EH_COMMON_INCLUDE): Look in ../compat-include for
	eh-common.h when not building in tree with gcc.

	* Makefile.in: Rebuilt.
	* Makefile.am ($(nat_files) $(GCOBJS) $(THREADOBJS)
	$(libgcj_a_OBJECTS)): Changed how we list files that depend on
	nat_headers.
	($(java_source_files:.java=.class)): New target.

	* Makefile.in: Rebuilt.
	* Makefile.am (java_source_files): Added
	java/net/HttpURLConnection.java and
	gnu/gcj/www/protocol/http/Connection.java.

Tue Mar 30 15:20:45 1999  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/www/protocol/http/Connection.java: New file.
	* gnu/gcj/www/protocol/http/Handler.java (openConnection): Implemented.
	* java/net/HttpURLConnection.java: New file.
	* java/net/URLConnection.java (getHeaderField): Implemented default.
	(getHeaderFieldKey): Implemented default method.

1999-03-30  Tom Tromey  <tromey@cygnus.com>

	* gnu/gcj/convert/JIS0212.h, gnu/gcj/convert/JIS0208.h: Rebuilt.

	* java/util/zip/Deflater.java: Added copyright header.
	* java/util/zip/CRC32.java: Added copyright header.

	* Makefile.am ($(srcdir)/$(CONVERT_DIR)/JIS0208.h): Note in file
	that it is automatically generated.
	($(srcdir)/$(CONVERT_DIR)/JIS0212.h): Likewise.

	* gnu/gcj/convert/BytesToUnicode.java,
	gnu/gcj/convert/Convert.java, gnu/gcj/convert/Input_8859_1.java,
	gnu/gcj/convert/Input_EUCJIS.java,
	gnu/gcj/convert/Input_UTF8.java,
	gnu/gcj/convert/JIS0208_to_Unicode.cc,
	gnu/gcj/convert/JIS0212_to_Unicode.cc,
	gnu/gcj/convert/Output_8859_1.java,
	gnu/gcj/convert/Output_JavaSrc.java,
	gnu/gcj/convert/Output_UTF8.java,
	gnu/gcj/convert/UnicodeToBytes.java,
	gnu/gcj/convert/natInput_EUCJIS.cc: Added copyright headers.

	* gnu/gcj/convert/gen-from-JIS.c (main): Fixed incorrect fprintf.

	* Makefile.in, configure: Rebuilt.
	* configure.in (TESTSUBDIR): Enable if testsuite subdir exists,
	not if test subdir exists.
	(--enable-gcj-classes): Removed; gcj always used to generate
	.class files.
	(JAVA, JAVAC): Removed.
	(--enable-single-compilation, --enable-source-compilation):
	Removed.
	(here): New subst.
	(NATIVE): New conditional.
	* Makefile.am (toolexecdir): Renamed from tooldir to allow
	`install-exec' to work.
	(toolexeclibdir): Likewise.
	(toollib_LIBRARIES): Likewise.
	(AM_MAKEFLAGS): Don't pass tooldir.
	(JAVAC): New macro.
	(javao_files): Redefined.
	(java_source_files): New macro.
	(c_source_files): New macro.
	(c_files): Redefined in terms of c_source_files.
	(java_io_files, java_lang_files, java_net_files, java_text_files,
	java_util_files, gnu_files, java_files): Removed.
	(class_io_files, class_lang_files, class_net_files,
	class_text_files, class_util_files, class_gnu_files, class_files):
	Removed.
	(nat_source_files): New macro.
	(nat_files): Redefined in terms of nat_source_files.
	(EXTRA_libgcj_a_SOURCES): Added c_source_files,
	java_source_files.  Removed no-such-file.c.
	(here): Removed.
	(ETAGS_ARGS): Removed.
	(TAGS_DEPENDENCIES): Likewise.
	(libgcj.zip): Depend on java_source_files.  Use $(here) and not
	pwd in rule.
	(src_io_files, src_lang_files, src_text_files, src_util_files,
	src_gnu_files): Removed.
	Removed ALL_AT_ONCE and COMPILE_FROM_CLASS code.
	(BUILT_SOURCES): Removed.
	(header-check): New target.
	(javadir): Removed.
	(noinst_PROGRAMS): New macro.
	($(srcdir)/$(CONVERT_DIR)/JIS0208_to_Unicode.cc): Conditionalize
	on MAINTAINER_MODE.
	($(srcdir)/$(CONVERT_DIR)/JIS0212_to_Unicode.cc): Likewise.
	(gen-from-JIS): Build in top directory.
	(convert_source_files): New macro.
	(convert_SOURCES): New macro.
	(convert_LDFLAGS): Likewise.
	(convert_LINK): Likewise.
	(convert_LDADD): Likewise.
	(convert_DEPENDENCIES): Likewise.
	(convert): Removed.
	(gen-from-JIS): Removed.
	(gen_from_JIS_SOURCES): New macro.
	(gen_from_JIS_LDADD): Likewise.
	(gen_from_JIS_DEPENDENCIES): Likewise.

	* configure: Rebuilt.
	* configure.in (CANADIAN): Set to `yes', not `canadian'.
	(NULL_TARGET): Initialize to `no'.  Correctly examine $NULL_TARGET
	when defining conditional.

Tue Mar 30 10:36:27 1999  Per Bothner  <bothner@cygnus.com>

	* gnu/gcj/convert/{JIS0208.TXT,JIS0212.TXT}:  Remove these files.
	The Unicode Consortium does not permit their re-distribution.
	* Makefile.am, Makefile.in:  Add comments with URLs for removed files.
	(JIS0208.h, JIS0212.h):  Do not depend on removed files.

Mon Mar 29 18:58:13 1999  Per Bothner  <bothner@cygnus.com>

	* natSystem.c (init_properties):  Use malloc, realloc, free after all.

Mon Mar 29 13:41:02 1999  Per Bothner  <bothner@cygnus.com>

	* gnu/gcj/convert/{JIS0208.TXT,JIS0212.TXT}:  New mapping tables
	from Unicode Consortium.
	* gnu/gcj/convert/{JIS0208.h,JIS0212.h}:  New generated headers.
	* gnu/gcj/convert/gen-from-JIS.c:  New utility for maintainers only.
	* gnu/gcj/convert/{JIS0208_to_Unicode.cc,JIS0212_to_Unicode.cc}:
	New tables, generated using gen-from-JIS.
	* gnu/gcj/convert/Output_JavaSrc.java:  New UnicodeToBytes class.
	* gnu/gcj/convert/Output_UTF8.java:  Fix bug.
	* gnu/gcj/convert/Input_EUCJIS.java:  New BytesToUnicode class.
	* gnu/gcj/convert/natInput_EUCJIS.cc:  Native methods for new class.

	* gnu/gcj/convert/Convert.java:  New application.
	* Makefile.am, Makefile.in (convert):  New program, using Convert.
	Build the various JIS conversion tables (in maintainer mode).

Fri Mar 26 16:51:30 1999  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/www/protocol/http/Handler.java: New file - stubbed.

	* java/net/URL.java (URL): Deal with null property value.  Use "."
	as separator in building class name.
	* java/net/URLConnection.java: Implemented majority of stubbed methods.
	* java/net/URLStreamHandler.java (parseURL): Use "" in string
	manipulations instead of 'null'.  Comment cleanup.  Use 0 for the
	beginning of the substring rather than 'start'.

1999-03-26  Tom Tromey  <tromey@cygnus.com>

	* include/java-chartables.h: Rebuilt.
	* include/java-chardecomp.h: New file.
	* chartables.pl: Generate output files directly.  Added support
	for generating decomposition header.
	(canonical_decomposition, full_decomposition): New globals.
	(DECOMPOSITION): New constant.
	(process_char): Call add_decomposition.
	(add_decomposition): New sub.
	(write_decompositions): New sub.

1999-03-25  Tom Tromey  <tromey@cygnus.com>

	* java/text/CollationElementIterator.java: New file.

	* mauve-libjava: Omit StringTest.

Wed Mar 24 15:17:49 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/URL.java (URL(URL, String, URLStreamHandler)): Allow URLs
	without a '/' when parsing protocol.  Handle ref outside of parseURL.
	(hashCode): Implemented.
	(set): Don't expand -1 to default port.
	(getDefaultPort): Removed.

	* java/net/URLStreamHandler.java (parseURL): Implemented.
	(toExternalForm): Implemented.

1999-03-23  Tom Tromey  <tromey@cygnus.com>

	* java/text/BreakIterator.java (getSentenceInstance):
	Implemented.
	* gnu/gcj/text/SentenceBreakIterator.java: New file.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added IllegalAccessException.
	* java/lang/natClass.cc (newInstance): Throw
	IllegalAccessException, not IllegalAccessError.
	Include IllegalAccessException.h.

1999-03-22  Tom Tromey  <tromey@cygnus.com>

	* gnu/gcj/text/LineBreakIterator.java: New file.
	* java/text/BreakIterator.java (getLineInstance): Implemented.

	* gnu/gcj/text/WordBreakIterator.java (WordBreakIterator): Made
	copy constructor private.
	(previous, next): Removed erroneous comment about line
	separators.
	(previous): Correctly recognize break between non-letter on the
	left and letter on the right.  Handle apostrophes correctly.

	* java/text/BreakIterator.java (getWordInstance): Implemented.
	* gnu/gcj/text/WordBreakIterator.java: New file.
	* gnu/gcj/text/CharacterBreakIterator.java: Extend
	BaseBreakIterator.
	* gnu/gcj/text/BaseBreakIterator.java: New file.

1999-03-19  Tom Tromey  <tromey@cygnus.com>

	* java/text/BreakIterator.java: New file (partially stubbed out).
	* gnu/gcj/text/CharacterBreakIterator.java: New file.

	* include/config.h.in: Rebuilt.
	* acconfig.h (STRUCT_TM_HAS_GMTOFF): New define.
	(HAVE_TIMEZONE): Likewise.
	* configure: Rebuilt.
	* configure.in: Added timezone checks.
	* java/util/natGregorianCalendar.cc (computeTime): Adjust for
	timezone.

Fri Mar 19 15:26:35 1999  Per Bothner  <bothner@cygnus.com>

	* gnu/gcj/convert/BytesToUnicode.java:  New abstract class.
	* gnu/gcj/convert/UnicodeToBytes.java:  New abstract class.
	* gnu/gcj/convert/Input_8859_1.java:  New BytesToUnicode sub-class.
	* gnu/gcj/convert/Input_UTF8.java:  New BytesToUnicode sub-class.
	* gnu/gcj/convert/Output_8859_1.java:  New UnicodeToBytes sub-class.
	* gnu/gcj/convert/Output_UTF8.java:  New UnicodeToBytes sub-class.
	* java/io/InputStreamReader.java:  Rewrite to use BytesToUnicode.
	* java/io/OutputStreamWriter.java:  Rewrite to use UnicodeToBytes.

	* java/io/natFileDescriptorPosix.cc (open):  Use O_BINARY flag.
	(BSD_COMP):  Kludge needed for Solaris2.

Fri Mar 19 01:49:46 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/URL.java (URL(java.net.URL, string): Moved code to
	URL(java.net.URL, string, URLStreamHandler) and call it with a
	null handler.  In latter constructor, added SecurityManager check.
	(set): Expect null handler on bad protocol rather than an exception.
	(setURLStreamHandler): Simplified exception handling; return null
	on invalid protocol.

1999-03-18  Tom Tromey  <tromey@cygnus.com>

	* java/text/DecimalFormat.java (format(long,...)): Rewrote.

	* java/lang/natSystem.cc (setOut, setIn, setErr): New native
	methods.
	Include PrintStream.h, InputStream.h.
	* java/lang/System.java (ForwardingInputStream,
	ForwardingOutputStream): Removed.
	(setErr, setIn, setOut): Now native.

	Reverted patch from 1999-02-12 to work around problem in
	libgcc2.c.
	* exception.cc (_Jv_eh_alloc): Use malloc, not _Jv_AllocBytes.
	(_Jv_eh_free): Use free.

	* java/io/natFileDescriptorPosix.cc (open): Allocate enough space
	for path name.  Minor formatting fixes.

	* boehm.cc (_Jv_MarkObj): Always mark `methods' field.

	* prims.cc (fail_on_finalization): New function.
	(_Jv_GCWatch): Likewise.

	* prims.cc (JvRunMain): Initialize `nullp'.
	(nullp): New global.
	(catch_segv): Throw nullp.

	* Makefile.in: Rebuilt.
	* Makefile.am (ZIP): In "null target" case, zip is found in the
	build tree.

	* prims.cc (_Jv_PrimClass): Initialize all elements of class
	object.
	Include Modifier.h.

	* java/lang/StringBuffer.java (StringBuffer): Don't use
	ensureCapacity to set initial capacity.
	(capacity): Subtract `length' from return result.

Thu Mar 18 01:53:35 1999  Warren Levy  <warrenl@cygnus.com>

	* java/io/natFileDescriptorPosix.cc (open): Throw
	FileNotFoundException, but with filename and errno in msg.

Wed Mar 17 11:09:30 1999  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/www/protocol/URLStreamHandlerFactory.java: Removed;
	functionality folded into java/net/URL.java per spec.
	
	* java/io/natFileDescriptorPosix.cc (open): Check for ENOENT rather
	than EEXIST for throwing FileNotFoundException.
	
	* java/net/URL.java: Folded in default URLStreamHandlerFactory 
	algorithm per JDK 1.2 doc.  Added SecurityManager checks.
	
	* java/net/URLStreamHandler.java (parseURL): Added stub.

1999-03-15  Andrew Haley  <aph@cygnus.com>

	* java/text/ChoiceFormat.java (nextDouble): Simplify and fix off
	by one errors.

1999-03-15  Andrew Haley  <aph@cygnus.com>

	* java/lang/natSystem.cc (currentTimeMillis): Restore eCos clock
	support.

1999-03-12  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (catch_segv): New function.
	Include <signal.h> if HANDLE_SEGV defined.  Include
	NullPointerException.h.
	(JvRunMain): If HANDLE_SEGV defined, install catch_segv as SIGSEGV
	handler.

	* java/text/SimpleDateFormat.java (equals): Ensure that object is
	a SimpleDateFormat, not just a DateFormat.
	(defaultCenturyStart, formatData, pattern): Now private.
	(append): Now `final'.  Use `NumberFormat.format'.
	(parse): Wrote.
	(SimpleDateFormat): Turn off groupin in NumberFormat object.

	* java/lang/natString.cc (indexOf): Add `fromIndex' to successful
	result.

	* java/text/MessageFormat.java (format): Use default MessageFormat
	constructor.
	(parse, parseObject): Wrote.

	* java/text/SimpleDateFormat.java (SimpleDateFormat): Wrote no-arg
	constructor.

1999-03-12  Andrew Haley  <aph@cygnus.com>

	* java/lang/String.java (indexOf): Replace with native method for
	better performance.
	* java/lang/natString.cc (IndexOf): As above.

	* java/lang/natString.cc (init(jbyteArray,jint,jint,jint)):
	Argument check corrected.
	(init(jbyteArray,jint,jint,jstring)): Likewise.
	
	* java/lang/StringBuffer.java (ensureCapacity): Replace with JDK
	1.2 compliant method.
 
	* java/lang/Double.java (byteValue, shortValue): JDK 1.1 methods
	added.
	* java/lang/Float.java (byteValue, shortValue): Likewise.

1999-03-11  Tom Tromey  <tromey@cygnus.com>

	* java/text/DecimalFormat.java (parse): Wrote.

	* java/text/ChoiceFormat.java (parse): Set error index on
	ParsePosition object.

	* java/lang/Integer.java (parseInt): Throw exception on overflow
	when intermediate result is most negative number.  Changed
	overflow detection as well.
	* java/lang/Long.java (parseLong): Likewise.

	* configure, Makefile.in: Rebuilt.
	* configure.in (NULL_TARGET, CANADIAN): New conditionals.  Set
	CANADIAN when building in source tree that doesn't include gcc.
	* Makefile.am (ZIP, GCJ, GCJH): Use automake conditionals to
	define.

	* java/text/ChoiceFormat.java (nextDouble): Correct some
	off-by-one errors when masking or adding.

	* java/text/DecimalFormat.java (format): Fill in FieldPosition
	parameter, if given.  Use `%', not IEEEremainder.
	(scanFix): Throw error if multiplier already set.
	(computePattern): Wrote.

1999-03-11  Andrew Haley  <aph@cygnus.com>

	* java/text/ChoiceFormat.java (mantissaBits): Use correct value of
	52.
	(nextDouble): Corrected masking logic.  Handle interaction between
	`next' and negative numbers.

Wed Mar 10 18:58:37 1999  Warren Levy  <warrenl@cygnus.com>

	* gnu/gcj/www/protocol/URLStreamHandlerFactory.java: Created.
	* java/net/URL.java: Added general comments.

1999-03-10  Tom Tromey  <tromey@cygnus.com>

	* java/text/ChoiceFormat.java (parse): Wrote.

	* java/text/ChoiceFormat.java (toPattern): Use `#', not `<'.

	* java/text/MessageFormat.java (MessageFormatElement.setLocale):
	Create ChoiceFormat objects.
	(format): Special-case ChoiceFormat.
	(scanFormatElement): Include { and } in generated style string.

1999-03-09  Tom Tromey  <tromey@cygnus.com>

	* java/text/ChoiceFormat.java: New file.

Tue Mar  9 17:09:18 1999  Warren Levy  <warrenl@cygnus.com>

	* java/net/BindException.java: Created.
	* java/net/ConnectException.java: Created.
	* java/net/ContentHandler.java: Created.
	* java/net/ContentHandlerFactory.java: Created.
	* java/net/FileNameMap.java: Created.
	* java/net/MalformedURLException.java: Created.
	* java/net/NoRouteToHostException.java: Created.
	* java/net/ProtocolException.java: Created.
	* java/net/ServerSocket.java (@author): Fixed typo.
	* java/net/Socket.java (@author): Fixed typo.
	* java/net/SocketImpl.java (@author): Fixed typo.
	* java/net/SocketImplFactory.java (@author): Fixed typo.
	* java/net/URL.java: Created - nearly complete.
	* java/net/URLConnection.java: Created - near-empty stub.
	* java/net/URLStreamHandler.java: Created - incomplete stub.
	* java/net/URLStreamHandlerFactory.java: Created.
	* java/net/UnknownServiceException.java: Created.

1999-03-09  Tom Tromey  <tromey@cygnus.com>

	* java/lang/System.java (ForwardingInputStream): New class.
	(ForwardingOutputStream): Likewise.
	(in, out, err): Now `final' forwarding streams.
	(setIn, setOut, setErr): Use appropriate method on forwarding
	streams.

	* java/text/MessageFormat.java (MessageFormatElement): Now `final'
	class.

Tue Mar  9 12:16:53 1999  Per Bothner  <bothner@cygnus.com>

	* java/util/zip/CRC32.java:  New class (just an incomplete stub).
	* java/util/zip/Checksum.java:  New interface (complete).
	* java/util/zip/Deflater.java:  New class (near-empty stub).
	* java/util/zip/DeflaterOutputStream.java: New class (incomplete stub).
	* java/util/zip/ZipConstants.java:  New interface (near-empty stub).
	* java/util/zip/ZipEntry.java:  New class (complete).
	* java/util/zip/ZipException.java:  New class (complete).
	* java/util/zip/ZipFile.java:  New class (incomplete stub).
	* java/util/zip/ZipOutputStream.java:  New class (incomplete stub).

1999-03-09  Tom Tromey  <tromey@cygnus.com>

	* java/text/MessageFormat.java (MessageFormatElement): Removed
	`public' specifiers.

	* java/text/DecimalFormat.java (scanFormat): Increment index
	before processing exponential format.  Fixed a couple typos in
	exception messages.
	(format): Correct normalization of exponent.

1999-03-08  Tom Tromey  <tromey@cygnus.com>

	* java/text/SimpleDateFormat.java (parse): Throw
	IllegalArgumentException, not ParseException.

1999-03-05  Tom Tromey  <tromey@cygnus.com>

	* java/text/SimpleDateFormat.java (SimpleDateFormat): Use locale
	when constructing DateFormatSymbols.  Initialize numberFormat
	field of superclass.

	* java/text/DateFormat.java (equals): Rewrote.
	(getAvailableLocales): New method.
	(getDateInstance): New methods.
	(getDateTimeInstance): Likewise.
	(getTimeInstance): Likewise.
	(getInstance): New method.
	(computeInstance): New method.

	* java/text/DateFormatSymbols.java (zoneStringsDefault): Completed
	for US.
	(safeGetResource): New method.
	(DateFormatSymbols): Use Locale paramater.
	(equals): Now protected.
	Made instance variables private.

1999-03-04  Tom Tromey  <tromey@cygnus.com>

	* java/text/DecimalFormat.java: New file.

	* java/text/NumberFormat.java (groupingUsed,
	maximumFractionDigits, maximumIntegerDigits,
	minimumFractionDigits, minimumIntegerDigits, parseIntegerOnly):
	New fields.
	(setDecimalSeparatorAlwaysShown, setMultiplier,
	setPositivePrefix): Removed.
	(setMinimumFractionDigits, setMaximumFractionDigits):
	Implemented.
	(format): Now final.
	Added many new methods.

	* Makefile.in: Rebuilt.
	* Makefile.am (gnu_files): New macro.
	(java_files): Added gnu_files.
	(class_gnu_files): New macro.
	(class_files): Use it.
	(src_gnu_files): New macro.
	(gnu.o): New target.
	(javao_files): Added gnu.o.

	* gnu/gcj/text/LocaleData_en_US.java: New file.
	* gnu/gcj/text/LocaleData_en.java: New file.
	* java/text/DecimalFormatSymbols.java: Import ResourceBundle.
	(DecimalFormatSymbols): Use ResourceBundle to find resources.
	(safeGetString): New method.
	(safeGetChar): Likewise.

1999-03-03  Tom Tromey  <tromey@cygnus.com>

	* java/text/NumberFormat.java (INTEGER_FIELD, FRACTION_FIELD): New
	constants.

	* java/text/FieldPosition.java (equals): Don't check for null
	object; instanceof does this.

	* java/util/Locale.java (clone): New method.
	(equals): Likewise.

Wed Mar  3 17:20:15 1999  Anthony Green  <green@cygnus.com>

	* doc/cni.sgml: New file.

1999-03-03  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_Abort): Mention libgcj, not libjava.

	* java/text/DecimalFormatSymbols.java: New file.

1999-03-02  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFileDescriptorPosix.cc: Include sys/filio.h if it
	exists.
	* configure: Rebuilt.
	* configure.in: Check for sys/filio.h.

	* java/lang/Runtime.java (checkLink): Throw NullPointerException
	if required.
	(load): Always throw UnsatisfiedLinkError.
	(loadLibrary): Likewise.

1999-03-02  Anthony Green  <green@cygnus.com>

	* LIBGCJ_LICENSE: New file.
	* LIBJAVA_LICENSE: Removed.
	* Many files: libjava now libgcj.
	
1999-03-02  Tom Tromey  <tromey@cygnus.com>

	* include/java-chartables.h: Rebuilt.
	* chartables.pl (print_block): Make table `const'.
	(print_numerics): Likewise.
	(print_single_map): Likewise.
	(print_all_block): Likewise.
	(print_case_table): Likewise.
	(print_fast_tables): Likewise.
	* java/lang/natCharacter.cc (table_search): `table' argument now
	const.

1999-03-01  Tom Tromey  <tromey@cygnus.com>

	* java/util/Date.java (before, after): Inverted logic.

	* java/util/Date.java (parse): Handle case where first character
	in string is open parenthesis.
	(skipParens): Rewrote.

	* java/lang/reflect/natArray.cc: Include <stdlib.h>.
	* java/lang/reflect/natField.cc: Include <stdlib.h>.

	* java/util/Date.java (parse): Correctly compute beginning of
	punctuation.

	* java/util/Hashtable.java (get): Throw NullPointerException if
	key is null.
	(containsKey): Likewise.

	* java/util/Properties.java (list): Truncate value to 37
	characters and add `...'.

	* java/lang/Byte.java (parseByte): Pass `radix' to
	Integer.parseInt.

	* prims.cc (_Jv_Abort): In non-DEBUG case, use System.err, not
	fprintf.
	Include System.h, PrintStream.h.

	* java/lang/natSystem.cc (init_properties): Don't use malloc,
	realloc, or free.

	* java/lang/natSystem.cc (init_properties): Use getpwuid_r if it
	exists.
	* configure: Rebuilt.
	* configure.in: Check for getpwuid_r.  Look for `pwd.h', not
	`pwd.d'.

	* mauve-libjava: Omit AttibutedCharacterIterator, ACIAttribute.

	* java/lang/SecurityManager.java: Import java.net.*.
	(checkMulticast): New methods.

Fri Feb 26 14:54:52 1999  Per Bothner  <bothner@cygnus.com>

	* Makefile.am, Makefile.in (java/lang/reflect/Method.h):  New rule.
	(nat_files):  Add java/lang/reflect/natArray.o.
	(nat_headers):  Add Field.h and NoSuchFieldException.h.
	
	* include/java-field.h (_Jv_GetStaticLongField, _Jv_GetStaticIntField,
	_Jv_GetStaticShortField, _Jv_GetStaticByteField):  New inline methods.
	(_Jv_FromReflectedField):  Fix buglet.
	* include/jvm.h (_Jv_NewMultiArray):  New declaration.
	* include/java-assert.h (JvFail):  Pass message string to _Jv_Abort.
	* prims.cc (_Jv_Abort):  Include message in print-out.

	* prims.cc (_Jv_equal):  New method (compare Utf8Const and jstring).
	(new_multi_array):  Rename to _Jv_NewMultiArray.  Make non-static.
	* include/jvm.h (_Jv_NewMultiArray, _Jv_equal):  New declarations.

	* configure.in (AC_CHECK_HEADERS), configure:  Add pwd.h.
	* include/config.h.in (HAVE_PWD_H):  New feature macro.
	* java/lang/natSystem.cc (init_properties):  Set file.encoding,
	user.name, user.home, user.dir.

	* java/lang/reflect/Array.java:  New class.
	* java/lang/reflect/natArray.cc:  New native methods.
	* include/javaprims.h:  Declare java::lang::reflect::Array.

	* java/lang/Class.h (getField):  New private method.  Add friends.
	* java/lang/Class.java (getField):  Add private overload.
	* java/lang/natClass.cc (getField, getField, getDeclaredField,
	getDeclaredMethods):  Add working implementations.
	* java/lang/reflect/Field.java, java/lang/reflect/natField.cc:
	Finish implementation, except for access control.

	* java/lang/reflect/Modifier.java (toString):  New overload.
	* include/java-method.h:  New file.
	* java/lang/reflect/Method.java (index):  Replaced by offset field.
	Remove various private fields - get them from _Jv_Field instead.
	* java/lang/reflect/natMethod.cc (getModifiers, getName, getType):
	New method implementations.

	* java/text/NumberFormat.java:  Add a bunch of methods.

Mon Feb 22 17:52:34 1999  Per Bothner  <bothner@cygnus.com>

	* java/lang/StringBuffer.java (getChars):  Fix bounds checks.

1999-02-26  Tom Tromey  <tromey@cygnus.com>

	* include/config.h.in: Rebuilt.
	* acconfig.h (GETHOSTBYNAME_R_RETURNS_INT,
	GETHOSTBYADDR_R_RETURNS_INT, HAVE_GETHOSTBYNAME_R,
	HAVE_GETHOSTBYADDR_R): New defines.
	* java/net/natInetAddress.cc (lookup): Use gethostbyname_r and
	gethostbyaddr_r if available.
	Include <errno.h>.
	* configure: Rebuilt.
	* configure.in: Check for gethostbyname_r, gethostbyaddr_r.

	* java/net/natInetAddress.cc (aton): Use _Jv_AllocBytesChecked.
	Don't use JvFree.
	(lookup): Likewise.
	Include <jvm.h>.
	* include/jvm.h (_Jv_AllocBytesChecked): Declare.
	* prims.cc (_Jv_AllocBytesChecked): New function.

	* Makefile.in: Rebuilt.
	* Makefile.am (SUBDIRS): Removed `test'.
	* configure: Rebuilt.
	* configure.in: Don't build test/Makefile.
	* test/*: Removed all files.

Thu Feb 25 17:27:37 1999  Warren Levy  <warrenl@cygnus.com>

	* java/lang/reflect/Constructor.java: Make class final to match spec.
	* java/lang/reflect/Method.java: Ditto.

1999-02-25  Tom Tromey  <tromey@cygnus.com>

	* java/net/natInetAddress.cc: Include <sys/types.h> before
	<sys/socket.h>.
	* java/net/natPlainSocketImpl.cc: Include <sys/types.h> before
	<sys/socket.h>.

	* java/net/natInetAddress.cc: Declare gethostname if required.
	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_GETHOSTNAME_DECL): New define.
	* configure: Rebuilt.
	* configure.in: Define HAVE_GETHOSTNAME_DECL when gethostname is
	declared in unistd.h.

1999-02-24  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (java/io/FileDescriptor.h): Removed target.
	* java/io/FileDescriptor.java (FileDescriptor): Changed protection
	from private to "none".

	* include/javaprims.h: Regenerated class declarations with new
	classes.pl.
	* classes.pl (scan): Only generate decls for java.lang, java.io,
	and java.util.

1999-02-24  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_InitThreads): Mask SIGINT in all threads.
	(_Jv_ThreadWait): Allow SIGINT to be delivered to waiting thread.

1999-02-23  Tom Tromey  <tromey@cygnus.com>

	* java/util/natGregorianCalendar.cc (_REENTRANT): Only define if
	not already defined.
	* java/io/natFile.cc (_REENTRANT): Only define if not already
	defined.
	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_BOEHM_GC): New define.
	* configure: Rebuilt.
	* configure.in: Define HAVE_BOEHM_GC if using it.
	* posix-threads.cc: Include boehm-config.h and gc.h if
	HAVE_BOEHM_GC.
	* include/posix-threads.h: Added explanatory note about Boehm GC.

	* java/io/BufferedReader.java (readLine): Only return null when
	EOF seen before any characters read.  (In particular, an empty
	line should not return null.)

	* java/io/BufferedInputStream.java (read): Only refill once per
	invocation.

	* mauve-libjava: Added java.text.StringCharacterIterator.iter,
	java.lang.Character.classify12, java.lang.String.hash,
	java.text.FieldPosition.Test, java.text.ParsePosition.Test,
	java.text.SimpleDateFormat.getAndSet2DigitYearStart

	* java/text/StringCharacterIterator.java (setIndex): No error if
	index == end.
	(next): Check for `pos == end', not `end - 1'.
	(StringCharacterIterator): Allow `pos == end'.  Explicitly check
	for null text in each constructor.
	(clone): Fixed order of arguments to constructor.

1999-02-22  Tom Tromey  <tromey@cygnus.com>

	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_INET6): New define.
	(HAVE_SOCKLEN_T): Likewise.
	* java/net/PlainSocketImpl.java: Added copyright header.
	* java/net/natPlainSocketImpl.cc: Added copyright header.
	(union SockAddr): Use HAVE_INET6, not AF_INET6.
	(bind): Likewise.
	(connect): Likewise.
	(accept): Likewise.
	(socklen_t): New typedef.
	(accept): Use socklen_t.
	* java/net/natInetAddress.cc: Added copyright header.
	(HAVE_GETHOSTNAME): Don't define.
	(HAVE_INET_ADDR): Likewise.
	(lookup): Fixed typo.
	(aton): Don't use `address' as name of local variable.
	(lookup): Use HAVE_INET6, not AF_INET6.

	* configure: Rebuilt.
	* configure.in: Look for functions inet_aton, inet_addr,
	gethostname, inet_pton, uname.  Check for sockaddr_in6 structure.
	Check for socklen_t typedef.

	* exception.cc (__throw): Declare as __noreturn__.

Mon Feb 22 15:27:35 1999  Per Bothner  <bothner@cygnus.com>

	* Makefile.am, Makefile.in:  Also build java/net.
	(java/io/FileDescriptor.h):  Add friend java::net::PlainSocketImpl.

	* java/io/natFile.cc: #define _POSIX_PTHREAD_SEMANTICS and _REENTRANT.
	* java/util/natGregorianCalendar.cc:  #define _REENTRANT.

	* prims.cc (_Jv_malloc, _Jv_Free):  New functions.
	* include/cni.h (JvMalloc, JvFree):  New inline functions.
	(JvThrow):  Add __noreturn__ attribute.
	* include/javaprims.h (_Jv_Malloc, _Jv_Free):  New declarations.
	(_Jv_Throw):  Add __noreturn__ attribute.

	* java/net/PlainSocketImpl.java:  Init fnum to -1.
	* java/net/ServerSocket.java:  Add missing throws clauses.
	* java/lang/Socket.java:  For the constructor taking a SocketImpl,
	don't call create on the latter.  Instead, other constructors
	have to explicitly call SocketImpl.create.
	* java/net/natPlainSocketImpl.cc (accept):  Change variable addrlen
	from size_t to int, to match ::accept prototype.
	* java/net/natInetAddress.cc:  Use JvFree rather than free.


1999-02-22  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h: Added new classes.
	* java/text/StringCharacterIterator.java: New file.
	* java/text/CharacterIterator.java: New file.

	* java/text/ParseException.java (errorOffset): Now private.

Mon Feb 22 12:54:53 1999  Per Bothner  <bothner@cygnus.com>

	* java/net:  New package.
	* java/net/{InetAddress.java,PlainSocketImpl.java,ServerSocket.java,
	Socket.java,SocketException.java,SocketImpl.java,
	SocketImplFactory.java,UnknownHostException.java,natInetAddress.cc,
	natPlainSocketImpl.cc}:  New classes.

	* configure.in (AC_CHECK_HEADERS):  Also check for <sys/socket.h>,
	<netinet.in.h>, <arpa/inet.h> and <netdb.h>.
	* include/config.h.in:  Add place-holders for HAVE_ARPA_INET_H,
	HAVE_NETDB_H, HAVE_NETINET_IN_H, and HAVE_SYS_SOCKET_H.

	* classes.pl:  Translate package into "namespace", not "class".
	* include/javaprims.h:  Update class list, using "namespace".

1999-02-21  Tom Tromey  <tromey@cygnus.com>

	* java/util/natGregorianCalendar.cc (_POSIX_PTHREAD_SEMANTICS):
	Define when appropriate.

1999-02-20  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (_Jv_GetStringUTFRegion): Encode \u007f
	as a single byte and \u07ff as two bytes.
	(_Jv_GetStringUTFLength): Likewise.
	* include/jvm.h (UTF8_GET): Mask first byte of 3-byte encoding
	with 0x0f, not 0x1f.

1999-02-19  Tom Tromey  <tromey@cygnus.com>

	* java/io/DataOutputStream.java (writeUTF): When encoding
	character as 3 bytes, `or' first byte with 0xe0, not 0xc0.
	* java/io/DataInputStream.java (readUTF): Mask second byte of
	3-byte character with 0x3f, not 0x1f.

	* java/io/DataInputStream.java (readLong): Cast result of
	readUnsignedByte to long before using.

	* java/io/FileInputStream.java (finalize): Only finalize `fd' if
	it is not null.

	* mauve-libjava: Re-enabled java.io.DataInputOutput.
	* include/no-threads.h (_Jv_ThreadInterrupt): Removed name of
	argument to avoid warning.
	* include/quick-threads.h (_Jv_ThreadInterrupt): Removed name of
	argument to avoid warning.

1999-02-18  Tom Tromey  <tromey@cygnus.com>

	* mauve-libjava: Omit java.io.DataInputOutput and
	java.io.Utf8Encoding.

1999-02-17  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added InterruptedIOException.h.
	* java/io/natFileDescriptorPosix.cc: Include
	InterruptedIOException.h, Thread.h.
	(write): Throw InterruptedIOException when required.
	(read): Likewise.
	* posix-threads.cc: Include <signal.h>.
	(_Jv_ThreadInterrupt): New function.
	(INTR): New define.
	(handle_intr): New function.
	(_Jv_InitThreads): Register handle_intr via sigaction.
	* java/lang/natThread.cc (interrupt): Call _Jv_ThreadInterrupt.
	* include/posix-threads.h (_Jv_ThreadInterrupt): Declare.
	* include/quick-threads.h (_Jv_ThreadInterrupt): New function.
	* include/no-threads.h (_Jv_ThreadInterrupt): New function.

1999-02-19  Andrew Haley  <aph@cygnus.com>

	* java/lang/ThreadGroup (setMaxPriority): Set the maximum priority
	of subgroups.
	(ThreadGroup (int)): Set the maximum priority of the initial
	ThreadGroup.

1999-02-18  Andrew Haley  <aph@cygnus.com>

	* java/lang/natClass.cc (forName): Check for the case where a
	classname is the name of an array and call FindClassFromSignature
	to find the Class.

1999-02-18  Andrew Haley  <aph@cygnus.com>

	* java/lang/StringBuffer (insert (int, String)): Move up any
	characters above the insert position and increase the length of
	the string buffer by the length of the argument.
	(insert (int, char[])): Likewise.
	(insert (int, char)): Likewise.
	(StringBuffer (String)): The initial capacity of the string buffer
	is 16 plus the length of the argument.
	(getChars): Add a JDK 1.2 FIXME.

1999-02-18  Andrew Haley  <aph@cygnus.com>

	* java/lang/Short.java (parseShort(String, int)): Pass radix to
	Integer.parseInt.

1999-02-18  Andrew Haley  <aph@cygnus.com>

	* java/lang/Double.java (equals): Use a bit-by-bit comparision
	instead of floating-point equality.  This is necessary for
	correct floating-point Hashtables.
	* java/lang/Float.java (equals): Ditto.

1999-02-16  Tom Tromey  <tromey@cygnus.com>

	* java/util/Properties.java (list): Truncate value to 37
	characters and add "...".

1999-02-16  Tom Tromey  <tromey@cygnus.com>

	* java/util/Vector.java (Vector): Throw IllegalArgumentException
	if initCap is negative.
	(contains): Implement JDK1.2-style handling of null argument.
	(removeElement): Likewise.
	(indexOf): Likewise.  Also, correctly handle case where idx is
	negative.
	(lastIndexOf): Likewise.

1999-02-16  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (init): Increment source pointer in
	loop.

1999-02-16  Tom Tromey  <tromey@cygnus.com>

	* exception.cc: Include NullPointerException.h.
	(_Jv_Throw): If `value' is NULL, throw a NullPointerException.

1999-02-16  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (AUTOMAKE_OPTIONS): Added `no-installinfo.

Sat Feb 13 20:25:09 1999  Bonzo Armstrong  <bonzo@cygnus.com>

	* configure.in: Don't undefine EH_COMMON_INCLUDE just because
	we're compiling canadian.
	* configure: Regenerated.

1999-02-12  Andrew Haley  <aph@cygnus.com>
 
	* java/lang/sf_rint.c: Resurrected.  This file shouldn't have been
	deleted from libgcj.

1999-02-12  Tom Tromey  <tromey@cygnus.com>

	* exception.cc (_Jv_eh_alloc): Use _Jv_AllocBytes, not malloc.
	(_Jv_eh_free): Don't call free.
	Don't declare malloc or free.

1999-02-11  Tom Tromey  <tromey@cygnus.com>

	* configure.host: Use `libgcj', not `libjava'.  Removed `echo'.

1999-02-11  Andrew Haley  <aph@cygnus.com>

	* ef_fmod.c, sf_ceil.c, sf_fabs.c, sf_floor.c, sf_rint.c,
	wf_fmod.c: Deleted.  These are all files from fdlibm which aren't
	needed by java.lang.*.
	* Makefile.am: ef_fmod.o, sf_ceil.o, sf_fabs.o, sf_floor.o, sf_rint.o,
	wf_fmod.o: Removed from libjava.a.

1999-02-11  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h: Reverted previous change; with it
	exception.cc can't compile.

	* include/javaprims.h (_Jv_Throw): Mark as noreturn.

	* include/config.h.in: Rebuilt.
	* include/posix-threads.h (_Jv_ThreadYield): Conditionalize on
	HAVE_SCHED_YIELD.
	* configure: Rebuilt.
	* configure.in: Check for sched_yield.  Look in thread library for
	all thread functions.

	* posix-threads.cc (_Jv_MutexInit): Handle case where system has
	no recursive mutexes.
	(_Jv_MutexDestroy): Define when required.
	(_Jv_MutexLock): Likewise.
	(_Jv_MutexUnlock): Likewise.
	(_Jv_CondWait): Conditionalize on HAVE_RECURSIVE_MUTEX.
	* include/posix-threads.h (HAVE_RECURSIVE_MUTEX): New define.
	(_Jv_Mutex_t): New structure.
	(_Jv_MutexDestroy): Only define if recursive mutexes available.
	(_Jv_MutexLock): Likewise.
	(_Jv_MutexUnlock): Likewise.

1999-02-10  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure, Makefile.in: Rebuilt.
	* acinclude.m4: Renamed libjava to libgcj.  Updated to use
	automake 1.4.
	* configure.in: Changed to track library changes.
	* Makefile.am (toollib_LIBRARIES): Renamed libjava to libgcj.
	(AM_CXXFLAGS): Likewise.
	(data_DATA): Likewise.
	(AM_CFLAGS): Likewise.
	(JC1FLAGS): Likewise.
	(libgcj_a_SOURCES): Likewise.
	(EXTRA_libgcj_a_SOURCES): Likewise.
	(libgcj_a_DEPENDENCIES): Likewise.
	(libgcj_a_LIBADD): Likewise.
	(libgcj.zip): Likewise.
	(CLEANFILES): Likewise.
	($(nat_headers)): Likewise.
	(java/lang/FirstThread.h): Likewise.
	(java/lang/ThreadGroup.h): Likewise.
	(java/lang/String.h): Likewise.
	(java/lang/reflect/Field.h): Likewise.
	(BUILT_SOURCES): Likewise.
	(maintainer-check): Likewise.
	(CONFIG_STATUS_DEPENDENCIES): Likewise.
Tue Feb  9 11:06:38 1999  Anthony Green  <green@cygnus.com>

	* java/util/natGregorianCalendar.cc (computeFields): Only use
 	gmtime_r and localtime_r when configured for posix threads.

	* java/io/natFile.cc (get_entry): Only use readdir_r when
 	configured for posix threads.

	* java/util/natGregorianCalendar.cc: Update copyright notice.
	* java/util/TimeZone.java: Ditto.
	* java/util/SimpleTimeZone.java: Ditto.

1999-02-08  Tom Tromey  <tromey@cygnus.com>

	* java/io/PrintStream.java (line_separator): New constant.
	(print): Use line_separator, not `file.separator' property.
	(println): Use line_separator.

	* java/lang/natClass.cc (newInstance): Throw IllegalAccessError
	when trying to instantiate Class.

	* java/lang/ThreadGroup.java (ThreadGroup): Throw
	NullPointerException if argument is null.

	* java/lang/Thread.java (setName): Throw NullPointerException, not
	IllegalArgumentException.
	(Thread): Likewise.

1999-02-08  Andrew Haley  <aph@cygnus.com>

	* java/lang/natClass.cc (newInstance): Don't allow anyone to
	create new Classes with Class.newInstance().

	* java/lang/natClass.cc (_Jv_FindArrayClass): Only add a
	semiciolon to end of an array Class's signature if the elements of
	the array aren't themselves arrays.

	* java/lang/natSystem.cc (arraycopy): The size of an element of an
	array of objects is always sizeof(jobject), not the size of the
	object to which the reference points.

1999-02-08  Tom Tromey  <tromey@cygnus.com>

	* java/util/BitSet.java (and): Throw NullPointerException when
	required.
	(or): Likewise.
	(xor): Likewise.

	* java/util/BitSet.java (BitSet): Throw NegativeArraySizeException
	if argument is negative.
	(clear): Correctly compute `offset'.  Throw
	IndexOutOfBoundsException when required.
	(set): Likewise.
	(get): Likewise.  Also, return correct value.
	(ensure): Changed meaning of argument.
	(toString): Wrap contents in `{}'; put spaces after commas.
	(hashCode): Don't try to examine elements off the end of array.
	(or): Correctly include bits past the end of this bit set.
	(xor): Likewise.

Thu Feb  4 12:48:03 1999  Warren Levy  <warrenl@cygnus.com>

	* configure.host (mips-tx39-*): Use jmr3904dram.ld link script 
	instead of the jmr3904app.ld script (i.e. use DRAM instead of SRAM).

1999-02-04  Andrew Haley  <aph@cygnus.com>

	* java/lang/natClass.cc (Class::forName): Remove code which mapped
	'/' in signatures to '.'
	(Class::getName): Likewise,
	(_Jv_FindArrayClass): Add a semiciolon to end of an array Class's
	signature.
	* java/lang/natFirstThread.cc (run): Change '/' in main's
	signature to '.'.

1999-02-03  Andrew Haley  <aph@cygnus.com>

	* configure.host: -ffloat-store added when compiling libjava on
	x86.  fdlibm apparently relies on this.

	* java/lang/ThreadGroup.java (add): throw an exception if the
	ThreadGroup has been destroyed.

	* java/lang/natMath.cc (round): Ensure correct NaN and overflow
	behaviour.

1999-01-27  Tom Tromey  <tromey@cygnus.com>

	* java/lang/StringBuffer.java (StringBuffer): Handle null
	argument.

1999-01-21  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natFirstThread.cc (run): Don't require main to be
	public.

Wed Jan 20 15:44:56 1999  Anthony Green  <green@cygnus.com>

	* boehm.cc (_Jv_InitGC): Clear out the free lists correctly.

1999-01-20  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (_Jv_StringFindSlot): Synchronize on
	StringClass.
	(rehash): Likewise.
	(intern): Likewise.
	(unintern): Likewise.
	(_Jv_NewStringUtf8Const): Likewise.

	* java/text/SimpleDateFormat.java (format): Use [a-zA-z], not
	Character.isLetter, to see if character is self-quoting.  Also,
	correctly handle quoted characters.
	(parse): Fixed typo.  Also now throws ParseException.

1999-01-15  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natObject.cc (INIT_NEEDED): Added missing close paren.

	* java/lang/natObject.cc (INIT_NEEDED): Added cast in case where
	_Jv_SyncInfo has `init' member.

	* include/quick-threads.h (_Jv_MutexUnlock): Return result of
	coop_mutex_unlock.

	* java/lang/natObject.cc (_Jv_MonitorExit): Throw
	IllegalMonitorStateException if unlock fails.

	* prims.cc (_Jv_NewPrimArray): Assume allocated memory is all
	zero.
	(_Jv_NewObjectArray): Likewise.

1999-01-14  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Character.java (isJavaIdentifierPart): Allow
	LETTER_NUMBER characters.

	* chartables.pl (process_char): Fixed error messages.

	* include/java-chartables.h: Rebuilt with UniData 2.1.8.
	* chartables.pl: Updated comments.  Changed detection of non-digit
	numeric values (no longer miss \u00b2 and friends).

	* java/lang/Character.java (isJavaIdentifierPart): Recognize
	currency symbols and connector punctuation.
	(isIdentifierIgnorable): Make 7f-9f ignorable.

	* prims.cc (_Jv_NewObjectArray): Check for overflow.
	(_Jv_NewPrimArray): Likewise.
	(SIZE_T_MAX): New define.

	* java/lang/ClassLoader.java (system): Now private and final.

	* boehm.cc (_Jv_MarkObj): Handle case where object's class is
	null.

	* configure: Rebuilt.
	* configure.in (EH_COMMON_INCLUDE): Add -I for `../include' as
	well.
	* exception.cc: Include gansidecl.h.

1999-01-14  Andrew Haley  <aph@cygnus.com>

	* java/lang/Math.java, java/lang/natMath.cc: min and max routines
	corrected: they didn't treat -0.0 and NaNs correctly.

Wed Jan 13 13:32:22 1999  Anthony Green  <green@cygnus.com>

	* nogc.cc: Use calloc to zero out memory.

1999-01-11  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natClass.cc (isInstance): Return false if this class
	is primitive, not if class of `obj' is primitive.
	(_Jv_IsInstanceOf): Rewrote to use Class.isInstance.

	* java/io/SequenceInputStream.java (close): Handle case where `in'
	is already null.

	* java/text/DateFormat.java (format): New method.

	* mauve-libjava: Omit java.text.DateFormat.

1999-01-08  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (_Jv_ThreadInitData): Removed name of unused
	argument.
	* include/posix-threads.h (_Jv_CondNotify): Removed name of unused
	argument.
	(_Jv_CondNotifyAll): Likewise.

	* configure: Rebuilt.
	* configure.in: Change --enable-source-compilation logic to work
	correctly.

1999-01-07  Andrew Haley  <aph@cygnus.co.uk>

	* Makefile.am (AM_MAKEFLAGS): Remove RUNTEST, EXPECT, 
	and RUNTESTFLAGS from AM_MAKEFLAGS.
	* configure.in: AM_RUNTESTFLAGS added.
	* configure.host: AM_RUNTESTFLAGS added.
	* Makefile.in, test/Makefile.in, testsuite/Makefile.in: rebuilt.
	* configure: rebuilt.
	* testsuite/Makefile.am: RUNTESTFLAGS set from AM_RUNTESTFLAGS.

	* testsuite/libjava.mauve/DejaGNUTestHarness.java (main): use of
	argv[] made conditional because embedded targets may not have
	argv[].
	* testsuite/libjava.mauve/DejaGNUTestHarness.java (main):
	explanatory comments added in call to super.

	* testsuite/libjava.mauve/test.exp (test_mauve): Test for an
	exception thrown in the test harness itself added.
	* testsuite/libjava.mauve/test.exp (test_mauve_sim): New routine.

Wed Jan  6 17:27:39 1999  Per Bothner  <bothner@cygnus.com>

	* java/text/DateFormatSymbols.java (zoneStringsDefault):  Make static.

1999-01-06  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFile.cc (get_entry): New function.
	(performList): Use get_entry.
	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_READDIR_R): New define.
	* configure: Rebuilt.
	* configure.in: Look for readdir_r.

	* java/util/natGregorianCalendar.cc (computeFields): Fixed comment.

	* java/util/natDate.cc: Added copyright header.

1999-01-05  Tom Tromey  <tromey@cygnus.com>

	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_ACCESS, HAVE_STAT, HAVE_REALPATH, HAVE_MKDIR,
	HAVE_REALPATH, HAVE_RMDIR, HAVE_UNLINK): New macros.
	* configure: Rebuilt.
	* configure.in: Check for access, stat, mkdir, rename, rmdir,
	unlink, and realpath.
	* java/io/natFile.cc (access): Conditionalize on HAVE_ACCESS.
	(stat): Conditionalize on HAVE_STAT.
	(attr): Likewise.
	(getCanonicalPath): Conditionalize on HAVE_REALPATH.
	(performMkdir): Conditionalize on HAVE_MKDIR.
	(performRenameTo): Conditionalize on HAVE_RENAME.
	(performDelete): Conditionalize on HAVE_RMDIR and HAVE_UNLINK.

	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_GMTIME_R, HAVE_LOCALTIME_R): New defines.
	* configure: Rebuilt.
	* configure.in: Check for gmtime_r and localtime_r.  For cross
	builds, assume they exist.

	* mauve-libjava: Include java.text.DateFormatSymbols again.
	* java/text/DateFormatSymbols.java (setLocalPatternChars): Renamed
	from setAmPmStrings.

	* mauve-libjava: Omit java.text.DateFormatSymbols.

1999-01-04  Tom Tromey  <tromey@cygnus.com>

	* java/io/PushbackReader.java: `off' already includes `numBytes'.

	* java/io/LineNumberReader.java (read): Decrement `count' in
	loop.

	* java/io/BufferedWriter.java (write): Correctly determine when
	incoming data would overrun buffer.  Flush buffer if write causes
	it to become full.

	* java/io/BufferedOutputStream.java (write): Increment `count'
	after copying data into buffer.

	* java/io/FilterOutputStream.java (close): Call flush first.

	* java/io/PipedReader.java (read): If read causes `out' to catch
	up with `in', then set `in' to -1.

	* java/io/LineNumberInputStream.java (read): If no bytes read,
	return -1.  If no bytes requested, return 0.

	* java/lang/StringBuffer.java (insert): If `str' is null, use
	string "null".

