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".

1998-12-30  Anthony Green  <green@cygnus.com>

	* README: Removed.
	* LIBJAVA_LICENSE, COPYING.LIB: Created.

1998-12-23  Tom Tromey  <tromey@cygnus.com>

	* java/io/PushbackInputStream.java (read): `off' already includes
	`numBytes'.

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

	* Makefile.in: Rebuilt.
	* Makefile.am (GCJ_canadian): Include target_alias.

	* java/lang/natFirstThread.cc (run): Require main's class to be
	public.

1998-12-16  Tom Tromey  <tromey@cygnus.com>

	* java/util/Locale.java (JAPAN): Language is `ja', not `jp'.

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

	* java/lang/natClass.cc (forName): Throw NullPointerException if
	argument is null.
	Include NullPointerException.h.

1998-12-14  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Character.java (Character): Implement Comparable.
	(compareTo): New methods.

	* java/util/Locale.java (CANADA, FRANCE, JAPAN): Now `final'.  Use
	correct country and language codes.
	(UK, US): New constants.
	(setDefault): Language codes are lower-case.

	* java/lang/natClass.cc (getDeclaredConstructor): New method.
	(getDeclaredConstructors): Likewise.
	(getDeclaredField): Likewise.
	(getDeclaredFields): Likewise.
	(getDeclaredMethod): Likewise.
	(getDeclaredMethods): Likewise.
	(getField): Likewise.
	(getFields): Likewise.
	(getMethod): Likewise.
	(getMethods): Likewise.
	* java/lang/Class.java: Declare new methods.
	* java/lang/Class.h: Declare new methods.

	* java/lang/natString.cc: Removed `#pragma implementation'.
	* include/cni.h (_Jv_GetStringChars): New function.
	* Makefile.in: Rebuilt.
	* Makefile.am (java/lang/String.h): Don't generate definition for
	_Jv_GetStringChars.

	* java/lang/natString.cc: Added `#pragma implementation'.

	* Makefile.in: Rebuilt.
	* Makefile.am (libjava.zip): Put build directory first in class
	path to avoid bug in compiler.

1998-12-14  Anthony Green  <green@cygnus.com>

	* java/util/Locale.java: Add CANADA, FRANCE and JAPAN.

	* include/javaprims.h: Add EventObject, ListResourceBundle and
	ResourceBundle.

1998-12-13  Anthony Green  <green@cygnus.com>

	* mauve-libjava: Run the ResourceBundle tests.

	* java/lang/natClass.cc (_Jv_FindClass): Don't fail when loader is
	NULL.

Sun Dec 13 18:11:21 1998  Per Bothner  <bothner@cygnus.com>

	* configure.in, configure:  Make --enable-gcj-classes and
	--enable-source-compilation the default.  (Nervously...)  Yeah!
	Based on a patch from Tom Tromey.

1998-12-13  Tom Tromey  <tromey@cygnus.com>

	* java/util/EventObject.java: New file.
	* java/util/EventListener.java: New file.

	* include/javaprims.h: Updated class declarations.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added Constructor.h.
	(java/lang/String.h): Don't inline String::length().
	* java/lang/Class.h (getConstructor, getConstructors): Declare.
	* java/lang/Class.java (initializeClass, hackRunInitializers,
	hackTrampoline): No need to mark `final'.
	(getConstructor, getConstructors): Declare.
	* java/lang/reflect/Field.java (equals): New method.
	* java/lang/natClass.cc (getConstructor): New method.
	(getConstructors): Likewise.
	Include Method.h, Field.h, Constructor.h.
	* java/lang/reflect/Constructor.java: New file.
	* java/lang/reflect/Method.java (toString): No space before open
	paren.
	(equals): Simplified.

1998-12-13  Anthony Green  <green@cygnus.com>

	* java/util/ResourceBundle.java: New file.
	* java/util/ListResourceBundle.java: New file.

1998-12-12  Tom Tromey  <tromey@cygnus.com>

	* java/lang/System.java (in, out, err): Now buffered streams by
	default.

	* include/javaprims.h: Updated class declarations.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added AccessibleObject.h, Method.h,
	InvocationTargetException.h, Void.h, Byte.h, Short.h, Integer.h,
	Long.h, Boolean.h.
	(nat_files): Added natMethod.o.
	* java/lang/reflect/natMethod.cc: New file.
	* java/lang/reflect/Field.java (Field): Now extends
	AccessibleObject.
	* java/lang/reflect/AccessibleObject.java: New file.
	* java/lang/reflect/InvocationTargetException.java: New file.

1998-12-11  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc, prims.cc, include/jvm.h, java/lang/Class.h,
	java/lang/Object.h, java/lang/natClass.cc, java/lang/natObject.cc:
	Renamed dtable -> vtable and _Jv_DispatchTable -> _Jv_VTable.

	* java/io/OutputStreamWriter.java (buffer): Size at 8192 bytes.

1998-12-09  Tom Tromey  <tromey@cygnus.com>

	* java/util/natDate.cc (_POSIX_THREAD_SEMANTICS): Define if
	HAVE_CTIME_R.

	* java/lang/natCharacter.cc (toTitleCase): Handle case where
	character is already titlecase.

	* java/lang/Character.java (isJavaLetter): Follow spec.
	(isJavaLetterOrDigit): Likewise.

	* java/util/GregorianCalendar.java (gregorianCutover): Append
	`L'.

	* java/lang/Character.java (isWhitespace): Use \r and not \u000d.

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

	* java/lang/reflect/Modifier.java (toString): Replace second
	`static' with `synchronized'.

	* java/lang/natObject.cc (_Jv_FinalizeObject): Call hack12_6.
	* java/lang/Object.h (Object::hack12_6): Declare.
	* java/lang/Object.java (hack12_6): New function.

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

	* include/java-array.h (__JArray::clone): Removed decl.
	* prims.cc (__JArray::clone): Removed.
	* java/lang/natObject.cc (clone): Incorporate code to clone an
	array.

	* java/lang/natClass.cc (_Jv_NewClass): Set class loader.
	(_Jv_FindArrayClass): Set dtable_method_count on new class.
	Correctly use dtable_method_count.

1998-12-07  Andrew Haley  <aph@cygnus.co.uk>

	* java/lang/Double.java (isInfinite, isNaN): Handle correct
	IEEE754 values.

1998-12-06  Anthony Green  <green@cygnus.com>

	* mauve-libjava: Don't test ResourceBundle.

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

	More JDK 1.2 spec fixes:
	* java/util/Date.java (millis): Now private.
	* java/text/DateFormat.java (DateFormat): Constructor now
	protected.
	* java/lang/Void.java (Void): New private constructor.
	* java/lang/System.java (System): New private constructor.
	* java/lang/SecurityManager.java (classLoaderDepth): Uncommented
	body.
	(currentClassLoader): New method.
	(currentLoadedClass): New method.
	* java/lang/Math.java (Math): New private constructor.
	* java/lang/Compiler.java (Compiler): New private constructor.
	* java/lang/Class.java (Class): New private constructor.
	* java/lang/Double.java (toString): Removed access specifier from
	two-argument `toString' method.

1998-12-04  Andrew Haley  <aph@cygnus.co.uk>

	* java/lang/s_rint.c (rint): Make the variable w volatile; this
	causes it to be flushed from an fp register (where it may be
	longer than double precision) to a double in memory.  This is
	essential to ensure correct rounding behaviour.
 
1998-12-04  Tom Tromey  <tromey@cygnus.com>

	* include/java-assert.h (_Jv_Abort): Declare as `noreturn'
	function.

	* java/lang/Character.java (isIdentifierIgnorable): Added comment
	explaining apparent divergence from JDK 1.2.

1998-12-04  Per Bothner  <bothner@cygnus.com>

	* include/no-threads.h:  Remove unused parameter names.
	This silences a bunch of warnings.

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

	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_CTIME_R): New symbol.

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

	* mauve-libjava: Added many more categories to reject.

	Changes to follow JDK1.2 spec:
	* java/lang/System.java (arraycopy, init_properties, checkSetIO,
	setErr, setIn, setOut): No need to be `final'.
	* java/lang/natObject.cc (wait): `nanos' argument is an int.
	* java/lang/Object.h (Object::wait): `nanos' argument is an int.
	* java/lang/Object.java (wait): `nanos' argument is an int.
	* java/lang/VirtualMachineError.java: Class is abstract.
	* java/lang/ThreadDeath.java: Made constructors public.
	* java/io/FileDescriptor.java (FileDescriptor): Added missing
	constructor.

Thu Dec  3 20:29:38 1998  Warren Levy  <warrenl@cygnus.com>

	* java/text/DateFormatSymbols.java (getAmPmStrings,
 	getLocalPatternChars, setShortWeekdays): Fixed typos in method names.

Thu Dec  3 19:21:53 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/RandomAccessFile.java (writeInt, writeLong, writeFloat,
 	writeDouble, writeByte, writeBytes, writeChar, writeChars,
 	writeShort, writeUTF): Added 'final' to signature to match JDK 1.1
 	and 1.2.

	* java/lang/IllegalThreadStateException.java
 	(IllegalThreadStateException): Changed extending class to match spec.

	* java/lang/NumberFormatException.java
	(java/lang/NumberFormatException): Changed extending class to match
 	spec.

	* java/util/Observer.java (Observer): Changed sig to match JCL.

Thu Dec  3 19:05:26 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/DataOutputStream.java (writeInt, writeLong, writeFloat,
 	writeDouble, writeBytes, writeChars, writeUTF): Added 'final' to
 	signature to match JDK 1.1 and 1.2.

Thu Dec  3 16:47:42 1998  Warren Levy  <warrenl@cygnus.com>

	* Makefile.am: Changed to use $(PERL) rather than hardcoded 'perl'.
	* configure.in (PERL): Added AC_CHECK_PROGS to look for installed perl.
	* Makefile.in, configure: Rebuilt.

	* java/text/ParsePosition.java (setErrorIndex): Fixed typo in method
	name.

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

	* mauve-libjava: New file.

	The remaining `-W -Wall' fixes:
	* java/lang/e_sqrt.c (__ieee754_sqrt): Added cast to unsigned to
	avoid warning.
	* java/lang/s_scalbn.c (scalbn): Added braces to avoid ambiguous
	`else'.
	* java/lang/s_floor.c (floor): Added cast to unsigned to avoid
	warning.
	* java/lang/e_pow.c (__ieee754_pow): Added cast to unsigned to
	avoid warning.
	* java/lang/e_log.c (__ieee754_log): Added braces to avoid
	ambiguous `else'.
	* java/lang/s_ceil.c (ceil): Cast `i1' to unsigned to avoid
	warning.
	* java/lang/e_atan2.c (__ieee754_atan2): Added parentheses per gcc
	suggestion.
	* java/lang/strtod.c (_strtod_r): Added parentheses per gcc
	suggestion.
	* java/lang/mprec.c (Balloc): Removed unused variable.
	(mult): Added parentheses per gcc suggestion.
	(pow5mult): Likewise.
	(lshift): Likewise.
	(ulp): Likewise.
	(b2d): Likewise.
	(d2b): Likewise.
	* java/lang/dtoa.c (_dtoa_r): Added some parentheses per gcc
	suggestion.  Added cast to `int' to avoid signed/unsigned
	comparison.
	* jni.cc (_Jv_JNI_GetSuperclass): Removed name of unused
	parameter.
	(IsAssignableFrom): Likewise.
	(_Jv_JNI_GetObjectField): Likewise.
	(_Jv_JNI_GetByteField): Likewise.
	(_Jv_JNI_GetShortField): Likewise.
	(_Jv_JNI_GetIntField): Likewise.
	(_Jv_JNI_GetLongField): Likewise.
	(_Jv_JNI_GetStringLength): Likewise.
	(_Jv_JNI_ToReflectedField): Likewise.
	(_Jv_JNI_FromReflectedField): Likewise.
	(_Jv_JNIFunctions): Uncommented IsAssignableFrom.

	* Makefile.in: Rebuilt.
	* Makefile.am (AM_CFLAGS): Define conditionally.
	(WARNINGS): New macro.
	(AM_CXXFLAGS): Include WARNINGS.
	* configure: Rebuilt.
	* configure.in (USING_GCC): New conditional.

	* prims.cc (_Jv_Abort): Declare twice, to avoid warnings.

	* java/lang/Character.java: Changed classification constants to
	type `byte' to match JDK 1.2 docs.

1998-12-01  Tom Tromey  <tromey@cygnus.com>

	Some fixes to be `-W -Wall' clean:
	* boehm.cc (_Jv_MarkObj): Removed name of unused parameter.
	(_Jv_MarkArray): Likewise.
	* java/lang/natCharacter.cc (to_lower_title): `i' is unsigned.
	(to_upper_title): Likewise.
	(isTitleCase): Likewise.
	(toTitleCase): Likewise.
	(getNumericValue): Likewise.
	(isLowerCase): Likewise.
	* java/lang/natString.cc (charAt): Don't cast `i' to unsigned
	(avoids compiler warning).
	* java/lang/natClass.cc (getDeclaredClasses): Always return a
	value.
	(getDeclaringClass): Likewise.
	(_Jv_LookupInterfaceMethod): Likewise.
	(_Jv_NewClass): Removed name of unused parameter.
	* exception.cc (_Jv_type_matcher): Removed unused variable.
	(_Jv_setup_eh_info): Removed name of unused parameter.
	* prims.cc (_Jv_NewArray): Always return a value.
	(_Jv_FindClassFromSignature): Likewise.
	* include/java-field.h (getNameUtf8Const): Removed name of unused
	parameter.
	* include/quick-threads.h (_Jv_ThreadInitData): Removed name of
	unused parameter.
	(_Jv_ThreadSetPriority): Likewise.

	* java/lang/natString.cc (hashChars): Now static.

	* java/lang/FirstThread.java (FirstThread): Now final.

	* java/io/File.java (performMkdir, performRenameTo): Now private.

	* java/lang/natSystem.cc (currentTimeMillis): Return a value even
	if no time function defined.

	* configure: Rebuilt.
	* configure.in: Look for ctime_r, ctime.
	* java/util/Date.java (toString): Now native.
	* java/util/natDate.cc (toString): Rewrote.

1998-11-27  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* Add LDFLAGS line to allow TX39 test cases to link when cross
	compiling.

1998-11-23  Anthony Green  <green@cygnus.com>

	* boehm.cc, chartables.pl, classes.pl, exception.cc, jni.cc,
	no-threads.cc, nogc.cc, posix-threads.cc, prims.cc,
	quick-threads.cc, include/boehm-gc.h, include/cni.h,
	include/java-array.h, include/java-assert.h, include/java-field.h,
	include/javaprims.h, include/jni.h, include/jvm.h,
	include/no-gc.h, include/no-threads.h, include/posix-threads.h,
	include/quick-threads.h, java/io/BufferedInputStream.java,
	java/io/BufferedOutputStream.java, java/io/BufferedReader.java,
	java/io/BufferedWriter.java, java/io/ByteArrayInputStream.java,
	java/io/ByteArrayOutputStream.java, java/io/CharArrayReader.java,
	java/io/CharArrayWriter.java,
	java/io/CharConversionException.java, java/io/DataInput.java,
	java/io/DataInputStream.java, java/io/DataOutput.java,
	java/io/DataOutputStream.java, java/io/EOFException.java,
	java/io/File.java, java/io/FileDescriptor.java,
	java/io/FileInputStream.java, java/io/FileNotFoundException.java,
	java/io/FileOutputStream.java, java/io/FileReader.java,
	java/io/FileWriter.java, java/io/FilenameFilter.java,
	java/io/FilterInputStream.java, java/io/FilterOutputStream.java,
	java/io/FilterReader.java, java/io/FilterWriter.java,
	java/io/IOException.java, java/io/InputStream.java,
	java/io/InputStreamReader.java,
	java/io/InterruptedIOException.java,
	java/io/LineNumberInputStream.java, java/io/LineNumberReader.java,
	java/io/OutputStream.java, java/io/OutputStreamWriter.java,
	java/io/PipedInputStream.java, java/io/PipedOutputStream.java,
	java/io/PipedReader.java, java/io/PipedWriter.java,
	java/io/PrintStream.java, java/io/PrintWriter.java,
	java/io/PushbackInputStream.java, java/io/PushbackReader.java,
	java/io/RandomAccessFile.java, java/io/Reader.java,
	java/io/SequenceInputStream.java, java/io/Serializable.java,
	java/io/StreamTokenizer.java,
	java/io/StringBufferInputStream.java, java/io/StringReader.java,
	java/io/StringWriter.java, java/io/SyncFailedException.java,
	java/io/UTFDataFormatException.java,
	java/io/UnsupportedEncodingException.java, java/io/Writer.java,
	java/io/natFile.cc, java/io/natFileDescriptorEcos.cc,
	java/io/natFileDescriptorPosix.cc,
	java/lang/AbstractMethodError.java,
	java/lang/ArithmeticException.java,
	java/lang/ArrayIndexOutOfBoundsException.java,
	java/lang/ArrayStoreException.java, java/lang/Boolean.java,
	java/lang/Byte.java, java/lang/Character.java, java/lang/Class.h,
	java/lang/Class.java, java/lang/ClassCastException.java,
	java/lang/ClassCircularityError.java,
	java/lang/ClassFormatError.java, java/lang/ClassLoader.java,
	java/lang/ClassNotFoundException.java,
	java/lang/CloneNotSupportedException.java,
	java/lang/Cloneable.java, java/lang/Comparable.java,
	java/lang/Compiler.java, java/lang/Double.java,
	java/lang/Error.java, java/lang/Exception.java,
	java/lang/ExceptionInInitializerError.java,
	java/lang/FirstThread.java, java/lang/Float.java,
	java/lang/IllegalAccessError.java,
	java/lang/IllegalAccessException.java,
	java/lang/IllegalArgumentException.java,
	java/lang/IllegalMonitorStateException.java,
	java/lang/IllegalStateException.java,
	java/lang/IllegalThreadStateException.java,
	java/lang/IncompatibleClassChangeError.java,
	java/lang/IndexOutOfBoundsException.java,
	java/lang/InstantiationError.java,
	java/lang/InstantiationException.java, java/lang/Integer.java,
	java/lang/InternalError.java, java/lang/InterruptedException.java,
	java/lang/LinkageError.java, java/lang/Long.java,
	java/lang/Math.java, java/lang/NegativeArraySizeException.java,
	java/lang/NoClassDefFoundError.java,
	java/lang/NoSuchFieldError.java,
	java/lang/NoSuchFieldException.java,
	java/lang/NoSuchMethodError.java,
	java/lang/NoSuchMethodException.java,
	java/lang/NullPointerException.java, java/lang/Number.java,
	java/lang/NumberFormatException.java, java/lang/Object.h,
	java/lang/Object.java, java/lang/OutOfMemoryError.java,
	java/lang/Process.java, java/lang/Runnable.java,
	java/lang/Runtime.java, java/lang/RuntimeException.java,
	java/lang/SecurityException.java, java/lang/SecurityManager.java,
	java/lang/Short.java, java/lang/StackOverflowError.java,
	java/lang/String.java, java/lang/StringBuffer.java,
	java/lang/StringIndexOutOfBoundsException.java,
	java/lang/System.java, java/lang/Thread.java,
	java/lang/ThreadDeath.java, java/lang/ThreadGroup.java,
	java/lang/Throwable.java, java/lang/UnknownError.java,
	java/lang/UnsatisfiedLinkError.java,
	java/lang/UnsupportedOperationException.java,
	java/lang/VerifyError.java, java/lang/VirtualMachineError.java,
	java/lang/Void.java, java/lang/natCharacter.cc,
	java/lang/natClass.cc, java/lang/natDouble.cc,
	java/lang/natFirstThread.cc, java/lang/natFloat.cc,
	java/lang/natMath.cc, java/lang/natObject.cc,
	java/lang/natRuntime.cc, java/lang/natString.cc,
	java/lang/natSystem.cc, java/lang/natThread.cc,
	java/lang/reflect/Field.java, java/lang/reflect/Member.java,
	java/lang/reflect/Modifier.java, java/lang/reflect/natField.cc,
	java/text/DateFormat.java, java/text/DateFormatSymbols.java,
	java/text/FieldPosition.java, java/text/Format.java,
	java/text/NumberFormat.java, java/text/ParseException.java,
	java/text/ParsePosition.java, java/text/SimpleDateFormat.java,
	java/util/BitSet.java, java/util/Calendar.java,
	java/util/ConcurrentModificationException.java,
	java/util/Date.java, java/util/Dictionary.java,
	java/util/EmptyStackException.java, java/util/Enumeration.java,
	java/util/GregorianCalendar.java, java/util/Hashtable.java,
	java/util/Locale.java, java/util/MissingResourceException.java,
	java/util/NoSuchElementException.java, java/util/Observable.java,
	java/util/Observer.java, java/util/Properties.java,
	java/util/Random.java, java/util/SimpleTimeZone.java,
	java/util/Stack.java, java/util/StringTokenizer.java,
	java/util/TimeZone.java, java/util/TooManyListenersException.java,
	java/util/Vector.java, java/util/natGregorianCalendar.cc:  Updated
	copyright notices.

	* exception.cc: Include eh-common.h instead of duplicating 
	code.

