2002-02-15  Per Bothner  <per@bothner.com>

	* Makefile.am (java_sources):  Leave out CallContext.java.
	(EXTRA_DIST):  Leave out $(java_sources), but add CallContext.java.in.

2002-02-14  Per Bothner  <per@bothner.com>

	* CallContext.java.in (getOnlyInstance, setInstance):  New methods.
	(getInstance):  Use getOnlyInstance and setInstance/

2002-02-13  Per Bothner  <per@bothner.com>

	* CallContext.java:  Removed to CallContext.java.in.
	* CallContext.java.in:  Conditionalize on --with{,out}-java-references.
	If with references, using ThreadLocal (Java2 only).  This allows
	various simplifications at the (acceptable) cost when *not* using
	ThreadLocal we use a threadMap that might prevent some non-Future
	threads from being gc'd.
	(getInstance(Thread), setInstance, mustRemoveMarker, <init>s,
	defaultContext, getDefaultContext):  Remove.
	* Makefile.am:  Add sed stuff to build CallContext.java.
	* CpsProcedure.java (applyN):  Simplify using CallContext.getInstance.
	* Future.java (setCallContext):  Remove - no longer needed.
	(run):  No longer call setCallContext.
	(getFluids):  Update to use correct CallContext.getInstance.

	* SFormat.java (print):  Must handle Char explicitly, since Char
	no longer implements Printable.

2002-02-12  Per Bothner  <per@bothner.com>

	* CallContext.java:  Allow fluid bindings for any thread,
	not just Future.  Map Thread->CallContext.
	(threadMap):  New static field.
	(currentThread):  New field.
	(<init>):  New constructors.
	(defaultContext):  New field.
	(setMainContext):  New method - sets .defaultContext.
	(getInstanceForCurrentThread):  Renamed to getInstance.
	(getInstance):  Use threadMap.
	(fluidBindings, setFluids, resetFluids):  Moved from Future.
	(resetMarker):  New static field.
	(resetFluids):  Check for resetMarker.
	* Future.java (setCallContext):  Also set context's currentThread.
	(fluidBindings):  Moved to CallContext.java.
	(setFluids, resetFluids):  Deprecated - just call CallContext methods.
	(defaultContext, getDefaultContext):  Removed - now go via CallContext.
	(getFluids):  Just get current CallContexts's fludiBindings.
	(getContext):  Removed - no longer used.
	* MethodProc.java (match, applyN):  Use CallContext.getInstance.

	* CallContext.java (getEnvironment):  New method.
	* Environment.java (global):  Make non-private, for new method.

	* MethodProc.java (mostSpecific):  Return null if no argcount overlap.

2002-01-23  Per Bothner  <per@bothner.com>

	* Values.java (make):  Change return type to Values.

	* OutPort.java:  New extends gnu.lists.PrintConsumer.
	(write Boolean, writeFloat, writeDouble, writeInt, writeLong,
	beginDocument, endDocument, writeObject, ignoring):  Removed -
	use inherited methods instead.

2002-01-19  Per Bothner  <per@bothner.com>

	* CallContext.java (threadMap):  New static Hashtable field.
	(getInstanceForCurrentThread, getInstance, setInstance):
	New static methods.
	* CpsProcedure.java (applyN):  Use (or create) CallContext associated
	with this thread.

	* Future.java (context):  New CallContext field.
	(getCallContext, setCallContext):  New methods.

2002-01-07  Per Bothner  <per@bothner.com>

	* OutPort.java (beginDocument, endDocument):  New methods.

2001-12-24  Per Bothner  <per@bothner.com>

	* Values.java (make):  Fix call to getNext.

	* CallContext.java (getNextIntArg):  Two new methods.