1998-11-23  Tom Tromey  <tromey@cygnus.com>

	* configure.host: Don't add `-O2' to libjava_flags.  Only add
	`-Os' to libjava_flags once.

1998-11-17  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* Makefile.am: add LIBJAVA_JAVAFLAGS.
	* Makefile.in: likewise
	* acconfig.h: add ECOS conditional for configure.h
	* config.h.in: likewise
	* configure: add test for --with-ecos
	* configure.in: likewise
	* java/io/natFileDescriptorEcos.cc (java::io::FileDescriptor::write):
	rename call to avoid name clash.
	* java/lang/natSystem.cc: add eCos clock support.
	* java/util/natGregorianCalendar.cc: add eCos support.
	
1998-11-20  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* Makefile.am, Makefile.in, configure.host: tx39 build option 
	"-G 0" added.

Wed Nov 18 18:55:25 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/BufferedReader.java: Added more comments for clarity.
	(mark): Used more mnemonic name for local var extraBuffSpace.

	* java/io/LineNumberReader.java (lineEnd): Removed method to avoid
	confusion with private method of same name in superclass.
	(skipRedundantLF): Set fields in special case to avoid infinite
	recursion.  Check if markPos has been invalidated in special case.
	(readLine): Rewritten to use readLine method of superclass.
	(skip): Incorporated code from lineEnd.

Wed Nov 18 02:46:03 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/BufferedReader.java (readLine): New method.
	(lineEnd): new private method.
	(mark): Track special case for readLine of getting '\r' at the
	end of the buffer.
	(reset): Ditto.
	(read): Ditto.
	(fill): Ditto.
	(skip): Ditto.

	* java/io/InputStreamReader.java (read): Return number chars skipped
	rather than requested.

	* java/lang/StringBuffer.java (append): Update count and differentiate
	between field and local variable.

	* java/util/Date.java (parseTz): Evaluate in minutes rather than
	seconds.  Deal with military style time.
	(parse): Consistently treat all timezones in minutes until final
	calculation.  Flag as non-local timezone.  Return value in milliseconds.
	(setTime): Adjust for year offset from 1900.
	(UTC): Adjust for year offset from 1900.

1998-11-17  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Switch on host, not target.

	* Makefile.in: Rebuilt.
	* Makefile.am (GCJ_no): New macro.
	(GCJ): Use @CANADIAN@.
	(GCJH_no): New macro
	(GCJH_canadian): New macro.
	(GCJH): Use @CANADIAN@.
	(ZIP_no): New macro.
	(ZIP_canadian): New macro.
	(ZIP): Use @CANADIAN@.
	* aclocal.m4, configure: Rebuilt.
	* configure.in (CANADIAN): Compute and subst.

Tue Nov 17 12:44:37 1998  Anthony Green  <green@cygnus.com>

	* java/io/FileDescriptor.java (finalize): Only close file
	descriptor if valid.

1998-11-17  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_InitRuntime): Removed.

1998-11-16  Tom Tromey  <tromey@cygnus.com>

	* java/io/FileOutputStream.java (close): Only close file
	descriptor if valid.
	(finalize): New method.

	* prims.cc (_Jv_NewObjectArray): Set vtbl last.
	(_Jv_NewPrimArray): Likewise.
	* boehm.cc (_Jv_RegisterFinalizer): Use
	GC_REGISTER_FINALIZER_NO_ORDER.
	(GC_GENERIC_MALLOC): New define.
	(_Jv_AllocObj): Use it.
	(_Jv_AllocArray): Likewise.
	(_Jv_AllocBytes): Likewise.
	(_Jv_MarkObj): Just return if vtbl not set.
	(_Jv_MarkArray): Likewise.
	(MAYBE_MARK): New macro; use everywhere.
	(_Jv_MarkObj): Mark fields belonging to superclasses as well.

Mon Nov 16 14:57:53 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/natGregorianCalendar.cc (computeTime): Cast a time_t
	to a jlong before calculation to prevent overflow.

1998-11-16  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Fixed typo.

1998-11-15  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Class.h (Class::getName): Removed definition.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added InstantiationException.h,
	NoSuchMethodException.h.
	* java/lang/natClass.cc (clinit_name): Renamed from init_name.
	(init_name): New global.
	(hackRunInitializers): Use clinit_name.
	Include InstantiationException.h, NoSuchMethodException.h.
	(newInstance): Do some error checking (but not all).  Call
	constructor.
	(forName): Throw exception if class not found.
	(getName): New method.
	(forName): Transform class name from external format to internal
	format before lookup.

1998-11-15  Anthony Green  <green@cygnus.com>

	* java/lang/Class.h (Class::forName): Method is static.

	* java/lang/natClass.cc (newInstance): Add simple implementation.
	(forName): Ditto.

Sat Nov 14 18:25:13 1998  Per Bothner  <bothner@cygnus.com>

	* java/lang/Class.h (Class::accflags):  Must be unsigned short (not
	int), for compatibility with jc1.

1998-11-14  Tom Tromey  <tromey@cygnus.com>

	* include/config.h.in: Rebuilt.
	* acconfig.h (LINUX_THREADS): New define.
	* configure: Rebuilt.
	* configure.in: Define LINUX_THREADS if using POSIX threads on
	Linux.  Look for pthread_mutexattr_setkind_np function.
	* posix-threads.cc (throw_cleanup): New function.
	(really_start): Push cleanup function.
	(_Jv_ThreadCancel): New function.
	(daemon_mutex, daemon_cond, non_daemon_count): New globals.
	(_Jv_ThreadInitData): Set `exception' field in new structure.
	(_Jv_ThreadStart): Increment non_daemon_count if not a daemon
	thread.
	(_Jv_ThreadWait): New function.
	(_Jv_InitThreads): Initialize daemon globals.
	(FLAG_DAEMON): New macro.
	(really_start): Notify daemon_cond when non-daemon thread exits.
	Include <java/lang/System.h>.
	(struct starter): `object' field now a thread.
	(_Jv_MutexInit): Use pthread_mutexattr_setkind_np if it exists.
	* include/posix-threads.h (_Jv_CondInit): Use `0', not NULL.
	(_Jv_ThreadWait): Removed definition.
	(_Jv_Thread_t): Added `exception' field.
	(_Jv_ThreadCancel): Removed definition.

1998-11-13  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (libjava.zip): Compute javac before changing
	directory.

	* Makefile.in: Rebuilt.
	* Makefile.am (libjava.zip): Include directory entries.

	* Makefile.in: Rebuilt.
	* Makefile.am (expanded): New macro.
	(GCJ): Use it.

1998-11-12  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (clone): New function.
	* include/java-array.h (__JArray::clone): Removed definition.

	* java/lang/natObject.cc (clone): Don't assert that class is not
	an array; array's `clone' method just calls this one.

	* Makefile.in: Rebuilt.
	* Makefile.am (libjava.zip): Renamed target from classes.stamp.
	Now creates zip file.  Changed all users.
	(ZIP): New macro.
	(data_DATA): New macro.

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

	* configure: Rebuilt.
	* configure.in: Recognize --enable-java-gc, not --enable-gc.

Wed Nov 11 18:13:46 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/InputStream.java (reset): Add msg to thrown exception.

Wed Nov 11 17:57:02 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/LineNumberInputStream.java: Rewritten.

	* java/io/StringBufferInputStream.java: Removed extraneous import.

Wed Nov 11 15:19:33 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/StringBufferInputStream.java: Rewritten.

	* java/util/Date.java (parseMonth): Optimize.
	(parseDayOfWeek): Created.
	(parse): Optimize to use parseDayOfWeek.

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

	* java/lang/StringBuffer.java (append): Handle case where STR is
	`null'.

	* include/javaprims.h: Regenerated class declarations.

	* configure: Rebuilt.
	* configure.in: Added --enable-gcj-classes,
	--enable-single-compilation, --enable-source-compilation flags.
	* Makefile.in: Rebuilt.
	* Makefile.am (java_io_files): New macro.
	(java_lang_files): Likewise.
	(java_text_files): Likewise.
	(java_util_files): Likewise.
	(java_files): Use new macros.
	(java-io.o): New target.
	(java-lang.o): Likewise.
	(java-text.o): Likewise.
	(java-util.o): Likewise.
	(src_io_files): New macro.
	(src_lang_files): Likewise.
	(src_text_files): Likewise.
	(src_util_files): Likewise.
	(class_io_files): New macro.
	(class_lang_files): Likewise.
	(class_text_files): Likewise.
	(class_util_files): Likewise.
	(class_files): Use new macros.
	(javao_files): Define conditionally.
	(.java.o): New target.
	($(javao_files)): New target.
	(GCJ): new macro.
	(GCJH): Added $(EXEEXT).
	(CLASSPATH_ENV): Removed.
	(GCJCOMPILE): New macro.

Wed Nov 11 12:03:15 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Date.java (parse): Written from scratch.

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

	* java/lang/Throwable.java (toString): Correct sense of test for
	determining when to include detail message in result.

	* java/lang/ThreadDeath.java (ThreadDeath): Added missing
	constructor.

Fri Nov  6 16:30:20 1998  Tom Tromey  <tromey@ferrule.cygnus.com>

	* java/lang/Class.h: Use _Jv_RegisterClasses, not
	_Jv_RegisterClass.
	* java/lang/natClass.cc (_Jv_RegisterClasses): New function.
	(_Jv_RegisterClass): Use it.
	* include/jvm.h (_Jv_RegisterClasses): Declare.
	* java/lang/natObject.cc (init): Removed.
	(sync_init): Never call _Jv_InitializeSyncMutex.
	(_Jv_InitializeSyncMutex): Don't set `init'.
	* prims.cc (JvRunMain): Don't run init functions.

Thu Nov  5 17:14:37 1998  Tom Tromey  <tromey@sanguine.cygnus.com>

	* java/lang/natClass.cc (initializeClass): Set state before
	resolving constants.

	* java/lang/natClass.cc (STATE_CONST_INIT): Removed.
	(STATE_RESOLVED): New macro.
	(initializeClass): Call resolveConstants.
	(hackRunInitializers): Don't call resolveConstants.
	(_Jv_FindArrayClass): Move short-circuit return for primitive
	element types earlier in function.

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

	* prims.cc (no_memory): New global.
	(_Jv_makeUtf8Const): Throw no_memory.
	(_Jv_AllocObject): Likewise.
	(_Jv_NewObjectArray): Likewise.
	(_Jv_NewPrimArray): Likewise.
	(JvRunMain): Initialize no_memory.

Tue Nov  3 17:15:45 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/FileInputStream.java: Corrected date comment.
	* java/io/SequenceInputStream.java: Rewritten.

Mon Nov  2 17:20:31 1998  Tom Tromey  (tromey@cygnus.com)

	* java/lang/FirstThread.java (die): New method.
	* java/lang/natFirstThread.cc (die): Removed.
	(DIE): New macro.
	(run): Use `DIE', not `die'.

Mon Nov  2 16:23:41 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/CharArrayReader.java (read): Move check into synchronized
	block to prevent a close while in progress.
	(reset): Ditto.
	(skip): Ditto.
	* java/io/PushbackReader.java (read): Ditto.
	(ready): Ditto.
	(unread): Ditto.
	* java/io/StringReader.java (mark): Ditto.
	(read): Ditto.
	(reset): Ditto.
	(skip): Ditto.

Mon Nov  2 15:56:20 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PipedInputStream.java: Updated status.
	(connect): Added code to prevent infinite recursion and to
	differentiate exception causes.
	(read): Added code to differentiate exception causes.
	(receive): Made exception pass string with the cause.

	* java/io/PipedOutputStream.java: Updated status.
	(connect): Added code to call connect at the other end of the pipe.

Mon Nov  2 00:22:12 1998  Warren Levy  <warrenl@cygnus.com>
	
	* java/io/PipedInputStream.java (connect): Throw exception if
	already connected to the same output stream.
	(read): Do bounds checking first.

Sun Nov  1 22:48:55 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PipedInputStream.java: Added private boolean outClosed.
	(available): Removed check if output stream is open.
	(close): Mark the buffer as empty so available returns 0.
	(read): Check if the output stream was closed and then return EOF
	when the buffer is empty.
	(receive): Mark the output stream as closed when passed a -1.

	* java/io/PipedOutputStream.java (close): Notify the input stream
	that there's no more data coming.
	(connect): Added a FIXME comment to note more coordination needed
	with PipedInputStream.
	(flush): Added a FIXME comment to mark what this method might do
	instead of nothing.

Fri Oct 30 14:27:21 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PipedInputStream.java: Rewritten.

1998-10-30  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Throwable.java: Rewrote from scratch.

	* java/lang/Class.h (Class): Don't mention newMultiArray.
	* prims.cc (newMultiArray): Removed.
	(_Jv_NewMultiArray): Removed.
	(newArray): Removed.
	(new_multi_array): New function.
	(_Jv_NewMultiArray): Rewrote from scratch.

	* include/javaprims.h: Regenerated class declarations.
	* classes.pl (scan): Don't declare PrimClass.
	* include/cni.h (JvPrimClass): Use new names for classes.
	* java/lang/Class.h (Class): Removed _Jv_initPrimClass as friend;
	added _Jv_PrimClass.
	* prims.cc (_Jv_PrimClass): Renamed from PrimClass.
	(_Jv_initPrimClass): Removed.
	(DECLARE_PRIM_TYPE): Generated globals now start with `_Jv_'.
	(_Jv_AllocObject): Added comment.
	(_Jv_NewObjectArray): Likewise.
	(_Jv_NewPrimArray): Likewise.

1998-10-29  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natClass.cc (_Jv_NewClass): Initialize new field.
	(_Jv_FindArrayClass): Use dtable_method_count to compute size of
	new dtable.
	* java/lang/Class.h (Class): Added `dtable_method_count' field.

	* java/lang/natObject.cc (init): New global.
	(sync_init): Call _Jv_InitializeSyncMutex if required.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added ClassLoader.h.
	* include/jvm.h (_Jv_FindClassFromSignature): Declare.
	* java/lang/Class.h (Class): simpleLookupClass, insertClass,
	internalAddClass, lookupArray no longer friends.
	_Jv_RegisterClass, _Jv_FindClassInCache, _Jv_NewClass,
	_Jv_FindArrayClass now friends.
	* java/lang/natClass.cc (HASH_LEN): New macro.
	(HASH_UTF): Likewise.
	(loaded_classes): New global.
	(_Jv_FindClass): New function.
	(ClassClass): New define.
	(_Jv_FindClassInCache): New function.
	(_Jv_RegisterClass): Likewise.
	(_Jv_NewClass): Likewise.
	Include <string.h>
	(ObjectClass): New define.
	(CloneableClass): New define.
	* prims.cc (_Jv_FindClass): Removed.
	(simpleLookupClass): Removed.
	(insertClass): Removed.
	(CLASSHASHSZ): Removed.
	(classPool): Removed.
	(_Jv_RegisterClass): Removed.
	(internalAddClass): Removed.
	(ClassClass): Removed.
	(RuntimeClass): Removed.
	(lookupArray): Removed.
	(CloneableClass): Removed.
	(CLASSMAXSIG): Removed.
	Rearranged file to group related functions together.
	(_Jv_IsInstanceOf): Moved to natClass.cc.
	(abort_final): Removed.
	Removed some unused includes.
	(classFromSig): Removed.
	(_Jv_FindClassFromSignature): New function.
	(_Jv_initPrimClass): Renamed.
	(getClass): Removed.

Thu Oct 29 23:17:17 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/FileDescriptor.java (finalize): Throws IOException
	instead of Throwable.

	* java/io/FileInputStream.java: Rewritten.

	* java/io/StreamTokenizer.java (nextToken): Unread newline character
	at the end of a comment.

1998-10-29  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h: Regenerated class declarations.
	* classes.pl (scan): Don't special-case ClassLoader.

	* prims.cc (processClass): Removed.
	(_Jv_InitClass): Removed.
	Removed all CSTATE_ macros.
	(resolveConstants): Removed.
	(MAXDIMS): Removed.
	(_Jv_NewMultiArray): Cleaned up.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added NoClassDefFoundError.h.
	* java/lang/Class.h (Class): Declare new methods.  processClass no
	longer a friend.
	* java/lang/Class.java (hackTrampoline): New method.
	(initializeClass): Declare.
	(hackRunInitializers): Declare.
	* java/lang/natClass.cc (getClassLoader): Moved into Class.h.
	(initializeClass): New method.
	(hackRunInitializers): New method.
	(init_name, void_signature): Moved from prims.cc.
	(_Jv_InitClass): New function.
	(isAssignableFrom): Don't call processClass.
	(STATE_NOTHING): New macro.
	(resolveConstants): New function.
	Include Thread.h.
	(ErrorClass): New define.

	* java/lang/Class.java (getClassLoader): Declare.
	* java/lang/ClassLoader.java: Rewrote from scratch.

	* java/lang/natClass.cc: Include IncompatibleClassChangeError.h,
	AbstractMethodError.h, IllegalAccessError.h,
	NoClassDefFoundError.h.
	* include/jvm.h (StringClass): Declare _Jv_equalUtf8Consts.
	* prims.cc (_Jv_equalUtf8Consts): Renamed from equalUtf8Consts; no
	longer static.  Changed return type.
	* java/lang/natFirstThread.cc (run): Use _Jv_GetMethodLocal.
	* java/lang/Class.h (Class): findMethodLocal no longer a friend.
	* prims.cc (findMethodLocal): Removed.
	(processClass): Use _Jv_GetMethodLocal.

1998-10-28  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_LookupInterfaceMethod): Removed.
	* java/lang/Class.h (Class): Declare _Jv_GetMethodLocal as
	friend.
	* java/lang/natClass.cc (_Jv_GetMethodLocal): New function.
	(_Jv_LookupInterfaceMethod): New function (rewrote from scratch).

	* include/jni.h: Added copyright header.
	* include/javaprims.h: Added copyright header.
	* include/java-field.h: Added copyright header.
	* include/java-array.h: Added copyright header.
	* include/cni.h: Added copyright header.

	* include/javaprims.h: Regenerated class declarations using
	classes.pl; now they are complete.
	* classes.pl: New file.

	* java/lang/natMath.cc: Include <config.h>.
	* java/lang/reflect/natField.cc: Include <config.h>.
	* java/util/NativeUtil.java: Removed.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added Math.h.
	* java/lang/Math.h: Removed.
	* java/util/natGregorianCalendar.cc: Added copyright header.
	Include <config.h>.
	* java/lang/natFloat.cc: Added copyright header.
	* java/lang/Byte.java: Added copyright header.
	* java/lang/Void.java: Added copyright header.
	* java/lang/Short.java: Added copyright header.

Wed Oct 28 12:55:47 1998  Warren Levy  <warrenl@cygnus.com>

	* include/javaprims.h (java::io): Added bunch of missing classes.
	
	* java/io/DataInputStream.java (readLine): Added a special case
	for handling BufferedInputStream data to reduce the likelihood
	of a pushback error.
	(skipBytes): Added code to handle negative number of skip bytes.
	
	* java/io/StreamTokenizer.java: Rewritten.

1998-10-28  Tom Tromey  <tromey@cygnus.com>

	* java/util/natGregorianCalendar.cc (computeFields): Call
	getRawOffset as a method.

	* include/javaprims.h (java::io): Added FilterOutputStream.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added PrintStream.h,
	FilterOutputStream.h.
	* java/lang/natFirstThread.cc: Include System.h, Modifier.h,
	PrintStream.h.
	(die): New function.
	(run): Die if `main' not found, is not public, or is not static.

	* boehm.cc (_Jv_MarkObj): Use new field names.
	* include/java-field.h (JvGetFirstInstanceField): Use new field
	names.
	(JvNumInstanceFields): Likewise.
	* java/lang/natClass.cc (isAssignableFrom): Use new field names.
	(getInterfaces): Likewise.
	* prims.cc (CLASS_CONSTANTS): Removed.
	(CLASS_CONST_SIZE): Likewise.
	(CLASS_CONST_TAG): Likewise.
	(CLASS_CONST_DATA): Likewise.
	(CLASS_CONST_UTF8): Likewise.
	(WORD2UTF): Likewise.
	(CLASS_CLASS): Likewise.
	(CLASS_PRIM_SIG): Likewise.
	(CLASS_ARRAY_CACHE): Likewise.
	(HASH_CHARS): Likewise.
	(hashClassName): Likewise.
	Many changes to use new field names.
	* java/lang/Class.h (Class): Renamed fields to track compiler.

1998-10-27  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natClass.cc: Use #pragma implementation.
	(getComponentType): Moved into header.
	(getModifiers): Likewise.
	(getName): Likewise.
	(getSuperclass): Likewise.
	(isArray): Likewise.
	(isPrimitive): Likewise.
	* include/jvm.h (_Jv_FindClass): Declare.
	* java/lang/natFirstThread.cc (run): Updated for new Class.h.
	* java/lang/natSystem.cc (arraycopy): Updated for new Class.h.
	* include/javaprims.h: Use _Jv_Method, not JvMethod.
	* java/lang/Class.h: Rewrote from scratch.
	* prims.cc: Many changes to work with new Class.h.
	* include/java-field.h (CLASS_FIELDS): Removed.
	(CLASS_SFIELDS): Likewise.
	(CLASS_IFIELDS): Likewise.
	(CLASS_NFIELDS): Likewise.
	(CLASS_NIFIELDS): Likewise.
	(CLASS_NSFIELDS): Likewise.
	(CLASS_FSIZE): Likewise.
	(JvGetFirstInstanceField): Rewrote.
	(JvNumInstanceFields): Likewise.

	* java/lang/Object.h: Added copyright comment.

Wed Oct 28 00:32:23 1998  Per Bothner  <bothner@cygnus.com>

	* java/text:  New package directory.
	* java/text/FieldPosition.java:  New class.
	* java/text/ParsePosition.java:  New class. 
	* java/text/ParseException.java:  New Exception class.
	* java/text/Format.java:  New class.
	* java/text/NumberFormat.java:  New (empty placeholder) class.
	* java/text/DateFormatSymbols.java:  New class (no Locales support).
	* java/text/DateFormat.java:  New Format class (incomplete).
	* java/text/SimpleDateFormat.java:  New DateFormat class.
	
	* include/javaprims.h (java::test):  Added new package and classes.
	* java/util/Calendar.java (clone):  New method.
	* java/util/Date.java (toString):  Added non-native implementation.
	(parse):  Made public instead of synchronized.
	* java/util/natDate.cc (toString):  Removed.
	* java/util/natGregorianCalendar.cc (computeFields):
	Use gmtime (or gmtime_r) if no zone offset (the default, for now!).

1998-10-27  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (_Jv_MarkObj): Correctly mark a class' interfaces.

	* prims.cc (lookupArray): Added explanatory comment.
	* boehm.cc (_Jv_MarkObj): Correctly scan methods and fields of
	class.  Mark the class of each object.
	(_Jv_MarkArray): Mark the object's class.

	* configure: Rebuilt.
	* configure.in: Create java-gc.h.
	* include/boehm-gc.h: New file.
	* include/no-gc.h: New file.
	* java/lang/Class.h (Class): Declare JV_MARKOBJ_DECL as friend, if
	defined.
	* java/lang/Object.h: Include java-gc.h.
	(Object): Declare JV_MARKOBJ_DECL and JV_MARKARRAY_DECL as
	friends, if defined.
	* boehm.cc (_Jv_MarkObj): Renamed from mark_obj; changed
	signature.
	(_Jv_MarkArray): Renamed from mark_array; changed signature.

1998-10-26  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natCharacter.cc (isSpaceChar): Look for line and
	paragraph separators, not numbers.

	* java/io/Writer.java (write): Removed write(char) to avoid
	ambiguity.
	* java/util/Properties.java: Rewrote from scratch.
	* include/javaprims.h (java::io): Added PrintWriter,
	BufferedWriter, PushbackReader.

Mon Oct 26 13:13:28 1998  Anthony Green  <green@cygnus.com>

	* java/lang/System.java: exit() is a static method.

1998-10-26  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (_Jv_NewStringUTF): Use
	_Jv_strLengthUtf8.
	(_Jv_NewStringUtf8Const): Likewise.
	* include/jvm.h (_Jv_strLengthUtf8): Declare.
	* prims.cc (_Jv_strLengthUtf8): Renamed from strLengthUtf8.

	* java/lang/Object.h (Object): Add mark_array as friend function.
	* prims.cc (_Jv_NewPrimArray): Use _Jv_AllocObj, not
	_Jv_AllocBytes, to ensure that header is marked.
	* boehm.cc (mark_obj): Push sync_info field for all objects, not
	just Objects.
	(mark_array): Push sync_info field for array.

1998-10-24  Tom Tromey  <tromey@cygnus.com>

	* java/lang/String.java (String): Updated for StringBuffer
	change.
	* java/util/BitSet.java: Renamed field (data->bits) to conform to
	serialization spec.
	* java/lang/StringBuffer.java: Renamed fields to conform to
	serialization spec: buffer->value, next->count, copy->shared.

Wed Oct 21 18:24:57 1998  Per Bothner  <bothner@cygnus.com>

	* java/util/TimeZone.java:  New class.
	* java/util/SimpleTimeZone.java:  New class.
	* java/util/Locale.java:  New file.
	* java/util/Calendar.java:  Make almost complete.
	* java/util/GregorianCalendar.java
	* java/util/natGregorianCalendar.cc:  New file.
	* java/util/Date.java:  Re-written from scratch.
	* java/util/natDate.cc (setTime):  Removed - no longer native.
	* include/javaprims.h (java::util):  Add new classes.
	* Makefile.am (nat_files):  Add java/util/natGregorianCalendar.o.
	(nat_headers);  Add TimeZone.h, Calendar.h, GregorianCalendar.h.

Sat Oct 24 22:58:25 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/natFileDescriptorPosix.cc (read): Zero extend jbyte b before
	returning it as a jint.

1998-10-23  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (arg_vec, main_group, main_thread): New globals.
	(JvRunMain): Use them.

Fri Oct 23 17:10:12 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/DataInputStream.java: Rewritten.

	* java/io/DataOutputStream.java (writeUTF): OR secondary and
 	tertiary bytes with 0x80 per spec.

1998-10-23  Tom Tromey  <tromey@cygnus.com>

	* java/lang/String.java (init): Changed name of `copy' argument.
	* java/lang/natString.cc (init): Inverted sense of `copy'
	argument.

	* java/lang/Object.h (Object): Declare mark_obj as a friend.
	* java/lang/Class.h (Class): Declare mark_obj as a friend.
	* boehm.cc (ObjectClass): New define.
	(ClassClass): Likewise.
	(mark_obj): Special-case Object and Class.

	* prims.cc (_Jv_NewPrimArray): Pass correct args to memset.

	* java/util/BitSet.java: Rewrote from scratch.

	* prims.cc (lookupArray): Removed useless cast.

	* java/lang/natObject.cc: Use `#pragma implementation'.

	* java/lang/String.java (init): Added `copy' argument.
	(String): Look in StringBuffer to find char array.
	* java/lang/natString.cc (init): Added `copy' argument.
	* java/lang/StringBuffer.java: Rewrote from scratch.

	* java/lang/Compiler.java: Rewrote from scratch.
	* java/lang/Throwable.java: Don't use NativeLang.
	* include/javaprims.h (java::lang): Don't mention NativeLang.
	* java/lang/Process.java: Rewrote from scratch.
	* java/lang/SecurityManager.java (classLoaderDepth): Commented
	out.
	(currentClassLoader): Likewise.
	(currentLoadedClass): Likewise.
	* java/lang/natClass.cc (getClassLoader): Commented out.
	* java/lang/Class.java (getClassLoader): Commented out.
	* java/lang/Compiler.java: Removed.
	* java/lang/NativeLang.java: Removed.

	* java/lang/natFirstThread.cc (run): Use _Jv_makeUtf8Const.
	* include/jvm.h (StringClass): Declare _Jv_makeUtf8Const.
	* prims.cc (_Jv_makeUtf8Const): Renamed from makeUtf8Const.
	(_Jv_hashUtf8String): Now static.
	* include/java-field.h (getNameUtf8Const): Use `_Jv_Utf8Const' as
	name of return type.

	* java/lang/Class.h (Class): Declare checkMemberAccess.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added Member.h.
	* java/lang/natClass.cc: Include Member.h.
	(getDeclaredClasses): Call checkMemberAccess.
	* java/lang/Class.java (checkMemberAccess): Call
	SecurityManager.checkMemberAccess.

Fri Oct 23 08:01:54 1998  Anthony Green  <green@cygnus.com>

	* java/lang/SecurityManager.java: Rewritten.

Thu Oct 22 17:16:10 1998  Anthony Green  <green@cygnus.com>

	* java/applet/Applet.java, java/applet/AppletContext.java,
	java/applet/AppletStub.java, java/applet/AudioClip.java,
	java/awt/AWTError.java, java/awt/AWTException.java,
	java/awt/BorderLayout.java, java/awt/Button.java,
	java/awt/Canvas.java, java/awt/CardLayout.java,
	java/awt/Checkbox.java, java/awt/CheckboxGroup.java,
	java/awt/CheckboxMenuItem.java, java/awt/Choice.java,
	java/awt/Color.java, java/awt/Component.java,
	java/awt/Container.java, java/awt/Dialog.java,
	java/awt/Dimension.java, java/awt/Event.java,
	java/awt/FileDialog.java, java/awt/FlowLayout.java,
	java/awt/Font.java, java/awt/FontMetrics.java,
	java/awt/Frame.java, java/awt/Graphics.java,
	java/awt/GridBagConstraints.java, java/awt/GridBagLayout.java,
	java/awt/GridLayout.java, java/awt/Image.java,
	java/awt/Insets.java, java/awt/Label.java,
	java/awt/LayoutManager.java, java/awt/List.java,
	java/awt/MediaTracker.java, java/awt/Menu.java,
	java/awt/MenuBar.java, java/awt/MenuComponent.java,
	java/awt/MenuContainer.java, java/awt/MenuItem.java,
	java/awt/Panel.java, java/awt/Point.java, java/awt/Polygon.java,
	java/awt/Rectangle.java, java/awt/Scrollbar.java,
	java/awt/TextArea.java, java/awt/TextComponent.java,
	java/awt/TextField.java, java/awt/Toolkit.java,
	java/awt/Window.java, java/awt/image/ColorModel.java,
	java/awt/image/CropImageFilter.java,
	java/awt/image/DirectColorModel.java,
	java/awt/image/FilteredImageSource.java,
	java/awt/image/ImageConsumer.java,
	java/awt/image/ImageFilter.java,
	java/awt/image/ImageObserver.java,
	java/awt/image/ImageProducer.java,
	java/awt/image/IndexColorModel.java,
	java/awt/image/MemoryImageSource.java,
	java/awt/image/PixelGrabber.java,
	java/awt/image/RGBImageFilter.java, java/awt/peer/ButtonPeer.java,
	java/awt/peer/CanvasPeer.java,
	java/awt/peer/CheckboxMenuItemPeer.java,
	java/awt/peer/CheckboxPeer.java, java/awt/peer/ChoicePeer.java,
	java/awt/peer/ComponentPeer.java,
	java/awt/peer/ContainerPeer.java, java/awt/peer/DialogPeer.java,
	java/awt/peer/FileDialogPeer.java, java/awt/peer/FramePeer.java,
	java/awt/peer/LabelPeer.java, java/awt/peer/ListPeer.java,
	java/awt/peer/MenuBarPeer.java,
	java/awt/peer/MenuComponentPeer.java,
	java/awt/peer/MenuItemPeer.java, java/awt/peer/MenuPeer.java,
	java/awt/peer/PanelPeer.java, java/awt/peer/ScrollbarPeer.java,
	java/awt/peer/TextAreaPeer.java,
	java/awt/peer/TextComponentPeer.java,
	java/awt/peer/TextFieldPeer.java, java/awt/peer/WindowPeer.java,
	java/net/ContentHandler.java, java/net/ContentHandlerFactory.java,
	java/net/DatagramPacket.java, java/net/DatagramSocket.java,
	java/net/DefaultSocketImpl.java, java/net/InetAddress.java,
	java/net/MalformedURLException.java, java/net/NativeNet.java,
	java/net/ProtocolException.java, java/net/ServerSocket.java,
	java/net/Socket.java, java/net/SocketException.java,
	java/net/SocketImpl.java, java/net/SocketImplFactory.java,
	java/net/URL.java, java/net/URLConnection.java,
	java/net/URLEncoder.java, java/net/URLStreamHandler.java,
	java/net/URLStreamHandlerFactory.java,
	java/net/UnknownHostException.java,
	java/net/UnknownServiceException.java: Removed.

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

	* prims.cc (_Jv_AllocObject): Register finalizer if class'
	finalizer is not Object.finalize.
	(internalAddClass): Don't set `final' member of class.
	* java/lang/Object.h: Updated _JvObjectPrefix comment to mention
	other places that know about finalize() location.
	* java/lang/Class.h (Class): Removed `final' field.

	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4 (LIB_AC_PROG_CXX): Unconditionally use
	AC_CHECK_PROGS; otherwise the CXX cache variable might not be
	set.
	* configure.in (AC_OUTPUT): Pass CXX to config.status.
	* Makefile.in: Rebuilt.
	* Makefile.am (AM_MAKEFLAGS): Added CXX, CXXFLAGS.

1998-10-21  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Object.java (finalize): Move to be first method in
	class.

	* configure: Rebuilt.
	* configure.in (GCINCS): Include contents of boehm-cflags file.

Tue Oct 20 13:11:04 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java/lang/ArrayIndexOutOfBoundsException.java
 	(ArrayIndexOutOfBoundsException): Fixed string literal.
	* java/lang/StringIndexOutOfBoundsException.java
	(StringIndexOutOfBoundsException): Fixed string literal.

1998-10-20  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* natFileDescriptorEcos.cc added.
	* natFileDescriptor.cc renamed natFileDescriptorPosix.cc.  

1998-10-20  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* acconfig.h: test for __int32_t and __uint32_t added.
	* include/config.h.in: test for __int32_t and __uint32_t added.
	* java/lang/fdlibm.h: test for __int32_t and __uint32_t added.
	* java/lang/mprec.h: test for __int32_t and __uint32_t added.
	* configure.in: test for __int32_t and __uint32_t added.
	* configure: test for __int32_t and __uint32_t added.
	
	* natFileDescriptor.cc renamed natFileDescriptorPosix.cc.  

	* configure.in: Test for --enable ecos and link
	natFileDescriptor.cc to natFileDescriptorEcos.cc or
	natFileDescriptorPosix.cc
	
	* java/lang/dtoa.c: #include <stdio.h> moved inside #ifdef DEBUG.
	
Mon Oct 19 18:13:58 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/ByteArrayInputStream.java (skip): Ensure that arg passed
 	in isn't negative.

	* java/io/CharArrayReader.java (close): Synchronize on lock
 	object per Reader contract.
	(read): Synchronize on lock obj.  Verify that reader wasn't closed.
	(reset): Synchronize on lock obj.  Verify that reader wasn't closed.
	(skip): Synchronize on lock obj.  Verify that reader wasn't closed.
  	Ensure that arg passed in isn't negative.

	* java/io/FilterReader.java (FilterReader): Use the lock obj when
	constructing the superclass.

	* java/io/PushbackReader.java (close): Synchronize on lock
 	object per Reader contract.
	(read): Synchronize on lock obj.  Verify that reader wasn't closed.
	(ready): Synchronize on lock obj.  Throw IOException if reader
 	wasn't closed.
	(reset): Synchronize on lock obj.  Verify that reader wasn't closed.
	(skip): Synchronize on lock obj.  Verify that reader wasn't closed.
  	Ensure that arg passed in isn't negative.
	(unread): Synchronize on lock obj.  Verify that reader wasn't closed.

	* java/io/StringReader.java: Created.
	
Sun Oct 18 02:19:11 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/CharArrayReader.java (mark): Removed synchronized modifier
	to match JCL.
	(read): Removed synchronized modifier to match JCL.
	(reset): Removed synchronized modifier to match JCL.
	(skip): Removed synchronized modifier to match JCL.

Sun Oct 18 02:01:54 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PushbackReader.java (PushbackReader): Made
	constructors public.

1998-10-17  Tom Tromey  <tromey@cygnus.com>

	* java/io/PushbackInputStream.java (PushbackInputStream): Made
	constructors public.

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

	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4 (LIBJAVA_CONFIGURE): Changed for new
	configure.host.
	* configure.host: Rewrote.
	* Makefile.in: Rebuilt.
	* Makefile.am (AM_CXXFLAGS): Added LIBJAVA_CXXFLAGS.
	(AM_CFLAGS): New macro.
	($(c_files)): Use COMPILE macro.
	(EXTRA_libjava_a_SOURCES): Added dummy file to work around
	automake problem(s).

Fri Oct 16 16:36:28 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/ByteArrayInputStream.java (mark): Removed temp. comment.

	* java/io/CharArrayReader.java: Created.

Fri Oct 16 15:17:01 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PushbackInputStream.java (PushbackInputStream): Changed
 	size check to allow 0 per JCL.

	* java/io/PushbackReader.java: Created.

1998-10-16  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFileDescriptor.cc: Conditionalize <unistd.h>,
	<sys/time.h> includes. 
	* java/io/natFile.cc: Conditionalize <unistd.h> include.
	* include/no-threads.h: Conditionalize <unistd.h> include on
	HAVE_UNISTD_H.

Fri Oct 16 14:39:51 1998  Andrew Haley  <aph@madras.cygnus.co.uk>

	* include/no-threads.h: Don't include <unistd.h> unless HAVE_SLEEP
 	is defined.

Thu Oct 15 19:27:54 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/FilterReader.java: Created.

Thu Oct 15 17:49:43 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/PushbackInputStream.java: Rewritten.

	* java/io/BufferedInputStream.java (BufferedInputStream): Check
	that size passed to constructor is legal.
	(read): Check that args passed in are legal.
	(skip): Rewritten to get rid of the temporary buffer.
	(refill): Added marklimit check to grow the buffer.

	* java/io/ByteArrayInputStream.java (read): Optimized invalid args
	check.
	(bytesAvail): Removed.
	(read): Changed bytesAvail to Math.min.
	(skip): Changed bytesAvail to Math.min.

	* java/io/InputStream.java (read): Got rid of extraneous exceptions
	from the throws clause.
	(skip): Rewritten to use a temporary buffer.

Thu Oct 15 19:42:55 1998  Andrew Haley  <aph@madras.cygnus.co.uk>

	* prims.cc: (JvConvertArgv): Check added for argc < 0; possible on
 	some target OSes

	* java/lang/dtoa.c: (print): Made #ifdef DEBUG only.

	* java/lang/strtod.c: (_strtod_r): Don't use HUGE_VAL: it's faster
 	to write the double one word at a time.

Tue Oct 13 14:41:47 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/BufferedInputStream.java:  Rewritten.

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

	* jni.cc: Include config.h and stddef.h.

	* java/lang/Class.h (_dispatchTable): Removed again.
	Removed all ACC_* defines again.

Fri Oct  9 17:08:34 1998  Per Bothner  <bothner@cygnus.com>

	* Makefile.am (nat_files):  Add netField.o.
	(libjava_a_SOURCES):  Add jni.cc.
	(java/lang/reflect/Field.h):  New rule.
	* Makefile.in:  Re-generated.
	* include/javaprims.h:  Add some extra class and typedefs.
	* include/jni.h:  New file.
	* jni.cc:  New file.

	* include/java-field.h:  New file.
	* include/jvm.h:  #include <java-field.h>.
	* boehm.cc:  #include <java-field.h>.
	* java/lang/Class.h (JvField, inline numbers):  Moved to java-field.h.
	* java/lang/reflect/Member.java:  New class.
	* java/lang/reflect/Field.java:  New class.  (Very incomplete.)
	* java/lang/reflect/natField.cc:  New file.  (Very incomplete.)

Sun Oct 11 00:34:44 1998  Anthony Green  <green@cygnus.com>

	* Makefile.in, aclocal.m4, configure, test/Makefile.in,
	testsuite/Makefile.in: Rebuilt.
	* Makefile.am, acinclude.m4, configure.in: Add multilib support.
	* configure.host: Created.

1998-10-10  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natObject.cc (sync_init): Always allocate a new
	sync_info.

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

	* java/io/ByteArrayInputStream.java (mark): Renamed from
	`mark_FIXME'.

	* java/io/FileOutputStream.java (finalize): Removed.
	* java/io/FileDescriptor.java (finalize): New method.