2001-11-23  Per Bothner  <per@bothner.com>

	* WrongArguments.java:  Use 'name' not `name' in error messages.
	* WrongType.java:  Likewise.

2001-11-18  Per Bothner  <per@bothner.com>

	* CallContext.java (runUntilValue):  Two new methods.
	* CpsProcedure.java (applyV):  Use runUntilValue.

	* CallFrame.java:  Now also implements CpsMethodContainer;
	(apply):  New method.
	
	* Procedure.java (apply):  Check count!=0 if where==0;.

	* Values.java (make(TreeList,int,int)):  Fix logic - check size of
	specified range, not entire TreeList.

2001-11-12  Per Bothner  <per@bothner.com>

	* Future.java (getFluids):  New method.
	* FluidConstraint.java (find):  Use Future's new getFluids methods.

	* MethodProc.java (argTypes):  New field.
	(resolveParameterTypes):  New method.
	(getParameterType):  Invoke resolveParameterTypes.
	* CpsMethodProc.java (<init>): New overload sets argTypes.

2001-11-05  Per Bothner  <per@bothner.com>

	* Values.java (writeValues):  New static method.
	* CallContext.java (writeValues):  Use Values' new writeValues method.

2001-10-25  Per Bothner  <per@bothner.com>

	* Values.java (nextIndex, nextValue):  New static helper method
	called by code using a SeriesTarget.

2001-10-19  Per Bothner  <per@bothner.com>

	* Constraint.java, AliasConstraint.java, ConstantConstraint.java,
	FluidConstraint.java, IndirectConstraint.java, TrivialConstraint.java,
	UnboundConstraint.java, Binding.java (get):   Now takes extra
	defaultValue argument.
	* NameMap.java (getChecked):  Make final, not abstract,
	(get(String,Object)):  New abstract method.
	* Environment.java (get):   New method takes defaultValue argument.
	(isBound):  Make final.
	(getChecked):  Moved to NameMap and made final

	* Procedure.java, Procedure0.java, Procedure0or1.java, Procedure1.java,
	Procedure1or2.java, Procedure2.java, Procedure3.java, Procedure4.java,
	ProcedureN.java, CpsProcedure.java, MethodProc.java, Setter.java,
	Setter0.java, Setter1.java (apply* methods, set* methods):
	Now specify throws Throwable.
	* Values.java (call_with):  Likewise.
	* Future.java, ProcLocation.java, TtyInPort.java:  Catch Throwable.
	* IndirectConstraint.java (get. set):  Catch and wrap Throwable.
	* CallContext.java (runUntilDone):  New method, throw Throwable.
	(run):  Use runUntilDone.  Catch Throwable.
	* CpsProcedure.java (applyV):  Use new CallContext.runUntilDone method.

2001-10-11  Per Bothner  <per@bothner.com>

	* CallContext.java:  Remove 'final' attribute.

	* WrappedException.java (exception field):  Change type to Throwable.
	(<init>, getException):  Change to take/return Throwable.
	(getCause):  New method, as in JDK1.4.
	* WrongType.java (getMessage):  Use new getCause, update type.

2001-10-05  Per Bothner  <per@bothner.com>

	* SFormat.java:  Update for CharSequence -> CharSeq renaming.

	* OutPort.java (print(Object)):  Print null as "null".

2001-09-21  Per Bothner  <per@bothner.com>

	* SysInPort.java:  Removed.  Seems to do more harm than good.
	Specifically, interferes with echoing on Windows platform.
	* Makefile.am (java_sources):  Removed.
	* InPort.java (systemInPort):  Use a TtyInPort instead of a SysInPort.

	* Procedure.java (toString):  If no name, use class name instead.

2001-09-13  Per Bothner  <per@bothner.com>

	* CpsMethodContainer.java (apply):  Change return type to void.
	* CpsMethodProc.java (applyError):  New helper method.

2001-08-15  Per Bothner  <per@bothner.com>

	* OutPort.java (print(String)):  Handle null string.

	* WrongArguments.java (checkArgCount):  If procedures's getName() is
	null, using procedure's class's name instead.

2001-07-16  Per Bothner  <per@bothner.com>

	* CallContext.java (next):  New field.
	(getNextArg, lastArg):  New methods.
	(setArgs, setArgsN):  Initialize next to 0.

	* OutPort.java (beginGroup, endGroup):  If objectFormat is non-null,
	re-direct to its methods.
	* OutPort (endAttribute):  Removed method (no longer in Consumer).
	(endAttribute):  New method (to implement Consumer).

	* Values.java: Now extends TreeList, used to store the Values.
	(equals):  Only succeed if other Obejct is instanceof Values.

2001-06-19  Per Bothner  <per@bothner.com>

	* Binding.java (isBound):  Remove debugging junk.

	* Binding.java (make):  Use name when creating new Binding.

2001-06-17  Per Bothner  <per@bothner.com>

	* Binding.java:  Implement Externalizeable.
	(readExternal, writeExternal, readResolve):  New methods.
	(getProcedure):  New kludge to Lisp2 bindings.
	(defineValue, defineConstant. getFunctionValue, hasFunctionValue,
	setFunctionValue, removeFunctionValue, getEnvironment):  New methods.
	(toString):  Return name - needed since Lisp symbol is a Binding.
	(make):  New method.
	(trivialConstraint):  Removed field.
	* Constraint.java (setFunctionValue):  New method.
	* Binding2.java:  Removed class.
	* Makefile.am (java_JAVA):  Updated.

	* Binding.java (equals):  Replace by identity.
	* ConstantConstraint.java:  New class; extends Constraint.
	* Environment.java  (constantConstraint):  New field.

	* Environment.java (locked):  New field
	(isLocked, setLocked):  New methods.
	(getBinding):  Don't add new binding if locked (but try parent).
	(remove):  Throw exception if locked.
	* TrivialConstraint.java (getInstance):  New static methods.
	* UnboundConstraint.java (getInstance):  New static methods.
        (set):  Throw exception if environment is locked.

	* Procedure.java (removeProperty):  New method.

2001-06-03  Per Bothner  <per@bothner.com>

	* CpsProcedure.java (applyN):  Use checkArgCount method.

	* OutPort.java:  Major changes.
	(class BufferedPort):  removed, replaced by gnu.text.PrettyWriter.
	(startLogicalBlock, endLogicalBlock, writeBreak, writeSpaceLinear,
	writeBreakLinear, writeSpaceFill, writeBreakFill, setIndentation):
	Wrappers for PrettyWriter's features.
	(class Break):  Removed.
	(objectFormat):  Change type to FormatToConsumer.
	(print(Object)):  Use objectFormat appropriately.

	* OutPort.java (freshLine):  New method.
	* TtyInPort.java (lineStart):  Call freshLine, and clearBuffer.

	* CharArrayOutPort.java:  Tweaks because of use of PrettyWriter.

2001-05-16  Per Bothner  <per@bothner.com>

	* CpsProcedure.java (applyN, match):  Use CallContext's setArgsN.

	* Values.java (make(TreeList,int,int)):  Change count variable
	to be one less, and fix some off-by-one errors.

	* Values.java (make(TreeList,int,int)):  Shift argument to getNext
	to convert index to ipos.

2001-05-08  Per Bothner  <per@bothner.com>

	Change full-tailcalls calling convention so result is Consumer.
	* Values.java (make(Sequence), make(TreeList)):  New static methods.
	* ValueStack.java:  New class, extends TreeList.
	* Makefile.am (java_sources):  Update accordingly.
	* CallContext.java (value):  Removed field.
	(vstack, consumer):  New fields.
	(writeValue):  New method.
	* Procedure.java (apply(CallContext):  Use new writeValue method.
	* CpsProcedure.java (applyN):  Use applyV method.
	(applyV):  Get result from context's vstack.

2001-04-07  Otto, Marcus <Otto_Marcus@ph-ludwigsburg.de>

	* CpsProcedure.java (applyN):  Check argument count.

2001-03-08  Per Bothner  <per@bothner.com>

	* OutPort.java: Implement gnu.lists.Consumer.

	* SFormat.java (printReadable):  New helper function.
	(print):  Compensate since gnu.lsist classes no longer
	implement Printable.

2001-02-27  Per Bothner  <per@bothner.com>

	* CpsMethodContainer.java:  New interface.
	* CpsMethodProc.java:    New class, extends CpsProcedure.
	* Makefile.am:  Update accordingly.

2000-12-09  Per Bothner  <per@bothner.com>

	* Binding.java (UNBOUND):  New static field - a special value.
	(getFunctionValue):  Just call Constraint's getFunctionValue.
	* Constraint.java (getFunctionValue):  New method.
	* AliasConstraint.java (getFunctionValue):  New method.

2000-10-12  Per Bothner  <per@bothner.com>

	* CallContext.java (args):  Removed field - use valueX instead.
	(getArgs):  New method.
	* CallFrame.java (apply):  Use values field of CallContext, not args.
	* CpsProcedure.java (match, applyN):  Likewise.

	Various fixes for SRFI-17 compatibility (which has rhs value as
	last value, not first value to setter procedure).
	* HasSetter.java:  Update comments to match new conventions.
	* Procedure.java (setterKey):  New static field.
	(getSetter):  Look for "setter" property.
	(set1):  Rename args to match new convention.
	* Setter1.java (apply2):  Likewise.
	* NameMap.java (set1):  Switch args to match new convention.
	* ProcLocation.java (set):  Switch to match new setter convention.

	* Procedure.java (apply(CallContext)):  Optimize - avoid applyN.


2000-08-17  Per Bothner  <per@bothner.com>

	* CallStack.java:  Renamed to ...
	* CallContext.java:  Renamed from CallStack.java.
	(value1, value2, value3, value4, values, ivalue1, ivalue2): New fields.
	(count, where):  New fields.
	(getArgAsObject, setArgs, setArgsN):  New methods.
	* Makefile.am, Procedure.java, CallFrame.java:  Update accordingly.
	* MethodProc.java (applyV):  Takes CallContext, not Object.
	(getVarBuffer):  Removed - calls replaced by 'new CallContext()'.
	(match):  Return an int return code, not RuntimeException.
	(NO_MATCH, NO_MATCH_TOO_FEW_ARGS, NO_MATCH_TOO_MANY_ARGS,
	NO_MATCH_AMBIGUOUS, NO_MATCH_BAD_TYPE):  New match return codes.
	(matchFailAsException):  Convert int return code to RuntimeException.
	* CpsProcedure.java:  Update to match MethodProc changes.
	(getVarBuffer):  Removed method.
	
	* OutPort.java (numberFormat, objectFormat):  New fields.
	(print(primitive-type)):  If numberFormat is non-null, use it.
	(print(Object)):  If objectFormat is non-null, use it.

2000-06-17  Per Bothner  <per@bothner.com>

	* MethodProc.java:  Moved from gnu.expr.
	* CpsProcedure.java:  Now extends MethodProc.
	(getVarBuffer, match, applyV):  New methods.
	* Makefile.am:  Update accordingly.

	* Procedure.java (setProperty):  Return void, not old value.
	(setProperty(Object[].Object,Object):  New static method.
	(nameKey):  Change to plain "name".

2000-06-09  Per Bothner  <per@bothner.com>

	* Environment.java (defineValue):  Replace constraint.

	* Procedure.java (properties):  New field.
	(getProperty, setProperty):  New methods.
	(sym_name):  Removed field.  Instead use a magic property.

	* Values.java (readResolve):  Change return type to Object.

2000-05-28  Per Bothner  <per@bothner.com>

	* CharArrayInPort.java:  Moved from gnu.text.
	* Makefile.am (java_JAVA):  Update accordingty.

	* Procedure.java:  Remove non-private methods.
	(noArgs)  Remove.
	(sym_name):  Make private.
	* ProcedureN.java (apply0):  Use Values.noArgs, not Procedure.noArgs.
	* ApplyMethodProc.java (apply0Default):  Likewise.
	* Environment.java (remove):  Use getName instead of sym_name. 

2000-05-09  Per Bothner  <per@bothner.com>

	* Environment.java (defineValue, getFunction, putFunction):  New.
	(define_global):  Use defineValue rather than define.

	* Values.java:  Make implement java.io.Externalizable.

2000-04-21  Per Bothner  <per@bothner.com>

	* UnboundConstraint.java (get):  Check parent environment.

2000-04-17  Per Bothner  <per@bothner.com>

	* Procedure.java (getSetter):  Tweak exception message.

2000-04-13  Per Bothner  <per@bothner.com>

	* Location.java (isBound):  New method.
	* AliasConstraint.java (define):  New method.
	(get, set):  Generalize to reference to arbitrary Location.
	(isBound):  New method.
	* IndirectConstraint.java (define):  New method.

	* Values.java (noArgs):  Make final.
	* Procedure.java (noArgs):  Make final.

2000-03-12  Per Bothner  <per@bothner.com>

	* BindingEnumeration.java:  New class, implements Enumerations.
	* Makefile.am, Makefile.in (java_JAVA):  Added BindingEnumeration.java.
	* Environment.java (table, log2Size):  Make non-private.
	(enumerateBindings, enumerateAllBindings):  New methods.

	* Binding.java (getProcedure):  Get final.
	* Binding2.java (getProcedure):  New method.

	* UnboundSymbol.java: New constructor.

2000-02-27  Per Bothner  <per@bothner.com>

	Various tweaks for better javadoc processing.
	* overview.html:  Renamed to package.html.

	* Named.java:  Changed from class to interface.
	* Procedure.java:  Now implements rather than extends Named.
	* Procedure2.java:  Use getName() rather than name().

2000-02-19  Per Bothner  <per@bothner.com>

	* SysInPort.java (fill):  Change parameters.
	* TtyInPort.java (fill):  Change parameters.

2000-02-11  Per Bothner  <per@bothner.com>

	* ApplyMethodContainer.java:  New interface.
	* ApplyMethodProc.java:  New class;  extends ProcedureN.

	* Binding.java (getFunctionValue):  Use AliasConstraint and Binding2.
	* Binding2.java:  New class; extends Binding.
	* AliasConstraint.java:  New class; extends Constraint.
	* Environment.java (defineFunction):  Two new static methods.
	* Makefile.am, Makefile.in (java_JAVA):  Add new classes.

	* Values.java (noArgs):  New static field.
	(empty):  Use noArgs.
	* Procedure.java (nArgs):  Make protected, instead of public.  (Thus
	it is not found by gnu.kawa.reflect.ClassMemberConstraint.defineAll.)

2000-02-01  Per Bothner  <per@bothner.com>

	* Binding.java (getConstraint, getFunctionValue):  New methods.

2000-01-23  Per Bothner  <per@bothner.com>

	* Binding.java (trivialConstraint):  New static field.
	(chain):  Removed field.
	(hashDELETED):  New static,
	(hashSearch, hashSearch, hashGet, hashSet, hashDelete,
	hashInsertAll):  New static utility methods.
	* Environment.java:  Change to manage hash index collisions using
	"double hashing" and "open addressing" rather than "chaining".
	(lookup):  Use Binding.hashSearch.
	(remove):  Use Binding.hashDelete.
	(addBinding(name, value)):  New method.
	* UnboundConstraint.java (set):  Handle null environment.

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

	* Environment.java (put):  If was unbound, returns old value as null.

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

	* OutPort.java (class BufferedPort):  Now extends Writer instead of
	FilterWriter.  (Walter C. Pelissero <wcp@lpds.sublink.org> reported
	that the old code crashed for some FilterWriter implementations.)

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

	* OutPort.java (flushLocal):  If out is null, expand buffer.
	(flush, close):  Don't flush if out == null.
	* CharArrayOutPort.java:  New class.
	* Makefile.am, Makefile.in (java_JAVA):  Add CharArrayOutPort.java.

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

	* Values.java (values):  Renamed to getValues.
	(values$V):  New method.

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

	* SysInPort.java (fill):  Fix logic error, whihc broke transcripts.

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

	* Environment.java (num_binding):  Make non-static.
	Reported by Tony White <twhite@texar.com>.

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

	* WrappedException.java:  New class; inherits from RuntimeException.
	* WrongType.java:  Change to inheirt from WrappedException.
	* Makefile.am, Makefile.in (java_JAVA):  Added WrappedException.java.

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

	* Named.java (name):  Always call getName().
	* Procedure.java (print):  Call getName() instead of deprecated name().

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

	* Constraint.java (isBound):  New method.
	(getValue, setValue, getConstraint, setConstraint):  New methods.
	* Binding.java (isBound):  Use Constraint.isBound.
	* Environment.java (unboundConstraint):  Generalize type to Contraint.
	* TrivialConstraint.java (isBound, getEnvironment):  New methods.
	* UnboundConstraint.java (isBound, getEnvironment):  New methods.

	* WrongType.java:  Major re-write for more informative messages.

1999-07-16  Per Bothner  <per@bothner.com>

	* Future.java (action):  Change from Procedure0 to Procedure.

1999-06-30  Per Bothner  <per@bothner.com>

	* Binding.java (time_stamp):  Remove no-longer needed field.
	* OutPort.java (BufferedPort):  New non-public FilterWriter class.
	(class OutPort):  Re-write to use BufferedPort.
	(Break):  New non-public class - not yet used. 

Wed Apr  7 17:40:40 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* FluidBinding.java:  New class.
	* FluidConstraint.java:  new Constraint class.
	* Makefile.am (java_JAVA), Makefile.in:  Update for new classes.
	* Future.java (<init>):  Use parent Environment;  don't create new one.
	(setFluids, resetFluids, getContext):  New methods.
	* Binding.java (<init>):  New constructor.
	(make):  Use it.
	(hashCode):  Do not depend on the Binding's value.
	* Environment.java:  Rmeove time_stapt field and its uses.

Sat Mar 20 10:58:53 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Constraint.java:  New abstract class.
	* TrivialConstraint.java:  New Constraint sub-class.
	* UnboundConstraint.java:  New Constraint sub-class.
	* IndirectConstraint.java:  New Constraint sub-class.
	* Makefile.am, Makefile.in (java_JAVA):  Add new classes.
	* Binding.java (constraint):  New field. Re-write to use Constraints.
	Add methods to implement JDK1.2 java.util.Map.Entry interface.
	* Environment.java:  Misc changes for Constraint model.
	* NameMap.java (get):  Rename to getChecked.
	(get(Object)):  New, for compatibility with JDK1.2 collections.
	
Sun Mar  7 16:45:08 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

 	* CallStack.java:  New class.
	* CpsProcedure.java:  New class (extends ProcedureN).
	* CallFrame.java:  New class (extends CpsProcedure).
	* Makefile.am (java_JAVA), Makefile.in:  Add new source files.
	* Procedure.java (noArgs):  New static field.
	(apply(CallStack)):  New overloading method.
	* ProcedureN.java (apply0):  Use Procedure.noArgs.
	* Values.java (empty):  Change to use Procedure.noArgs.

Thu Nov 26 12:38:53 1998  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Makefile.am (java_JAVA), Makefile.in:  Add NameMap.java.

Sun Nov 15 21:26:14 1998  Per Bothner  <bothner@cygnus.com>

	* NameMap.java:  New Procedure1 sub-class.
	* Environment.java:  Extend NameMap.
	* Environment.java:  Use System.identityHashCode, instead of
	String.hashCode - for faster hashing.

1998-08-28  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Binding.java (make):  New static method (called from compiled code).

Fri Jul 24 16:25:47 1998  Per Bothner  <bothner@cygnus.com>

	* ProcLocation.java:  New class.
	* Makefile.am (java_JAVA):  Added ProcLocation.java.

Fri Jul 24 16:08:22 1998  Lynn Quam <quam@ai.sri.com>

	* Environment.java (put_global):  New method.

Wed Jul 22 21:42:42 1998  Per Bothner  <bothner@cygnus.com>

	New directory.  Files mostly moved from ../../kawa/lang.

	* Location:  Now inherit from Procedure0.
	(get, set):  Make abstract, rather than final.
	(value):  Remove.  (Moved to Binding sub-class.)
	(apply0, set0):  New methods defined in terms of get, set.
	* Binding (value):  New field (moved from base class).
	(get, set):  New overriding methods.