Thu Oct  8 17:59:43 1998  Warren Levy  <warrenl@cygnus.com>

	* ByteArrayInputStream.java: Corrected status comment.

Thu Oct  8 17:22:49 1998  Warren Levy  <warrenl@cygnus.com>

	* ByteArrayInputStream.java, FilterInputStream.java: Rewritten.

1998-10-08  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (lookupArray): Use static array to initialize list of
	interfaces.

Thu Oct  8 12:45:03 1998  Anthony Green  <green@cygnus.com>

	* prims.cc (lookupArray): Initialize the msize for new
	array classes.

Wed Oct  7 12:13:59 1998  Anthony Green  <green@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Check for fsync and sleep.
	* acconfig.h (HAVE_SLEEP, HAVE_FSYNC): Added.

	* include/no-threads.h (_Jv_CondWait): Wrap sleep() use with
	HAVE_SLEEP. Include config.h.

	* java/io/natFileDescriptor.cc (NO_FSYNC_MESSAGE): Added.
	* java/io/natFileDescriptor.cc (sync): Wrap fsync() use
	with HAVE_FSYNC.

1998-10-08  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFile.cc: Don't include SecurityManager.h.
	(performList): Renamed.
	(performMkdir): Likewise.
	(performRenameTo): Likewise.
	(performDelete): Likewise.
	Include <stdlib.h>.
	* java/io/File.java (performDelete): Renamed from natDelete.
	(list): Now written in Java.
	(performList): New method.
	(performMkdir): New method.
	(mkdir): Now written in Java.
	(performRenameTo): New method.
	(renameTo): Now written in Java.

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

	* Makefile.in: Rebuilt.
	* Makefile.am (ETAGS_ARGS): New macro.
	(TAGS_DEPENDENCIES): Likewise.

Tue Oct  6 22:04:44 PDT 1998 Anthony Green  <green@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am: Use -classpath option with javac.
	
Tue Oct  6 18:51:31 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/FileOutputStream.java (finalize): Call
	super.finalize().

Tue Oct  6 16:02:45 1998  Anthony Green  <green@cygnus.com>

	* java/lang/mprec.h: Remove unused _mprec_log10 which conflicts
	with newlib's libm.
	* java/lang/mprec.c: Ditto.

	* java/lang/mprec.h: Include math.h for HUGE_VAL when
	cross-compiling.

Tue Oct  6 14:27:00 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/InputStream.java (skip): Make local var i a long.

Mon Oct  5 09:44:24 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natObject.cc (clone): Use memcpy, not memmove.
	* prims.cc (lookupArray): Use memcpy, not memmove.
	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_MEMCPY): Added.
	* configure: Rebuilt.
	* configure.in: Check for memcpy again.

	* java/io/RandomAccessFile.java (RandomAccessFile): Use
	String.compareTo, not ==.

	* java/lang/Class.h (Class): Use _Jv_DispatchTable.
	(_PRIMITIVE_DTABLE): Use _Jv_DispatchTable.
	* java/lang/natObject.cc (struct _dispatchTable): Removed.
	* include/jvm.h (struct _Jv_DispatchTable): New structure.
	* prims.cc (lookupArray): Removed dead code.  Copy Object's dtable
	into new array's dtable.
	(_Jv_AllocObject): Use _Jv_DispatchTable.
	(_Jv_NewPrimArray): Likewise.
	(_Jv_NewObjectArray): Likewise.

Fri Oct  2 18:57:14 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* prims.cc (_Jv_ThrowBadArrayIndex): Construct a string with the
 	offending index value.
	(_Jv_NewPrimArray): Throw NegativeArraySizeException when
 	appropriate.
	* include/jvm.h (_Jv_ThrowBadArrayIndex): Added declaration.
	* java/lang/Throwable.java: (Throwable): fixed argument to this().

Fri Oct  2 15:58:23 1998  Warren Levy  <warrenl@cygnus.com>

	* java/io/DataInput.java, java/io/InputStream.java: Rewritten.
	
	* java/io/OutputStream.java (write): Use off and len parameters to
 	output partial byte array.
	
	* java/io/BufferedReader.java, java/io/FileReader.java,
 	java/io/InputStreamReader.java, java/io/LineNumberReader.java,
 	java/io/OutputStreamWriter.java, java/io/PrintWriter.java,
 	java/io/Reader.java, java/io/UnsupportedEncodingException.java,
 	java/io/Writer.java: Added COPYRIGHT-TBD comment.

	* include/javaprims.h (java::lang): Added
 	ExceptionInInitializerError, IllegalStateException,
 	NoSuchFieldException, and UnsupportedOperationException.

Fri Oct  2 01:05:38 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natObject.cc (CloneableClass): Is a Class, not a
	Class*.

	* include/java-array.h (__JArray): Added clone method.
	* prims.cc (CloneableClass): New define.
	(lookupArray): Initialize array class to indicate that it
	implements Cloneable.

	* java/lang/Class.h: Removed all ACC_* defines.
	* prims.cc: Include Modifier.h.
	(_Jv_LookupInterfaceMethod): Use methods in
	java.lang.reflect.Modifier, not ACC_ defines.

	* java/lang/Class.h (Class): Declare getClasses,
	getDeclaredClasses, getDeclaringClass, getModifiers, 
	* java/lang/Class.java: Rewrote from scratch.

	* include/javaprims.h (java::lang): Added reflect and
	reflect::Modifier.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added Modifier.h.

	* prims.cc (_Jv_IsInstanceOf): Return false if class is
	primitive.

Fri Oct 2 06:49:00 1998  Anthony Green  <green@cygnus.com>

	* java/lang/natString.cc (_Jv_StringFindSlot): Use JvAssert
	instead of test and abort.

	* java/lang/natString.cc (_Jv_NewStringUtf8Const): Add cast to
	remove compiler warning.

Fri Oct  2 12:33:44 1998  Andrew Haley  <aph@korai.cygnus.co.uk>

	* java/lang/natDouble.cc: zero terminate string.
	* strtod.c: Set errno if no digits are found in fraction.

Thu Oct  1 11:48:28 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/reflect/Modifier.java: New file.

	* java/lang/VirtualMachineError.java: Rewrote from scratch.
	* java/lang/VerifyError.java: Rewrote from scratch.
	* java/lang/UnsatisfiedLinkError.java: Rewrote from scratch.
	* java/lang/UnknownError.java: Rewrote from scratch.
	* java/lang/StackOverflowError.java: Rewrote from scratch.
	* java/lang/OutOfMemoryError.java: Rewrote from scratch.
	* java/lang/InternalError.java: Rewrote from scratch.
	* java/lang/IllegalAccessError.java: Rewrote from scratch.
	* java/lang/ExceptionInInitializerError.java: New file.
	* java/lang/Error.java: Rewrote from scratch.
	* java/lang/ClassFormatError.java: Rewrote from scratch.
	* java/lang/ClassCircularityError.java: Rewrote from scratch.
	* java/lang/AbstractMethodError.java: Rewrote from scratch.
	* java/lang/NoClassDefFoundError.java: Rewrote from scratch.
	* java/lang/NoSuchFieldError.java: Rewrote from scratch.
	* java/lang/LinkageError.java: Rewrote from scratch.
	* java/lang/IncompatibleClassChangeError.java: Rewrote from
	scratch.
	* java/lang/NoSuchMethodError.java: Rewrote from scratch.

	* java/lang/natObject.cc (_Jv_FinalizeObject): New function.
	* java/lang/Object.h (Object): Declare _Jv_FinalizeObject as a
	friend.
	* include/cni.h (JvAllocObject): Moved from prims.cc.
	Include Class.h.
	* prims.cc (JvAllocObject): Moved to cni.h.
	(_Jv_AllocObject): Use _Jv_FinalizeObject.
	(finalize_name): Removed.

Wed Sep 30 12:09:34 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Class.h (Class): Added size() method.
	* prims.cc (_Jv_MonitorEnter): Removed.
	(_Jv_MonitorExit): Removed.
	* java/lang/Object.h (JvSyncInfo): Removed.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added Cloneable.h,
	CloneNotSupportedException.h.
	* java/lang/Object.h: Rewrote.
	* java/lang/natObject.cc: Rewrote from scratch.
	* java/lang/Object.java: Rewrote from scratch.

	* java/io/natFile.cc: Conditionally include <dirent.h>.
	(list): If no <dirent.h>, always return NULL.
	* configure: Rebuilt.
	* configure.in: Check for dirent.h.

	* prims.cc (lookupArray): Don't use sprintf.

	* java/util/Hashtable.java (containsKey): Use `abs' to compute
	initial index.
	(get): Likewise.
	(put): Likewise.
	(rehash): Likewise.
	(remove): Likewise.

	* java/util/Hashtable.java (hsize): Renamed from size to avoid
	name conflict with method.

	* include/javaprims.h (java::util): Added HashtableEntry.

Tue Sep 29 16:48:01 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Hashtable.java: Rewritten.

Tue Sep 29 00:28:42 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFileDescriptor.cc (write): Correctly test `write'
	return value.
	(write): Likewise.

	* java/lang/natThread.cc (join): Fixed assertion to refer to `nt',
	not `curr_nt'.

	* posix-threads.cc (_Jv_CondWait): Now returns int.
	* include/javaprims.h (java::lang): Added
	IllegalMonitorStateException.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added IllegalMonitorStateException.h.
	* include/no-threads.h (_Jv_CondDestroy): Removed.
	(_Jv_MutexDestroy): Removed.
	(_Jv_CondWait): Now returns int.
	(_Jv_CondNotify): Likewise.  Added mutex argument.
	(_Jv_CondNotifyAll): Likewise.
	(_Jv_MutexLock): Always succeed.
	(_Jv_MutexUnlock): Likewise.
	* include/posix-threads.h (_Jv_HaveCondDestroy): Define.
	(_Jv_HaveMutexDestroy): Define.
	(_Jv_CondNotify): Now returns int.  Added mutex argument.
	(_Jv_CondNotifyAll): Likewise.
	* include/quick-threads.h (_Jv_CondDestroy): Removed.
	(_Jv_MutexDestroy): Removed.
	(_Jv_CondWait): Now returns int.
	(_Jv_CondNotify): Likewise.  Added mutex argument.
	(_Jv_CondNotifyAll): Likewise.
	* java/lang/natObject.cc (finalize_sync_info): New function.
	(init_mutex): Initialize `init' and register finalizer if
	required.
	(CHECK): New macro.
	(init_mutex): Use it.
	(notify): Use it.
	(notifyAll): Use it.
	(wait): Use it.
	(notify): Throw IllegalMonitorStateException on failure.
	(notifyAll): Likewise.
	(wait): Likewise.  Also, throw InterruptedException if
	appropriate.
	Include cni.h, Thread.h, IllegalMonitorStateException.h,
	InterruptedException.h, IllegalArgumentException.h.
	* java/lang/Object.h (struct JvSyncInfo): Added `init' member.

	* java/lang/natString.cc: Renamed all `JvPriv' functions.
	* java/lang/natRuntime.cc: Renamed all `JvPriv' functions.
	* java/lang/Object.h: Renamed all `JvPriv' functions (and types).
	* java/lang/natObject.cc: Renamed all `JvPriv' functions.
	* java/lang/natThread.cc: Renamed all `JvPriv' functions.
	* quick-threads.cc: Renamed all `JvPriv' functions.
	* prims.cc: Renamed all `JvPriv' functions.
	* posix-threads.cc: Renamed all `JvPriv' functions.
	* nogc.cc: Renamed all `JvPriv' functions.
	* no-threads.cc: Renamed all `JvPriv' functions.
	* boehm.cc: Renamed all `JvPriv' functions.
	* include/quick-threads.h: Renamed all `JvPriv' functions.
	* include/posix-threads.h: Renamed all `JvPriv' functions.
	* include/no-threads.h: Renamed all `JvPriv' functions.
	* include/jvm.h: Renamed all `JvPrivXXX' functions to `_Jv_XXX'.

	* include/no-threads.h (JvPrivCondWait): Wrote minimal
	implementation.
	(JvPrivCondNotify): Do nothing.
	(JvPrivCondNotifyAll): Do nothing.

	* prims.cc (processClass): Handle case where state is
	DOING_CONSTINIT.

	* java/lang/natFirstThread.cc: Include <stdlib.h>

	* configure: Rebuilt.
	* configure.in: Fixed sense of --enable-libjava-debug.

	* java/lang/natThread.cc (join): Declare `t' outside the loop so
	it can be used afterward by the assertion.

	* configure: Rebuilt.
	* configure.in: When cross-compiling, assume alloca.

	* java/lang/natDouble.cc: Updated alloca magic to avoid use of
	__builtin_alloca (autoconf docs are wrong here).

	* java/io/natFileDescriptor.cc (close): Set fd to -1 before
	closing.
	(available): Use `FD_ZERO' (typo fix).

Tue Sep 29 17:43:30 1998  Andrew Haley  <aph@tikka.cygnus.co.uk>

	* java/lang/mprec.h, java/lang/mprec.c, java/lang/dtoa.c,
 	java/lang/natDouble.cc, java/lang/strtod.c: struct _Bigint renamed
	struct _Jv_Bigint.
	* java/lang/mprec.h, java/lang/mprec.c, java/lang/dtoa.c,
 	java/lang/natDouble.cc, java/lang/strtod.c: struct _reent renamed
 	struct _Jv_reent.

	* java/lang/natDouble.cc: layout changed to match GNU coding standard.
	
Tue Sep 29 07:57:13 1998  Anthony Green  <green@cygnus.com>

	* java/lang/natDouble.cc: Declare alloca safely.

	* configure, include/config.h.in: Rebuilt.
	* configure.in: Add alloca check.

Tue Sep 29 00:28:42 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (finish_): Hold mutex for interrupt
	condition while calling notify.
	(join): Remove `curr_nt' from `nt's join list, not vice versa.
	(interrupt): Hold mutex for interrupt condition while calling
	notify.

	* java/lang/natString.cc (init): Allocate and try to read `count'
	characters, not `count - offset' characters.

	* java/io/ByteArrayInputStream.java (ByteArrayInputStream):
	Correctly compute `count'.

	* java/lang/Boolean.java (getBoolean): Return false if property
	not found.

	* java/lang/System.java (setProperties): Set prop_init.

Mon Sep 28 12:39:25 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/PrintStream.java (println): Use line.separator, not
	file.separator.
	* java/lang/System.java (out, err): Make both autoflush streams.
	* java/io/ByteArrayOutputStream.java (write): Increment `count'.

	* include/config.h.in: Rebuilt.
	* acconfig.h (HAVE_MEMCPY): Removed.
	* configure: Rebuilt.
	* configure.in: Never define HAVE_MEMCPY.

	* java/lang/natString.cc: Don't include OutOfMemoryError.h or
	Class.h.
	(_Jv_AllocString): Use JvAllocObject again.
	* java/lang/Class.h (thread): New field.
	(_Jv_AllocString): No longer a friend.
	* prims.cc (processClass): Removed dead code.  Changed to more
	closely follow the Java Language Specification.
	(processClass): Return early if already at the right state.

	* prims.cc (JvNewStringUTF): Removed.
	* include/cni.h (JvNewStringUTF): New function.
	(_Jv_NewStringUTF): Declare as `extern "C"'.
	* java/lang/natString.cc (_Jv_NewStringUTF): New function.

	* java/lang/natDouble.cc: Added copyright info and header
	comment.  Include <stdlib.h>.
	(doubleValueOf): Use alloca, not malloc.  Allocate 3 times as many
	bytes as are chars in string.

Sat Sep 26 00:19:27 1998  Tom Tromey  <tromey@cygnus.com>

	* java/util/Hashtable.java (hkeys): Member renamed from to avoid
	clash with method.
	(hsize): Likewise.

	* java/lang/System.java (init_properties): Now native.
	* java/lang/natSystem.cc (init_properties): New method.
	Include java/util/Properties.h.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added ByteArrayOutputStream.h,
	OutputStreamWriter.h, ByteArrayInputStream.h,
	InputStreamReader.h, Writer.h, InputStream.h, OutputStream.h,
	Reader.h, Vector.h, SecurityManager.h, FilenameFilter.h,
	SyncFailedException.h, EOFException.h, FileNotFoundException.h,
	Properties.h, Hashtable.h, Dictionary.h.
	(CFLAGS): Removed.

	* include/javaprims.h (java::io): Added Reader, Writer,
	InputStreamReader, OutputStreamWriter,
	UnsupportedEncodingException, ByteArrayInputStream,
	ByteArrayOutputStream, EOFException, SyncFailedException,
	PushbackInputStream.
	(java::lang): Added Cloneable.
	(java::util): Added NoSuchElementException, VectorEnumeration,
	Dictionary, HashtableEnumeration, PropertiesEnumeration.

	* java/io/PipedReader.java: New file.

Fri Sep 25 00:11:25 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natCharacter.cc (getNumericValue): Use `digit' to pick
	up A-Z.

	* java/io/io-defs.h: Removed.

	* java/io/FileInputStream.java (skip): Use FileDescriptor.seek.
	(FileInputStream): Use new constructor.  Can throw IOException.

	* java/lang/System.java (getProperty): Don't throw
	NullPointerException.

	* java/io/RandomAccessFile.java: Rewrote from scratch.

	* java/io/natFileDescriptor.cc: Include EOFException.h.
	(seek): New method.
	(length): New method.
	(getFilePointer): New method.
	(read): New method.
	(available): New method.
	* java/io/FileDescriptor.java (SET, CUR): New constants.
	(seek, length, getFilePointer, read, available): New decls.

	* java/io/PipedWriter.java: New file.
	* java/io/StringWriter.java: New file.
	* java/io/CharArrayWriter.java: New file.
	* java/io/CharConversionException.java: New file.
	* java/io/BufferedWriter.java: New file.
	* java/io/FilterWriter.java: New file.
	* java/io/FileWriter.java: New file.

	* java/lang/natString.cc: Include ByteArrayOutputStream.h,
	OutputStreamWriter.h, NullPointerException.h,
	ByteArrayInputStream.h, InputStreamReader.h.
	(getBytes): New method.
	(init): Throw NullPointerException.
	(init): New function.
	* java/lang/String.java (getBytes): Added missing decl.
	(getBytes): New method.
	(String): Added byte[]-based constructors.
	(copyValueOf): Wrote.
	(init): Declare variant which takes byte array and encoding.
	Import java.io.UnsupportedEncodingException.

	* java/io/File.java: Rewrote from scratch.
	* java/io/natFileDescriptor.cc: Rewrote from scratch.
	* java/io/FileDescriptor.java: Rewrote from scratch.
	* java/io/FilenameFilter.java: Rewrote from scratch.

Thu Sep 24 13:30:16 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/SyncFailedException.java: New file.
	* java/io/UTFDataFormatException.java: Rewrote from scratch.
	* java/io/InterruptedIOException.java: Rewrote from scratch.
	* java/io/FileNotFoundException.java: Rewrote from scratch.
	* java/io/EOFException.java: Rewrote from scratch.
	* java/io/IOException.java: Rewrote from scratch.
	* java/io/PrintStream.java: Rewrote from scratch.
	* java/io/DataOutputStream.java: Rewrote from scratch.
	* java/io/BufferedOutputStream.java: Rewrote from scratch.
	* java/io/FilterOutputStream.java: Rewrote from scratch.
	* java/io/ByteArrayOutputStream.java: Rewrote from scratch.
	* java/io/PipedOutputStream.java: Rewrote from scratch.
	* java/io/FileOutputStream.java: Rewrote from scratch.
	* java/io/OutputStream.java: Rewrote from scratch.
	* java/io/DataOutput.java: Rewrote from scratch.

Mon Sep 28 22:59:54 1998  Per Bothner  <bothner@cygnus.com>

	* prims.cc (_Jv_CheckCast):  Add missing ! operator.

Mon Sep 28 15:50:06 1998  Anthony Green  <green@cygnus.com>

	* configure.in: Add --enable-libjava-debug

	* Makefile.am (nat_headers): Add java/lang/Float.h and 
	java/lang/Double.h

	* acconfig.h: Add DEBUG and HAVE_MEMCPY.

	* Makefile.in, configure, include/config.h.in: Rebuilt.

Mon Sep 28 17:05:58 1998  Andrew Haley  <aph@korai.cygnus.co.uk>

	* java/lang/Float.java: Rewritten
	* java/lang/Double.java: Rewritten
	* java/lang/natFloat.cc: toString() added.
	* java/lang/natDouble.cc: toString() added.
	* java/lang/natDouble.cc: doubleValueOf() added.
	* java/lang/dtoa.c, java/lang/mprec.c, java/lang/mprec.h, 
	java/lang/strtod.c: added.
	* ieeefp.h: __sparc added.
	* Makefile.am: java/lang/Float.h and java/lang/Double.h added.
	
Thu Sep 24 13:30:16 1998  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h (java::lang): Added
	CloneNotSupportedException.

	* java/lang/Object.java (clone): No longer native.  Implemented.
	* java/lang/natObject.cc (clone): Removed.

Wed Sep 23 12:03:38 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc: Don't make definitions `extern "C"'.
	(_Jv_RegisterClass): Renamed from registerClass.
	* include/jvm.h (_Jv_ThrowBadArrayIndex): Declare.
	(_Jv_NewArray): Likewise.
	(_Jv_NewMultiArray): Likewise.
	(_Jv_CheckCast): Likewise.
	(_Jv_LookupInterfaceMethod): Likewise.
	(_Jv_CheckArrayStore): Likewise.
	(_Jv_RegisterClass): Likewise.

	* acconfig.h (HAVE_FMOD, HAVE_MEMCPY): Removed.
	* configure: Rebuilt.
	* configure.in: Don't check for fmod; it is provided by the fdlibm
	code.
	* prims.cc (fmod): Removed.

	* java/lang/natString.cc (charAt): Use _Jv_uint.
	* java/lang/Class.h (class JvField): Use _Jv_ushort.
	* prims.cc (HASH_CHARS): Use _Jv_ushort.
	(equalUtf8Consts): Likewise.
	(internalAddClass): Use _Jv_uint.
	(processClass): Likewise.
	* include/javaprims.h (_Jv_ushort): Renamed from uint16.
	(_Jv_uint): Renamed from uint32.
	(struct _Jv_Utf8Const): Changed members to use new type names.

	* configure: Rebuilt.
	* configure.in: Don't check for memcpy.  Require memmove and a way
	to get the time.
	* java/lang/natSystem.cc (arraycopy): Removed dead code, and
	#error.
	(currentTimeMillis): Don't use #error.

Tue Sep 22 18:00:16 1998  Andrew Haley  <aph@korai.cygnus.co.uk>

	* java/lang/Math.java: static member random renamed to random_ to
 	avoid conflict with member function of the same name.
	* include/javaprims.h: java.util.Random added.

Tue Sep 22 13:53:14 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-chartables.h: Regenerated.
	* chartables.pl: End COMPACT_CHARACTER #if after fast tables
	printed.

Tue Sep 22 17:17:52 1998  Andrew Haley  <aph@tikka.cygnus.co.uk>

	* java/lang/Math.java: Rewritten.
	* java/lang/natMath.cc: New file.
	* Files added from fdlibm:
	  java/lang/e_acos.c, java/lang/k_sin.c, java/lang/sf_floor.c,
	  java/lang/e_asin.c, java/lang/k_tan.c, java/lang/sf_rint.c,
	  java/lang/e_atan2.c, java/lang/s_atan.c, java/lang/w_acos.c,
	  java/lang/e_exp.c, java/lang/s_ceil.c, java/lang/w_asin.c,
	  java/lang/e_fmod.c, java/lang/s_copysign.c, java/lang/w_atan2.c,
	  java/lang/e_log.c, java/lang/s_cos.c, java/lang/w_exp.c,
	  java/lang/e_pow.c, java/lang/s_fabs.c, java/lang/w_fmod.c,
	  java/lang/e_rem_pio2.c, java/lang/s_floor.c, java/lang/w_log.c,
	  java/lang/e_remainder.c, java/lang/s_rint.c, java/lang/w_pow.c,
	  java/lang/e_scalb.c, java/lang/s_scalbn.c, java/lang/w_remainder.c,
	  java/lang/e_sqrt.c, java/lang/s_sin.c, java/lang/w_sqrt.c,
	  java/lang/ef_fmod.c, java/lang/s_tan.c, java/lang/wf_fmod.c,
	  java/lang/k_cos.c, java/lang/sf_ceil.c,
	  java/lang/k_rem_pio2.c, java/lang/sf_fabs.c,
	  java/lang/ieeefp.h, java/lang/fdlibm.h
	* Makefile.am: rules added for compiling C files from fdlibm.
  	
Mon Sep 21 15:40:58 1998  Tom Tromey  <tromey@cygnus.com>

	* chartables.pl: Minor documentation fixes.

	* configure: Rebuilt.
	* configure.in: Fixed --help output for --enable-fast-character.

Thu Sep 17 11:03:27 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Recognize --enable-fast-character.
	* acconfig.h (COMPACT_CHARACTER): New define.
	* include/config.h.in: Rebuilt.
	* include/java-chartables.h: New file.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_files): Added natCharacter.o.
	* java/lang/natCharacter.cc: New file.
	* chartables.pl (set_attribute): New function.
	(@attributes, @second_attributes): New globals.
	($ROMAN_START, $ROMAN_END): Likewise.
	(process_char): Call set_attribute when required.
	(print_char): Just print hex value.
	(print_block): Generate C++ syntax.
	(print_numerics): Likewise.
	(print_single_map): Likewise.
	(print_all_block): Likewise.
	(print_case_table): Likewise.
	(print_fast_tables): New function.
	Generate C++ code suitable for a header file.
	* java/lang/Character.java (table_search): Removed.
	(digit_value): Now native.
	(getNumericValue): Likewise.
	(getType): Likewise.
	Removed all automatically-generated tables.
	(Tamil_Digit_One): Removed.
	(isSpaceChar): Now native.
	(isTitleCase): Likewise.
	(isLowerCase): Likewise.
	(isUpperCase): Likewise.
	(toLowerCase): Likewise.
	(toTitleCase): Likewise.
	(toUpperCase): Likewise.
	(isDefined): Fixed sense of test.

Wed Sep 16 12:00:19 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (equalsIgnoreCase): Removed obsolete
	FIXME comment.
	(regionMatches): Likewise.

Tue Sep 15 14:35:12 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_AllocObject): Call _Jv_InitClass on the class.

	* java/lang/Class.h (Object): For now, declare _Jv_AllocString as
	a friend.
	* java/lang/natString.cc (_Jv_AllocString): For now, don't call
	_Jv_AllocObject.

	* java/lang/natString.cc (toUpperCase): Declare `ch' as a jchar,
	not a char.

	* java/lang/natClass.cc (isAssignableFrom): Handle arrays.

Fri Sep 11 14:01:08 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (instanceof_class): Removed.
	(instanceof_array): Likewise.
	(instanceof): Likewise.
	(_Jv_IsInstanceOf): Use Class::isAssignableFrom.
	(_Jv_CheckCast): Likewise.
	* java/lang/natClass.cc (isAssignableFrom): New method.
	* java/lang/Class.java (isAssignableFrom): Now native.

	* include/cni.h (JvThrow): Use `extern inline'.
	(JvAllocObject): Likewise.
	(JvInitClass): Likewise.

	* java/lang/natSystem.cc (arraycopy): Only check class of source
	object if not null.

	* prims.cc (_Jv_CheckArrayStore): Wrote.
	(_Jv_MonitorEnter): Prefer `JvThrow'.
	Include ArrayStoreException.h.
	(_Jv_CheckCast): Indentation cleanup.

Thu Sep 10 18:59:29 1998  Tom Tromey  <tromey@cygnus.com>

	* chartables.pl: New file.
	* java/lang/Character.java: Rewrote from scratch.

Fri Sep 18 18:15:58 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/ArithmeticException.java,
 	java/lang/ArrayIndexOutOfBoundsException.java,
 	java/lang/ArrayStoreException.java,
 	java/lang/ClassCastException.java,
 	java/lang/ClassNotFoundException.java,
 	java/lang/CloneNotSupportedException.java,
 	java/lang/Exception.java, java/lang/IllegalAccessException.java,
 	java/lang/IllegalArgumentException.java,
 	java/lang/IllegalMonitorStateException.java,
 	java/lang/IllegalThreadStateException.java,
 	java/lang/IndexOutOfBoundsException.java,
 	java/lang/InstantiationException.java,
 	java/lang/InterruptedException.java,
 	java/lang/NegativeArraySizeException.java,
 	java/lang/NoSuchMethodException.java,
 	java/lang/NullPointerException.java,
 	java/lang/NumberFormatException.java,
 	java/lang/RuntimeException.java, java/lang/SecurityException.java,
 	java/lang/StringIndexOutOfBoundsException.java: Rewritten.

	* java/lang/IllegalStateException.java,
 	java/lang/NoSuchFieldException.java,
 	java/lang/UnsupportedOperationException.java: Created.

Fri Sep 18 15:01:42 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/Integer.java, java/lang/Long.java: Rewritten.
	* java/lang/Byte.java, java/lang/Short.java (decode): Uncommented.

Fri Sep 11 16:49:19 1998  Per Bothner  <bothner@cygnus.com>

	* prims.cc (JvRunMain):  No longer need to call _Jv_InitClass.

Thu Sep 10 12:23:55 1998  Warren Levy  <warrenl@cygnus.com>

	* Makefile.am (nat_headers): Added StringIndexOutOfBoundsException.h.

	* Makefile.in: Rebuilt.

	* include/javaprims.h (java::lang): Added
	StringIndexOutOfBoundsException.

	* java/lang/String.java: Added header comment and FIXME comment for 
	missing constructors/methods.
	(endsWith): Adjusted offset into string to look at just the last chars.
	Commented out undocumented method.

	* java/lang/natString.cc: Added includes for
	ArrayIndexOutOfBoundsException.h & StringIndexOutOfBoundsException.h.
	(String::init): Throw StringIndexOutOfBoundsException.
	(String::charAt): Throw StringIndexOutOfBoundsException.
	(String::substring): Throw StringIndexOutOfBoundsException.
	(String::getChars): Throw ArrayIndexOutOfBoundsException.
	(String::getBytes): Throw ArrayIndexOutOfBoundsException.
	(String::compareTo): Return difference/offset between chars/strings.

Tue Sep  8 13:22:33 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/Boolean.java (TYPE): Added comment.
	
  	* java/lang/Byte.java (decode): Added - commented out until dependent
 	code for Integer is written.
	(compareTo): JDK 1.2 methods written.
	(hashCode): Added comment to note that values have been verified.
	
	* java/lang/Short.java (decode): Added - commented out until dependent
	code for Integer is written.
	(compareTo): JDK 1.2 methods written.
	(hashCode): Added comment to note that values have been verified.

	* java/lang/Comparable.java: Created - JDK 1.2 interface.

Fri Sep  4 10:36:35 1998  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h (java::lang): Added VirtualMachineError,
	OutOfMemoryError.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added OutOfMemoryError.h,
	VirtualMachineError.h.
	* prims.cc (_Jv_NewPrimArray): Throw OutOfMemoryError.
	(lookupArray): Likewise.
	(makeUtf8Const): Likewise.
	(_Jv_AllocObject): Likewise.
	(_Jv_NewObjectArray): Likewise.
	Include OutOfMemoryError.h.

	* java/io/natFileDescriptor.cc (newstr): Removed.  Changed callers
	to use JvNewStringLatin1.

	* java/io/io-defs.h: Include java/lang/IOException.h.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added
	ArrayIndexOutOfBoundsException.h,
	ClassFormatError.h,ClassNotFoundException.h,
	ClassCircularityError.h, ClassCastException.h,
	IncompatibleClassChangeError.h, AbstractMethodError.h,
	IllegalAccessError.h, LinkageError.h, Error.h,
	NegativeArraySizeException.h, IOException.h.
	* include/cni.h (SignalError): Removed declaration.
	* java/util/natDate.cc (setTime): Use JvFail, not sorry.
	* java/lang/natObject.cc (clone): Use JvFail, not sorry.
	* java/lang/natClass.cc (getInterfaces): Use JvFail, not sorry.
	(newInstance): Likewise.
	(forName): Likewise.
	* java/io/natFileDescriptor.cc (open_read_write): Use JvFail, not
	sorry.
	(read): Use JvThrow, not SignalError.
	(read): Likewise.
	(write): Likewise.
	(skip): Likewise.
	(close): Likewise.
	(open_read): Likewise.
	(open_write): Likewise.
	(ftell): Likewise.
	(fseek): Likewise.
	(newstr): New function.
	* java/io/natFile.cc (isDirectoryUnchecked): Use JvFail, not
	sorry.
	(lastModifiedUnchecked): Likewise.
	(lengthUnchecked): Likewise.
	* include/javaprims.h (sorry): Removed declaration.
	(java::lang): Added ArrayIndexOutOfBoundsException, LinkageError,
	ClassFormatError, ClassNotFoundException, ClassCircularityError,
	ClassCastException, IncompatibleClassChangeError,
	AbstractMethodError, IllegalAccessError, NegativeArraySizeException.
	* prims.cc (instanceof_array): Use JvFail, not sorry.
	(sorry): Removed.
	Include ArrayIndexOutOfBoundsException.h,
	ClassFormatError.h,ClassNotFoundException.h,
	ClassCircularityError.h, ClassCastException.h,
	IncompatibleClassChangeError.h, AbstractMethodError.h,
	IllegalAccessError.h, NegativeArraySizeException.h.
	(_Jv_ThrowBadArrayIndex): Implemented.
	(JvNewStringUTF): Use JvFail, not sorry.
	(_Jv_FindClass): Likewise.
	(_Jv_NewArray): Likewise.
	(throwException): Removed.
	(getClass): Use JvThrow.
	(processClass): Likewise.
	(_Jv_NewObjectArray): Likewise.
	(_Jv_NewMultiArray): Likewise.
	(_Jv_CheckCast): Likewise.
	(_Jv_LookupInterfaceMethod): Likewise.
	(SignalError): Removed.
	(getClass): Use _Jv_NewStringUtf8Const to create String.

	* java/lang/natSystem.cc (arraycopy): Throw
	ArrayIndexOutOfBoundsException, not IndexOutOfBoundsException.

	* Makefile.in: Rebuilt.
	* Makefile.am (GCJH): Renamed.  Now use `gcjh'.  Changed all
	users.
	* include/java-array.h: Mention gcjh, not gjavah.

	* java/io/natFile.cc (existsUnchecked): Use JvGetStringUTFRegion.
	(canReadUnchecked): Likewise.
	(canWriteUnchecked): Likewise.
	(isFileUnchecked): Likewise.
	* java/io/natFileDescriptor.cc: Don't include cni.h.

	* java/lang/Thread.java (run__): Declare.
	* java/lang/natThread.cc (run__): New method, to avoid compiler
	warning.
	(start): Use run__, not run_.

	* java/io/io-defs.h: Include cni.h and jvm.h.

Thu Sep  3 18:20:08 1998  Per Bothner  <bothner@cygnus.com>

	Re-implement java.lang.String, using "COMPACT_STRINGS" representation.
	* prims.cc (JvAllocString, JvNewString, JvNewStringlatin1):  Moved
	to natString.cc (with suitable renaming, inlines etc).
	(javaString2CString):  Removed.  Subsumed by _Jv_GetStringUTFRegion.
	* java/lang/Class.h:  Renamed Utf8Const to _Jv_Utf8Const.
	* java/lang/String.h:  Removed - now generated using gjavah.
	* java/lang/String.java:  Re-written from scratch. Many native methods.
	* java/lang/natDouble.cc, java/util/natDate.cc:  #include <cni.h>.
	* java/lang/natString.cc:  Many functions re-written for "compact
 	strings" representation, or native java.lang.String methods added.
 	(Utf8Const2JavaString):  Renamed to _Jv_NewStringUtf8Const.
	(_Jv_GetStringUTFLength, _Jv_GetStringUTFRegion):  New methods.
	* java/lang/natClass.cc (getName):  Use new _Jv_NewStringUtf8Const.
	* java/io/natFileDescriptor.cc:  Use new JvGetStringUTFRegion.
	* include/cni.h:  Add inline method.
	* include/java-array.h (jobjectArrayjchar):  gjavah bug work-around.
	* include/javaprims.h:  Moved some stuff frm String.h.
	* include/jvm.h (UTF8_GET, Utf8Const, StringClass):  Moved here.
	* Makefile.am (nat_header):  Added Character.h and String.h.
	(String.h):  Add new rule.

Thu Sep  3 10:28:16 1998  Tom Tromey  <tromey@cygnus.com>

	* no-threads.cc: Include config.h, cni.h, jvm.h.  Don't include
	java-assert.h.
	* posix-threads.cc: Include cni.h, jvm.h.
	* quick-threads.cc: Include cni.h, jvm.h.
	* nogc.cc: Include cni.h, not javaprims.h.
	* java/lang/natFirstThread.cc: Include cni.h, jvm.h.
	* java/lang/natThread.cc: Rearranged #include ordering.  Don't
	include java-assert.h.
	* java/lang/natSystem.cc: Include cni.h.  Don't include
	java-assert.h.
	* java/lang/natRuntime.cc: Include cni.h.  Don't include
	java-assert.h.
	* prims.cc: Rearranged #include ordering.  Don't include
	java-array.h or java-assert.h.
	* boehm.cc: Include config.h, cni.h.
	* exception.cc: Include config.h, cni.h.
	* include/jvm.h: Include java-assert.h.
	* include/cni.h: Include java/lang/Object.h.  Don't include
	java-threads.h or java-array.h.

Thu Sep  3 16:03:08 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/Boolean.java: Rewritten.

Thu Sep  3 10:28:16 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natFirstThread.cc (main_func): New typedef.
	(run): Use main_func, not JvPrivThreadStartFunc.
	* include/no-threads.h (JvPrivThreadStartFunc): Use correct
	argument type.
	* include/posix-threads.h (JvPrivThreadStartFunc): Use correct
	argument type.
	* include/quick-threads.h (JvPrivThreadStartFunc): Use correct
	argument type.

	Can't throw Java exceptions with C++ `throw':
	* quick-threads.cc (qthrow): Use _Jv_Throw, not throw.
	* java/lang/natThread.cc (join): Use _Jv_Throw, not throw.
	(setPriority): Likewise.
	(sleep): Likewise.
	(start): Likewise.
	(stop): Likewise.
	* java/lang/natSystem.cc (arraycopy): Use _Jv_Throw, not throw.
	* prims.cc (_Jv_MonitorEnter): Use _Jv_Throw, not throw.

	Can't catch Java exceptions from C++:
	* java/lang/natThread.cc (finish_): New method.
	(run_): Removed.
	* java/lang/Thread.java (run_): Rewrote in Java.
	(finish_): New native method.

Wed Sep  2 17:30:39 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/Cloneable.java, java/lang/Number.java: Rewritten.

	* include/javaprims.h (java::io): Added Serializable.

Wed Sep  2 15:22:00 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/EmptyStackException.java,
 	java/util/NoSuchElementException.java: Rewritten.
	
  	* java/util/ConcurrentModificationException.java,
 	java/util/MissingResourceException.java,
 	java/util/TooManyListenersException.java: Created.

Wed Sep  2 13:36:57 1998  Tom Tromey  <tromey@cygnus.com>

	* include/cni.h (JvThrow): New function.
	* include/javaprims.h (_Jv_Throw): Declare.

Wed Sep  2 14:07:48 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Observable.java: Rewritten.

Wed Sep  2 13:36:57 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (_Jv_MonitorExit): Assert that object is non-null.
	(_Jv_MonitorEnter): Throw NullPointerException if object is null.
	Include NullPointerException.h.

Tue Sep  1 12:07:35 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc (arraycopy): Removed overlapping-copy
	assignability checks.  Don't bother using memcpy.

	* quick-threads.cc (JvPrivThreadStart): Don't call coop_start.
	(started): Removed.
	* include/quick-threads.h (JvPrivThreadWait): New function.
	* include/no-threads.h (JvPrivThreadWait): New function.
	* include/posix-threads.h (JvPrivThreadWait): New function.
	* prims.cc (JvRunMain): Call JvPrivThreadWait.

	* java/lang/natSystem.cc (arraycopy): Do nothing if count is 0.

	* java/lang/natSystem.cc (arraycopy): Multiply both src and dst
	offsets by size of type that is being copied.

	* java/lang/natThread.cc (start): Don't pass `object' argument to
	JvPrivThreadStart.
	* no-threads.cc (JvPrivThreadStart): Removed `object' argument.
	* posix-threads.cc (JvPrivThreadStart): Removed `object'
	argument.
	* quick-threads.cc (JvPrivThreadStart): Removed `object' argument;
	always pass thread as object.
	* include/quick-threads.h, include/posix-threads.h,
	include/no-threads.h (JvPrivThreadStart): Removed `object'
	argument.

Mon Aug 31 19:11:53 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Dictionary.java: Rewritten.

Mon Aug 31 14:35:55 1998  Tom Tromey  <tromey@cygnus.com>

	* include/quick-threads.h (JvPrivThreadInitData): Use 0, not NULL.
	(JvPrivThreadDestroy): Likewise.
	
Mon Aug 31 12:56:01 1998  Warren Levy  <warrenl@cygnus.com>

	* java/lang/natRuntime.cc (exit): Changed final call to ::exit.

Thu Aug 27 12:24:40 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natSystem.cc: Rewrote from scratch.
	* java/lang/System.java: Rewrote from scratch.
	* java/lang/Class.h (Class): Declare isAssignableFrom.
	* include/javaprims.h (java::lang): Added ArrayStoreException,
	IndexOutOfBoundsException.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added ArrayStoreException.h,
	IndexOutOfBoundsException.h.
	* java/lang/natObject.cc (hashCode): Use _Jv_HashCode.
	* include/jvm.h (_Jv_HashCode): New function.

	* java/lang/natThread.cc (suspend): Call checkAccess.
	(resume): Likewise.
	* java/lang/Thread.java (setDaemon): Call checkAccess.

Thu Aug 27 12:24:40 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Runtime.java: Rewrote from scratch.
	* java/lang/natRuntime.cc: Rewrote from scratch.

	* nogc.cc (JvPrivGCTotalMemory): New function.
	(JvPrivGCFreeMemory): Likewise.
	(total): New global.
	(JvPrivAllocObj): Increment total.
	(JvPrivAllocArray): Likewise.
	(JvPrivAllocBytes): Likewise.
	* include/jvm.h: Declare JvPrivGCTotalMemory, JvPrivGCFreeMemory.
	* boehm.cc (JvPrivGCTotalMemory): New function.
	(sum_blocks): Likewise.
	(JvPrivGCFreeMemory): Likewise.

Wed Aug 26 12:30:32 1998  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h (java::lang): Added FirstThread.
	* java/lang/natFirstThread.cc: New file.
	* java/lang/FirstThread.java: New file.
	* prims.cc (main_signature): Removed.
	(main_name): Removed.
	#include FirstThread.h.
	* Makefile.in: Rebuilt.
	* Makefile.am (TFRIEND): Removed.
	(java/lang/Thread.h): Likewise.
	(FTFRIEND): New macro.
	(java/lang/FirstThread.h): New target.
	(nat_files): Added natFirstThread.o.
	(nat_headers): Added FirstThread.h.
	* include/jvm.h (_Jv_StartFirstThread): Don't declare.
	* java/lang/natThread.cc (_Jv_StartFirstThread): Removed.

	* java/lang/Thread.java (setName): Throw IllegalArgumentException
	if name is null.
	(Thread): Likewise.

	* java/lang/natThread.cc (start): Synchronize the thread.
	(stop): Synchronize the thread.

	* java/lang/ThreadDeath.java: Rewrote from scratch.

	* Makefile.in: Rebuilt.
	* Makefile.am (TGFRIEND): New macro.
	(java/lang/ThreadGroup.h): New target.
	($(nat_files) prims.o boehm.o nogc.o): Native files depend on the
	native headers.
	($(javao_files) $(nat_files) prims.o boehm.o nogc.o): Removed.

	* nogc.cc: Include config.h.

	* java/lang/ThreadGroup.java: Rewrote from scratch.

Tue Aug 25 00:12:54 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Thread.java (checkAccess): Only call in to security
	manager if it exists.
	(Thread): Don't check access when creating the first thread.  Add
	this thread to the appropriate ThreadGroup.

	* java/lang/natThread.cc (run_): Call uncaughtException method on
	the ThreadGroup.

	* java/lang/Runnable.java: Rewrote from scratch.
	* java/lang/Thread.java: Updated copyright comment to correct
	form.

Wed Aug 26 15:16:18 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Random.java: Rewritten.

Wed Aug 26 14:25:39 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* prims.cc (_Jv_NewMultiArray): Need one more slot to store
 	trailing 0 in array[].

Wed Aug 26 12:21:06 1998  Anthony Green  <green@cygnus.com>

	* Makefile.am (AM_MAKEFLAGS): Remove RUNTEST, EXPECT, 
	and RUNTESTFLAGS from AM_MAKEFLAGS.
	(SUBDIRS): Conditionally include testsuite.
	* Makefile.in: Rebuilt.

Tue Aug 25 18:14:53 1998  Anthony Green  <green@cygnus.com>

	* java/lang/Object.h: Include java-assert.h.

Tue Aug 25 17:33:57 1998  Anthony Green  <green@cygnus.com>

	* Makefile.am: Add testsuite directory.
	* configure.in: Build testsuite/Makefile.
	* Makefile.in, configure: Rebuilt.
	
Tue Aug 25 00:12:54 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (JvRunMain): Use _Jv_StartFirstThread.
	* include/jvm.h (_Jv_StartFirstThread): Declare.

	* include/javaprims.h (java::lang): Added Exception,
	RuntimeException.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added NullPointerException.h,
	InterruptedException.h, IllegalArgumentException.h, Exception.h,
	Throwable.h, RuntimeException.h, IllegalThreadStateException.h.
	(java/lang/Thread.h): New target.
	(TFRIEND): New macro

	* include/java-assert.h (JvFail): Use 0 and not NULL.

	* posix-threads.cc (JvPrivThreadStart): Use getPriority() method
	instead of assuming we are a friend of Thread.
	* quick-threads.cc (JvPrivThreadStart): Use isDaemon() method
	instead of assuming we are a friend of Thread.

Mon Aug 24 15:58:36 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc: Rewrote from scratch.
	* java/lang/Thread.java: Rewrote from scratch.
	* prims.cc (JvRunMain): Use new Thread constructor.
	* include/javaprims.h (java::lang): Added InterruptedException.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added java/lang/Thread.h.
	* java/lang/Thread.h: Removed.
	* quick-threads.cc (JvPrivThreadStart): Added `data' argument.
	* no-threads.cc (JvPrivThreadStart): Added JvPrivThread_t
	argument.
	* posix-threads.cc (JvPrivThreadJoin): Removed.
	(JvPrivThreadInitData): Don't initialize join_mutex or join_cond.
	(really_start): Don't notify join_cond.
	(JvPrivThreadStart): Added `data' argument.
	* include/no-threads.h (JvPrivThreadInterrupt): Removed.
	(JvPrivThreadJoin): Likewise.
	Use JvFail instead of sorry.
	(JvPrivThreadSuspend): Removed.
	(JvPrivThreadResume): Removed.
	* include/quick-threads.h (JvPrivThreadInterrupt): Removed.
	(JvPrivThreadJoin): Likewise.
	(JvPrivThreadSuspend): Use JvFail.
	(JvPrivThreadResume): Likewise.
	(JvPrivThreadSuspend): Removed.
	(JvPrivThreadResume): Likewise.
	* include/posix-threads.h (JvPrivThreadInterrupt): Removed.
	(JvPrivThread_t): Removed join_mutex, join_cond.
	Use JvFail instead of sorry.
	(JvPrivThreadSuspend): Removed.
	(JvPrivThreadResume): Likewise.

Tue Aug 25 12:50:13 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Observer.java: Rewritten
	* java/util/Enumeration.java: Rewritten

Tue Aug 25 11:33:54 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/StringTokenizer.java: Rewritten
	* java/util/Stack.java: Added COPYRIGHT-TBD comment
	* java/util/Vector.java: Added COPYRIGHT-TBD comment
	* java/io/Serializable.java: Added COPYRIGHT-TBD comment
	
Fri Aug 21 10:14:22 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-assert.h (JvFail): Call _Jv_Abort even when DEBUG
 	not defined.

	* no-threads.cc (JvPrivThreadStart): Use JvAssert.
	Include java-assert.h.
	* include/java-assert.h: New file.
	* prims.cc (_Jv_Abort): New function.
	Include java-assert.h, not assert.h.
	(_Jv_MonitorExit): Use JvAssert.
	(resolveConstants): Likewise.
	(processClass): Likewise.
	(JvRunMain): Assert that method is found.

	* configure: Rebuilt.
	* configure.in: Check for test subdir.
	* Makefile.in: Rebuilt.
	* Makefile.am (SUBDIRS): Conditional on TESTSUBDIR.

	* prims.cc (JvRunMain): Use NORM_PRIORITY.
	* java/lang/Thread.h (Thread): Added NORM_PRIORITY.

	* prims.cc (resolveConstants): Removed unused variables.
	(processClass): Likewise.

	* include/quick-threads.h (JvPrivThreadCurrent): Use
	coop_getspecific.
	* quick-threads.cc (destroy_data): New function.
	(JvPrivInitThreads): Create key.
	(JvPrivThreadKey): New global.
	(JvPrivThreadStart): Use coop_setspecific.

	* include/quick-threads.h, include/posix-threads.h,
	include/no-threads.h, no-threads.cc, quick-threads.cc,
	posix-threads.cc, nogc.cc, boehm.cc: Added copyright comment.

Thu Aug 20 10:57:30 1998  Tom Tromey  <tromey@cygnus.com>

	* include/no-threads.h (JvPrivThreadInitData): Don't set
	JvPrivOnlyThread.

	* include/quick-threads.h (JvPrivCondWait): coop function now
	takes microseconds.
	(JvPrivThreadJoin): Likewise.

	* java/lang/Thread.h (Thread): Updated declaration of
	JvPrivThreadStart.
	* include/quick-threads.h, include/posix-threads.h: Updated
	declaration of JvPrivThreadStart.
	* include/no-threads.h (JvPrivThreadStart): Changed definition
	into declaration.
	* no-threads.cc (JvPrivThreadStart): Removed `data' argument.
	* quick-threads.cc (JvPrivThreadStart): Removed `data' argument.
	* posix-threads.cc (JvPrivThreadStart): Removed `data' argument.

Wed Aug 19 14:53:59 1998  Tom Tromey  <tromey@cygnus.com>

	* quick-threads.cc (qthrow): New function.
	(JvPrivInitThreads): New function.
	(started): New global.
	(JvPrivThreadStart): Call coop_start if required.
	* include/quick-threads.h (JvPrivThreadCancel): Implement.
	(JvPrivThreadDestroy): Likewise.
	(JvPrivInitThreads): Removed.
	* include/posix-threads.h (JvPrivThreadCancel): Added error
	argument.
	* java/lang/natThread.cc (stop_): Pass exception to
	JvPrivThreadCancel.

Tue Aug 18 12:58:22 1998  Tom Tromey  <tromey@cygnus.com>

	* include/javaprims.h (java::lang): Added
	IllegalArgumentException, IllegalThreadStateException, Math,
	NullPointerException, ThreadDeath.
	(java::util): Added Enumeration.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added java/lang/ThreadGroup.h.

	* java/lang/ThreadGroup.java (ThreadGroup): No-args constructor
	now public.
	(threadsv): Renamed from threads to avoid clash in C++ header.
	(groupsv): Likewise.
	* include/no-threads.h (JvPrivThreadStart): Removed.
	* no-threads.cc (JvPrivThreadStart): New function.
	* java/lang/Thread.java (Thread): New constructor for internal use.
	* java/lang/Thread.h (Thread): Declare JvRunMain as friend.
	(Thread): Declare constructor.
	* prims.cc (JvRunMain): Create the initial Thread and
	ThreadGroup.
	Include <java/lang/Thread.h> and <java/lang/ThreadGroup.h>.
	* posix-threads.cc (JvPrivThreadStart): Added `thread' argument.
	Removed `daemon' argument.

	* prims.cc (JvRunMain): Call _Jv_InitializeSyncMutex.
	* java/lang/Object.h (Object): Declare _Jv_InitializeSyncMutex as
	a friend.
	* java/lang/natObject.cc (_Jv_InitializeSyncMutex): New function.

	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Include THREADINCS.

	* configure: Rebuilt.
	* configure.in: Recognize `qt' as a threads package.

Thu Aug 20 12:42:32 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Stack.java (pop): Null out topmost node for robustness.

Thu Aug 20 12:30:30 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Stack.java: Rewritten.
	* java/util/Vector.java (isEmpty): Simplified expression.

Wed Aug 19 18:02:19 1998  Warren Levy  <warrenl@cygnus.com>

	* prims.cc (_Jv_NewObjectArray): Renamed from JvNewObjectArray.
	(soft_anewarray): Removed, _Jv_NewObjectArray used instead.

	* include/java-array.h (JvNewObjectArray): Created inline to
 	_Jv_NewObjectArray.

	* java/lang/Class.h (_Jv_NewObjectArray): Renamed from
 	JvNewObjectArray.
	
Wed Aug 19 14:12:02 1998  Warren Levy  <warrenl@cygnus.com>

	* java/util/Vector.java: Rewritten.
	* java/io/Serializable.java: Created.

Fri Aug 14 10:31:54 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/Float.java (NEGATIVE_INFINITY, POSITIVE_INFINITY):
	Infinity is 1/0, not 1/1.

	* boehm.cc (JvPrivAllocArray): Use GC_generic_malloc.

	* configure: Rebuilt.
	* configure.in: Removed duplicate AC_ARG_WITH.

Thu Aug 13 14:51:47 1998  Warren Levy  <warrenl@cygnus.com>

	* prims.cc (_Jv_ThrowBadArrayIndex): Renamed from
 	soft_badarrayindex.
	(_Jv_InitClass): Renamed from soft_initialise_class.
	(_Jv_NewMultiArray): Renamed from soft_multianewarray.
	(_Jv_CheckCast): Renamed from soft_checkcast.
	(_Jv_LookupInterfaceMethod): Renamed from soft_lookupinterfacemethod.
	(_Jv_CheckArrayStore): Renamed from soft_checkarraystore.
	(JvRunMain): Call JvInitClass instead of soft_initialise_class.
  	* include/cni.h (JvInitClass): New function.
	(_Jv_InitClass): Renamed from soft_initialise_class.

Wed Aug 12 10:07:04 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (CXX): Don't set.
	* Makefile.in: Rebuilt.
	* Makefile.am (AM_CXXFLAGS): New macro.

	* Makefile.in: Rebuilt.
	* Makefile.am ($(javao_files) $(nat_files) prims.o boehm.o
	nogc.o): New target.

	* boehm.cc (mark_obj): Update PUSH_CONTENTS call for new Boehm
	GC.
	(mark_array): Likewise.

Tue Aug 11 11:44:53 1998  Per Bothner  <bothner@cygnus.com>

	* java/lang/Class.h (JvMethod):  Removed some unused fields.
	(JvField.info):  Removed unused idx union variant.

Mon Aug 10 15:00:14 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (makeUtf8Const): Mask off high bits of hash value to
	match compiler.

Mon Aug  3 16:13:54 1998  Per Bothner  <bothner@cygnus.com>

	* configure.in, configure (CXX):  Add -fvtable-thunks.

Thu Jul 30 14:34:47 1998  Per Bothner  <bothner@cygnus.com>

	* java/lang/Object.java (finalize):  Move first.
	* java/lang/Object.h (_JvObjectPrefix):  New dummy base class.
	(Object):  Re-arrange order to match Object.java.

Tue Jul 28 21:42:16 1998  Per Bothner  <bothner@cygnus.com>

	* prims.cc (hashUtf8String):  Fix - use new JavaSoft specification.
	* java/lang/natString.cc (hashChars):  Likewise.

	* prims.cc (RuntimeClass):  New macro.
	(JvRunMain):  Do soft_initialise_class of RuntimeClass before exit.

Mon Jul 27 22:20:10 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (AM_MAKEFLAGS): New macro.

Fri Jul 24 11:21:24 1998  Tom Tromey  <tromey@cygnus.com>

	* nogc.cc: Include <javaprims.h>.

	* Makefile.in: Rebuilt.
	* Makefile.am (GJAVAH): gjavah no longer in java subdir.

Thu Jul 23 11:38:40 1998  Tom Tromey  <tromey@cygnus.com>

	* exception.cc (terminate): Removed.
	(unexpected): Removed.

	* configure: Rebuilt.
	* configure.in: Handle case where target subdir is ".".

	* configure: Rebuilt.
	* configure.in: Compute COMPPATH based on --with-target-subdir
	option.  Added --with-target-subdir and --with-cross-host.  Use
	--with-cross-host to determine when a cross compiler is in use.

	* Makefile.in: Rebuilt.
	* Makefile.am (GJAVAH): Include COMPPATH.
	* configure: Rebuilt.
	* configure.in: Subst COMPPATH.

Mon Jul 20 16:13:43 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (lockMutex): Removed.
	(unlockMutex): Likewise.
	(processClass): Lock the class using a JvSynchronize object.

Fri Jul 17 11:27:48 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natString.cc (gc_calloc_fixed): Removed.
	(gc_free_fixed): Removed.
	(rehash): Use JvPrivAllocBytes, not gc_calloc_fixed; don't bother
	freeing old value of strhash.

	* exception.cc (_Jv_type_matcher): Cast first argument to
	_Jv_IsInstanceOf.

Thu Jul 16 14:51:44 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-array.h (jstringArray): New type.
	* java/lang/natSystem.cc (setProperty): Removed.
	(initProperties): Directly call JvNewStringLatin1 for arguments.
	* java/util/natDate.cc: Include java/util/Date.h, not
	java-util.h.
	(setTime): Removed.
	* java/io/FileDescriptor.java (available): No longer static.
	* java/lang/natDouble.cc (Double): Removed class definition.
	* include/javaprims.h (java::lang::Number): Declare.
	(java::lang::NumberFormatException): Likewise.
	(java::io::FilenameFilter): Likewise.
	(java::lang::Character): Likewise.
	(java::lang::Error): Likewise.
	(java::lang::SecurityManager): Likewise.
	(java::util::Vector): Likewise.
	(java::io::FileNotFoundException): Likewise.
	(java::io::IOException): Likewise.
	(java::lang::NativeLang): Likewise.
	(java::lang::UnsatisfiedLinkError): Likewise.
	(java::util::StringTokenizer): Likewise.
	(java::io::InputStream, java::io::OutputStream): Likewise.
	(java::io::PrintStream, java::lang::SecurityException): Likewise.
	(java::util::Hashtable): Likewise.
	* Makefile.in: Rebuilt.
	* Makefile.am (nat_headers): Added java/lang/Double.h,
	java/lang/Number.h, java/lang/System.h, java/lang/Runtime.h.
	(MOSTLYCLEANFILES): Added nat_headers.
	* include/jvm.h: Moved many defines, declarations, and functions
	to java/lang/Class.h.
	(struct JvSyncInfo): Moved to java/lang/Object.h.
	(UTF8_GET): Moved to java/lang/String.h.

Wed Jul 15 09:02:31 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/io-defs.h: Don't include java-io.h.
	* include/java-io.h: Removed.
	* include/javaprims.h: Include java::io.

Tue Jul 14 17:04:26 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-io.h (File): Removed
	(FileDescriptor): Likewise.

	* java/io/io-defs.h: Include java/io/File.h and
	java/io/FileDescriptor.h.

	* Makefile.in: Rebuilt.
	* Makefile.am (GJAVAH): New macro.
	(.class.h): New rule.
	(SUFFIXES): Added .h.
	(nat_headers): New macro.
	($(nat_headers)): New target.
	(BUILT_SOURCES): Added nat_headers.

	* include/java-util.h: Removed.

Fri Jul  3 10:17:14 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-io.h: Changed to avoid java-lang.h.
	* java/lang/natThread.cc: Include java/lang/Thread.h, not
	java-lang.h.
	* java/lang/natSystem.cc: Include java/lang/System.h, not
	java-lang.h.
	* java/lang/natString.cc: Include java/lang/String.h, not
	java-lang.h.
	* java/lang/natRuntime.cc: Include java/lang/Runtime.h, not
	java-lang.h.
	* java/lang/natClass.cc: Include java/lang/Class.h, not
	java-lang.h.
	* java/lang/natDouble.cc: Include java/lang/Object.h, not
	java-lang.h.
	* java/lang/natObject.cc: Include java/lang/Object.h, not
	java-lang.h.
	* exception.cc: Don't include java-lang.h.
	* posix-threads.cc: Include java/lang/Thread.h, not java-lang.h.
	* no-threads.cc: Include java/lang/Thread.h, not java-lang.h.
	* nogc.cc: Don't include java-lang.h.
	* boehm.cc: Include java/lang/Class.h, not java-lang.h.
	* prims.cc (processClass): Don't use `init_type'; just cast to
	type directly.
	Include java/lang/Class.h and jvm.h, not java-lang.h.
	(JvAllocObject): Wrote single-argument version.
	(PrimClass): Inherit from Class.
	(initPrimClass): Removed.
	* include/java-lang.h: Removed.
	* include/jvm.h: Declare struct _dispatchTable.
	* include/cni.h: Don't declare _Jv_MonitorEnter,
	_Jv_MonitorExit, struct _dispatchTable.
	* include/javaprims.h: Moved all typedefs here, from cni.h.
	* java/lang/Class.h: New file.
	* include/java-array.h: New file.
	* java/lang/Object.h: New file.

	* prims.cc (classFromSig): Now static.

Wed Jul  1 12:28:48 1998  Tom Tromey  <tromey@cygnus.com>

	* include/cni.h: Don't mention soft_new.
	* include/java-lang.h (Object): Don't mention soft_new.  Mention
	_Jv_NewPrimArray, not newPrimArray.
	* prims.cc (soft_new): Removed.
	(_Jv_NewArray): Renamed from soft_newarray.
	(soft_anewarray): Use JvNewObjectArray.
	(newArray): Likewise.
	(newRefArray): Removed.
	(_Jv_NewPrimArray): Renamed from newPrimArray.
	(equalUtf8Consts): Now static.
	(soft_instanceof): Removed.
	* java/lang/natDouble.cc (doubleToString): Now static.

	* java/lang/natDouble.cc (java_lang_Double_doubleToLongBits,
	java_lang_Double_longBitsToDouble, java_lang_Double_toString):
	Removed.

Tue Jun 30 10:54:57 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-lang.h: Renamed functions to _Jv_MonitorEnter and
	_Jv_MonitorExit.
	* include/cni.h: Renamed functions to _Jv_MonitorEnter and
	_Jv_MonitorExit.
	* include/no-threads.h (JvPrivMutexLock): Always return -1.
	(JvPrivMutexUnlock): Likewise.
	* prims.cc (_Jv_MonitorEnter): Renamed from soft_monitorenter.
	Return value now jint.
	(_Jv_MonitorExit): Renamed from soft_monitorexit.  Return value
	now jint.

	* Makefile.in: Rebuilt.
	* Makefile.am: Don't allow `jV' names.
	(maintainer-check): Depend on libjava.a.
	* exception.cc (_Jv_eh_free): Renamed from __jV_eh_free.

	* Makefile.in: Rebuilt.
	* Makefile.am (NM): New macro.
	(maintainer-check): New target.

	* include/posix-threads.h (_MIT_POSIX_THREADS): Removed.

	* configure: Rebuilt.
	* configure.in: Use --enable-threads, not --enable-gc.  Fix
	documentation for --enable-threads.  Changed option to work like
	identical option in gcc/configure.

Mon Jun 29 10:44:29 1998  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (mark_array): Use JvGetArrayLength.

Thu Jun 25 11:56:21 1998  Per Bothner  <bothner@cygnus.com>

	* exception.cc:  New file (mostly written by Andrew MacLeod),
	exception handling support.
	* Makefile.am (libjava_a_SOURCES), Makefile.in:  Add exception.cc.
	Remove -fexceptions - it is now the default.

	* prims.cc (JvIsInstanceOf):  Renamed to _Jv_IsInstanceOf.
	(JvAllocObject):  Renamed to _Jv_AllocObject.
	(soft_athrow):  Removed.  Replaced by _Jv_Throw in exception.cc.
	(loadClass):  Renamed to _Jv_FindClass.
	* include/cni.h (JvIsInstanceOf, JvAllocObject).  Make into
	inline methods that call _Jv_IsInstanceOf and _Jv_AllocObject.
	* include/java-lang.h (JvGetArrayLength):  New CNI function.
	* include/jvm.h (_Jv_FindClass):  Added declaration.

	* java/lang/natString.cc:  More implementation if COMPACT_STRINGS.

Wed Jun 24 16:41:30 1998  Per Bothner  <bothner@cygnus.com>

	* java/lang/natClass.cc (getName):  Add implementation.
	* java/lang/Throwable.java (printStackTrace): Handle missing backtrace.

Tue Jun 23 15:56:24 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (.class.o): Added -fexceptions.

Mon Jun 15 14:54:06 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in: Don't check for __nanosleep.
	* posix-threads.cc (nanosleep): Never define.

Sun Jun 14 22:37:23 1998  Tom Tromey  <tromey@cygnus.com>

	* posix-threads.cc (JvPrivCondWait): Fixed computation of
	timespec.

Thu Jun 11 10:51:44 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natThread.cc (enumerate): Uncommented.
	* java/lang/Thread.java (interrupted_): Renamed from `interrupt_'.
	(interrupt): Call it.

Wed Jun 10 15:57:16 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (GCLIBS): Use `-lgc' so gjavac can recognize it.

Mon Jun  8 12:04:11 1998  Tom Tromey  <tromey@cygnus.com>

	* include/no-threads.h (JvPrivThreadInterrupt): New method.
	* include/java-lang.h (Thread): Added `interrupted_' method.
	* java/lang/Thread.java (interrupted_): New method.
	* java/lang/natThread.cc (join): Possibly throw interrupted
	exception after join finishes.
	(interrupted_): New method.
	* posix-threads.cc (JvPrivThreadInitData): Initialize join_mutex,
	join_cond.
	(JvPrivThreadJoin): New function.
	(really_start): Notify all threads waiting for this thread.
	(struct starter): Added `data' member.
	(JvPrivThreadStart): Set it.
	* include/posix-threads.h (JvPrivThread_t): Added join_mutex,
	join_cond.
	(JvPrivThreadJoin): No longer inline.
	(JvPrivThreadInterrupt): New function.

	* include/no-threads.h (JvPrivThreadSleep): Removed.
	* posix-threads.cc (JvPrivThreadSleep): Removed.

Fri Jun  5 13:51:25 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (THREADOBJS): Initialize to no-threads.o in
	no-threads case.
	* posix-threads.cc (key): New global.
	(JvPrivInitThreads): New function.
	(really_start): Set thread-specific data to point to object.
	(JvPrivThreadStart): Added `daemon' argument.
	(JvPrivThreadSleep): Added `data' argument.
	* include/posix-threads.h (JvPrivInitThreads): Removed
	implementation.
	(JvPrivThreadCurrent): New function.
	* include/no-threads.h (JvPrivThreadInitData): Initialize
	JvPrivOnlyThread.  Added `thread' argument.
	(JvPrivThreadCurrent): New function.
	(JvPrivThreadStart): Added `daemon' argument.
	* no-threads.cc: New file.
	* java/lang/natThread.cc (init_data): New function.
	(isAlive): Removed.
	(start): Set `alive' member.
	(stop_): Clear `alive' member.
	(destroy): Likewise.
	(currentThread): Implemented.
	(start): Pass `daemon' argument to JvPrivThreadStart.
	(sleep): Rewrote.
	* include/java-lang.h (Thread): Added `alive', `tsync' members.
	(Thread): Added `init_data' method.
	* java/lang/Thread.java (alive, data): New instance variables.
	(init_data): New private method.
	(isAlive): No longer native.

Thu Jun  4 14:09:32 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-lang.h (JvRunMain): Declare.
	* include/jvm.h (JvPrivInitGC): Revert to C++ linkage.
	* prims.cc (JvRunMain): New function.
	(main_signature, main_name): New globals.

	* boehm.cc (mark_array): Use `elements' function and not
	operator[] on jarray.

	* posix-threads.cc: Include <config.h>.  Define nanosleep if
	required.

	* configure: Rebuilt.
	* configure.in: Check for _nanosleep.

	* configure: Rebuilt.
	* configure.in: Check for pthread_mutexattr_settype.

	* include/cni.h (class JvSynchronize): New class.
	* java/lang/Thread.java (sleep): Throws InterruptedException.
	(join): Throws InterruptedException.
	(resume): Not native.
	(resume_): New method.
	(start): Now synchronized.
	(stop_): New method.
	(Thread): Synchronize when accessing threadNumber.
	(misc): Removed.
	* java/lang/natThread.cc (throwException): New macro.
	(sleep): Throw InterruptedException.
	(resume_): Renamed.
	(stop_): Renamed.
	* include/java-lang.h (Runtime): Added interrupted().

	* boehm.cc (call_finalizer): Correctly initialize jobj.
	* include/java-lang.h (Runtime): Added getRuntime() and exit().

	* java/lang/natSystem.cc (currentTimeMillis): Use #elif, not
	`#elseif'.

	* configure: Rebuilt.
	* configure.in: Added support for --disable-threads.
	* include/no-threads.h: New file.

	* acconfig.h (HAVE_PTHREAD_MUTEXATTR_INIT): New macro.

	* Makefile.in: Rebuilt.
	* Makefile.am (EXTRA_libjava_a_SOURCES): Added posix-threads.cc.
	(libjava_a_DEPENDENCIES): Added THREADOBJS.
	(libjava_a_LIBADD): Added THREADOBJS.
	* configure: Rebuilt.
	* configure.in: Added --with-threads option.
	* posix-threads.cc: New file.
	* include/posix-threads.h: New file.
	* include/java-lang.h (Object): Added static member sync_mutex,
	member sync_info, method init_mutex.
	(struct JvSyncInfo): New struct.
	Include "java-threads.h".
	* prims.cc (soft_monitorenter): Wrote.
	(soft_monitorexit): Likewise.
	* java/lang/natObject.cc (init_mutex): New method.
	(notify): Wrote.
	(notifyAll): Wrote.
	(wait): Wrote.
	(sync_mutex): Define.
	Include "java-threads.h".

Tue Jun  2 15:24:33 1998  Per Bothner  <bothner@cygnus.com>

	* include/java-lang.h (JvPrivInitGC):  Make extern "C".
	* include/jvm.h (JvConvertArgv, JvNewObjectArray):  Likewise.

Mon Jun  1 11:21:34 1998  Per Bothner  <bothner@cygnus.com>

	* include/cni.h (jbyte etc):  Re-define using __java_byte etc.
	Added extern "Java" in places to tell G++ Object is a "Java" type.
	Other minor renaming and fixes.
	* include/java-io.h (FileDescriptor):  Add friend class declarations.
	G++ no longer allows non-Java types in method parameters and results
	of Java classes.  Converted most offending methods to friends.
	* java/lang/natDouble.cc (Double::toString):  Rename to doubleToString.
	* java/lang/natSystem.cc (setProperty):  Make friend.
	* java/lang/natString.cc, include/java-lang.h (String):  Rename
	methods findInternSlot to __JvStringFindSlot and __JvStringGetSlot.
	* include/java-lang.h (JArray):  Remove getData and eoprator[].
	Add elements friend function instead.
	* java/lang/natSystem.cc (arraycopy):  Use elements function.
	* java/io/natFileDescriptor.cc (read, write):  Likewise.
	* include/java-lang.h (Object):  Remove unused make method.
	(System::setProperty(char*,char*)): Turn into friend function.
	(Class):  Rename newObject by JvAllocObject.
	* prims.cc:  Update to use JvAllocObject, and elements.

	* java/lang/natDouble.cc:  Fix double -> jdouble.

Wed May 20 16:50:06 1998  Per Bothner  <bothner@cygnus.com>

	* Makefile.am (INCLUDES):  Add -Iinclude (to get config.h).

Mon May 18 13:46:02 1998  Tom Tromey  <tromey@cygnus.com>

	* java/lang/natRuntime.cc (finalize_on_exit): Define.
	* include/java-lang.h (Runtime): finalize_on_exit and
	runFinalizersOnExit now static.
	* java/lang/Runtime.java (runFinalizersOnExit): Now static, to
	match JDK 1.2b3.
	(finalize_on_exit): Now static.

	* boehm.cc (mark_obj): Get class using getClass() method on
	object.
	(_dispatchTable): Removed.

Mon May 11 15:26:52 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFileDescriptor.cc (open_read): Only call open if
	HAVE_OPEN defined.
	(open_write): Likewise.

	* Makefile.in: Rebuilt.
	* Makefile.am ($(nat_files)): Depend on config.h.

Thu May  7 16:22:00 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (ObjectClass): Now a macro; updated for new class name
	mangling scheme.
	(StringClass): Likewise.
	(ClassClass): Likewise.

Wed May  6 00:26:44 1998  Tom Tromey  <tromey@cygnus.com>

	* java/io/natFileDescriptor.cc (available): Do nothing unless
	HAVE_SELECT defined.
	* java/util/natDate.cc (setTime): Conditional on
	HAVE_GETTIMEOFDAY.
	(toString): Conditional on HAVE_TIME.
	* aclocal.m4, configure: Rebuilt.
	* acinclude.m4: New file.
	* configure.in: Don't actually call AM_EXEEXT.  Call
	AC_CANONICAL_HOST.  Use LIB_AC_PROG_CC and LIB_AC_PROG_CXX.  Added
	--with-target-subdir option.  Check for select and open
	functions.

Tue May  5 00:10:45 1998  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (JvPrivRegisterFinalizer): Changed interface.
	(call_finalizer): Likewise.
	* nogc.cc (JvPrivRegisterFinalizer): Changed interface.
	* prims.cc (newObject): Pass actual method pointer to
	JvPrivRegisterFinalizer.
	* include/jvm.h (JvPrivFinalizerFunc): New typedef.
	(JvPrivRegisterFinalizer): Changed interface.

	* Makefile.in: Rebuilt.
	* Makefile.am (MOSTLYCLEANFILES): New macro.
	(CLEANFILES): Removed javao_files.

Fri May  1 22:52:24 1998  Tom Tromey  <tromey@cygnus.com>

	* nogc.cc: New file.
	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Use GCINCS, not paths to boehm-gc.
	(EXTRA_libjava_a_SOURCES): New macro.
	(libjava_a_SOURCES): Removed boehm.cc.
	(libjava_a_DEPENDENCIES): Added GCOBJS.
	(libjava_a_LIBADD): Likewise.
	* configure: Rebuilt.
	* configure.in: Added code for --enable-gc=TYPE.

Thu Apr 30 14:54:00 1998  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (mark_array): Don't further dereference pointer from
	array.

	* boehm.cc: Include <boehm-config.h>, not <private/config.h>.
	* Makefile.in: Rebuilt.
	* Makefile.am (INCLUDES): Removed -I for boehm-gc/include; added
	one for boehm-gc build directory.

Wed Apr 29 09:45:19 1998  Tom Tromey  <tromey@cygnus.com>

	* include/java-lang.h (finalize_on_exit): New instance variable in
	java::lang::Runtime.
	(runFinalizersOnExit): New method.
	* java/lang/Runtime.java (finalize_on_exit): New instance
	variable.
	(runAllFinalizers_): New private method.
	(runFinalizersOnExit): New method.
	* boehm.cc (JvPrivRunFinalizers): New function.
	(JvPrivRunAllFinalizers): Likewise.
	(JvPrivRunGC): Likewise.
	* java/lang/natRuntime.cc: Include "jvm.h".
	(gc): Call JvPrivRunGC.
	(runFinalization): Call JvPrivRunFinalizers.
	(runFinalizersOnExit): New method.
	(exit_): Call JvPrivRunAllFinalizers if required.
	* include/jvm.h: Declare JvPrivRunFinalizers,
	JvPrivRunAllFinalizers, JvPrivRunGC.

Tue Apr 28 15:06:50 1998  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc (JvPrivRegisterFinalizer): New function.
	(call_finalizer): Likewise.
	* include/jvm.h: Declare JvPrivRegisterFinalizer.
	* prims.cc (finalize_name): New global.
	(newObject): Just call other newObject.
	(newObject): Register finalizer if it exists.

Mon Apr 27 12:47:03 1998  Tom Tromey  <tromey@cygnus.com>

	* prims.cc (gc_malloc): Removed.
	(makeUtf8Const): Use JvPrivAllocBytes.
	(lookupArray): Likewise.
	(newPrimArray): Likewise.
	(JvNewObjectArray): Use JvPrivAllocArray.
	(newObject): Use JvPrivAllocObj.
	(newObject): Likewise.
	Changed Method -> JvMethod everywhere.
	Changed Field -> JvField everywhere.
	* include/java-lang.h (Object): Changed type of `fields' to
	JvField*.
	(jmethodID, jfieldID): New typedefs.
	(Object): JvGetFirstInstanceField and JvNumInstanceFields now
	friends.
	* include/jvm.h (struct JvMethod): Renamed from Method, and moved
	from java-lang.h.
	(METHOD_NATIVECODE): Moved from java-lang.h.
	(class JvField): New class.
	(JvGetFirstInstanceField): New function.
	(JvFieldIsRef): Likewise.
	(JvGetObjectField): Likewise.
	(JvNumInstanceFields): Likewise.

Thu Apr 23 16:42:11 1998  Tom Tromey  <tromey@cygnus.com>

	* boehm.cc: New file.
	* Makefile.in: Rebuilt.
	* Makefile.am (libjava_a_SOURCES): Added boehm.cc.
	(INCLUDES): Added -I options to find boehm-gc files.

Wed Apr 29 15:11:37 1998  Tom Tromey  <tromey@cygnus.com>

	* configure: Rebuilt.
	* configure.in (CXX): Put -fno-rtti here and not in CXXFLAGS.

	* Makefile.in: Rebuilt.
	* Makefile.am (nat_files): New macro.
	(libjava_a_DEPENDENCIES): Use it.
	(libjava_a_LIBADD): Likewise.
	($(nat_files)): New static pattern rule.
	(class_files): Run separate find to find .class files.
	(javao_files): Compute based on class_files.
	(BUILT_SOURCES): New macro.

Thu Apr 23 16:42:11 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.am (java_files): New macro.
	(class_files): Likewise.
	(javao_files): Likewise.
	(libjava_a_DEPENDENCIES): Include $(javao_files).
	(libjava_a_LIBADD): Likewise.
	(classes.stamp): Depend on $(java_files); only recompile changed
	files.
	(here): New macro.
	(CLEANFILES): Don't run find; use macros.  Don't mention
	libjava.a.
	(.class.o): New target.
	(compiled.stamp): Removed.

Thu Apr 23 14:17:43 1998  Per Bothner  <bothner@cygnus.com>

	* java/io/{Reader,InputStreamReader,FileReader,BufferedReader,
	LineNumberReader}>java:  Newly-implemented standard classes.

Thu Apr 23 14:02:04 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Rebuilt.
	* Makefile.am (compiled.stamp): Use $(CC), not $(GCC).

	* Makefile.in: Rebuilt.
	* Makefile.am (hack): New macro.
	(libjava_a_LIBADD): Use $(hack) to work around automake oddity.

Wed Apr 22 16:49:57 1998  Tom Tromey  <tromey@cygnus.com>

	* include/config.h.in: New file.
	* include/config.h: Removed.
	* acconfig.h: New file.
	* Makefile.am (AR, ARFLAGS, JAVAC, GCC, CXX, CXXFLAGS): Removed.
	(lib_LIBRARIES, libjava_a_SOURCES, libjava_a_DEPENDENCIES,
	libjava_a_LIBADD): New macros.
	(INCLUDES): New macro.
	(prims.o): Removed.
	(.cc.o): Removed.
	(SUFFIXES): Removed.
	(all): Removed.
	(libjava.a): Removed.

	* configure: Rebuilt.
	* configure.in: Call AC_PROG_CC, AC_PROG_CXX, AC_PROG_RANLIB.
	Look for headers and functions we require.  Create
	include/config.h.

Mon Apr 20 22:25:00 1998  Per Bothner  <bothner@cygnus.com>

	* prims.cc (instance_class, instanceof, JvIsInstanceOf, JvConvertArgv,
	soft_instanceof, newObject, JbNewObjectArray, soft_checkcast,
	soft_lookupinterfacemethod):  New functions.
	(PrimClass):  Actually initialize the primitive classes.
	(Utf8Const2JavaString):  Moved to java/lang/natString.cc.

	* include/java-util.h:  Removed java::util definition.
	* include/cni.h:  Moved java::util here and added Properties.
	Added more function prototypes.
	* include/java-lang.h:  Added mroe methods and friend declarations.
	* include/config.h (HAVE_GETTIMEOFDAY, HAVE_TIME):  Added.
	* include/jvm.h (strLengthUtf8):  Add declaration.
	
	* java/lang/{Integer,Long,Boolean,Character,Float,Double}.java (TYPE):
 	New static field.
	* java/lang/{Byte,Short,Void}.java:  New classes.
	* java/lang/Character.java (isJavaIdentifierStart,
	JavaIdentifierPart):  New static methods.
	* java/lang/Number.java (byteValue, shortValue):  New methods.

	* java/lang/String.java (intern, hashCode):  Make native.
	* java/lang/natString.cc:  New file.  Handle the string pool.
	* Makefile.am:  Build natString.o.  Use CXXFLAGS.

	* java/lang/Class.java (isArray, isPrimitive, getComponentType,
	isInstance, isAssignableFrom), java/lang/natClass.cc:  New methods.
	* java/lang/Throwable.java (<init>):  Don't fillInStackTrace yet.
	* java/lang/System.java (setProperty):  New private method.
	(initProperties):  Take argument, and make native.
	* java/lang/natSystem.cc:  Implement (preliminary) initProperties.
	(currentTimeMillis):  Make more robust.

	* java/io/{Writer,PrintWriter,OutputStreamWriter}.java:  New classes.
	* java/io/UnsupportedEncodingException.java:  New exception class.

	* java/io/DataInputStream.java:  Don't use a PushbackInputStream.
	* java/io/FilterOutputStream.java:  Add missing 'extends OutputStream'.
	
Fri Apr 10 11:52:10 1998  Per Bothner  <bothner@cygnus.com>

	* Makefile.am (CXXFLAGS, JC1FLAGS):  New macro.
	* prims.cc:  Added bunch of stuff.
	* include/cni.h:  Added various definitions.
	* include/java-lang.h:  Added Method, various friends, some macros.

	* include/config.h:  Added HAVA_MEMMOVE and HAVE_MEMCPY.
	* java/lang/System.java (arraycopy):  Make native.

Sun Apr  5 23:58:51 1998  Per Bothner  <bothner@cygnus.com>

	* java/lang/{netObject.cc,natClass.cc,natDouble.cc,natRuntime.cc,
	natSystem.cc,natThread.cc}:  Native (C++) methods for various classes.
	* java/lang/ClassLoader.java (defineClass):  Now takes extra argument.
	* java/lang/Double.java (toString, doubleToLongBits, longBitsToDouble):
	Make native.
	* java/lang/Runtime.java:  Declare methods as native instead of
	using NativeLang.
	* java/lang/SecurityManager.java (getClassContext):  Just throw Error.
	* java/lang/System.java:  Comment out some stuff, for now.
	* java/lang/Thread.java:  Re-write.  Use native methods.
	* java/lang/NativeLang.java:  Remove most of it.
	
	* java/util/natDate.cc:  Native (C++) methods for Date.
	* java/util/{Calendar.java,GregorianCalendar.java}:  New classes.
	* java/util/Date.java:  Complete re-write.

	* java/io/io-defs.h:  New header file.
	* java/io/FileDescriptor.java:  Add a bunch of private methods,
	mostly moved from NativeIO.java and natNativeIO.cc.
	* java/io/{natFile.cc,java/io/natFileDescriptor.cc}:  New native code.
	* java/io/File.java:  Use new code.
	* java/io/{FileInputStream.java.FileOutputStream.java,
	RandomAccessFile.java}:  Use new private FileDescriptor methods.
	* java/io/NativeIO.java:  Removed, no longer used.

	* java/io/StreamTokenizer.java (numericChars):  Make char array.

	* include/*.h:  Various header files used by the C++ native code.

	* Makefile.am, Makefile.in, aclocal.m4, configure, configure.in:
	New autoconf+automake-based setup.
	* prims.cc:  New file for Java "primitives".

