2005-04-03  Per Bothner  <per@bothner.com>

	* Procedure.java: Fix javadoc comment.

2005-03-29  Per Bothner  <per@bothner.com>

	* CallContext.java (getEnvironmentRaw, setEnvironmentRaw): New methods.

	* SimpleEnvironment.java (redefinedError): Extend error message.

	* WrappedException.java (<init>): Use to-string to get default message;
	that sems to be more robust, since sometimes message is null.

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

	* Environment.java (toStringVerbose): New method, for debugging.
	* SimpleEnvironment.java (toStringVerbose, toStringBase): Ditto.
	* InheritingEnvironment.java (toStringBase): Ditto

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

	* UnboundLocationException.java (getMessage): If we have an
	explicit message, use that instead of creating one.

2005-03-03  Per Bothner  <per@bothner.com>

	* Future.java (initEnvironment): Removed field, for parent Environment.
	(environment): New field, for child environment.
	(run): Move allocation of child Environment from here ...
	(<init>): ... to here.  This avoids a race condition.

	* Environment.java (make(String,Environment)): Move incrementing
	timestamp from here to ...
	* InheritingEnvironment.java (<init>): ... here.
	Also set currentTimestamp, not just baseTimestamp.
	(getLocation): Maybe set timestamp of new indirect location.

2005-02-25  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (makePrivate): New factory method.

2005-02-24  Per Bothner  <per@bothner.com>

	* InPort.java (inLocation): New static ThreadLocation.
	(inDefault, setInDefault): Use inLocation.
	* OutPort.java (outLocation, errLocation): New static ThreadLocations.
	(outDefault, setOutDefault): Use outLocation.
	(errDefault, setErrDefault): Use errLocation.
	* Future.java (in, out, err): This fields are now only used to
	initialize a Thread, not by inDefault/outDefault/errDefault.

	* OutPort.java (endGroup): Fix small thinko.

	* CallContext.java (getEnvironment): If no Environment, create a new
	Environment that inherits from global, rather than using it directly.

2005-02-23  Per Bothner  <per@bothner.com>

	* Symbol.java (hasEmptyNamespace): New method.

2005-02-20  Per Bothner  <per@bothner.com>

	* ConstrainedLocation.java: New class, extends Location.
	* ReadOnlyLocation.java: New class, extends ConstrainedLocation.
	* ConstantLocation.java: Removed unused class.
	* Makefile.am: Update accordingly.
	* LocationProc.java (makeNamed): New factory method.
	(converter): Remove field - use ConstrainedLocation instead.
	(pushConverter): New method.
	(<init>(Location.Procedure)): Use pushConverter.
	(set0): Simplify since we don't have a converter.
	* ProcLocation.java (setWithSave, setRemove): Remove no-longer
	needed methods, thanks to location.makeProcLocation$V optimization.

	* ThreadLocation.java (DYNAMIC): Can't use static property for all
	anonymous ThreadLocations, since it might not be unique.  So remove.
	(unlink): New field, to control if went should unlink when finalizing.
	(LocationRef.finalize): Use Locations's symbol and propertyt to unlink.

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

	* ThreadLocation.java (setGlobal): Allocate Location for global,
	if needed.

2005-02-18  Per Bothner  <per@bothner.com>

	* ThreadLocation.java: Improve garbage-collability.
	(DYNAMIC): New constant.
	(<init>):  Use DYNAMIC as property for "anonymous" fluids.
	(class LocationRef): New helper class, with finalize method.
	(getLocation): Use LocationRef for "anonymous" fluids.

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

	* IndirectableLocation.java (setAlias): New method.
	* Location.java (print):  Restore printing of location name.
	* LocationProc.java: Minor optimiation.
	* ProcLocation.java (setWithSave, setRestore): New methods.

	* LocationProc.java: New file, but class was extracted from
	kawa/standard/location.java.
	Add some extra "features" to support srfi-39 "parameter objects".
	* Makefile.am: Update accordingly.
	* ThreadLocation.java (setGlobal): New method.
	* Location.java (toString): Don't print property if it is this.

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

	* Environment.java (toString): New method.

	Fixes Savannah bug #11801.
	* Environment.java (DIRECT_INHERITED_ON_SET): New flag.
	(make(String, Environment)): Increment parent's currentTimestamp.
	* Future.java (run): Need to make child shared (THREAD_SAFE), and
	clear DIRECT_INHERITED_ON_SET bit.
	* InheritingEnvironment.java (getLocation): "Inline" addLocation.
	Only set DIRECT_ON_SET on new location if DIRECT_INHERITED_ON_SET.
	* SimpleEnvironment.java (newLocation): Don't need to increment
	timestamp, as long as it is done when a child is created by Future.run.
	(makeShared): Likewise.
	Set INDIRECT_FLUIDS on old PlainLocation so it properly redirects.

	* UnboundLocationException.java (getMessage): A Location may have
	a non-null getKeySymbol even if it isn't a NamedLocation.

	* ThreadLocation.java: New class, extends Location.
	* Makefile.am: Update accordingly.

2005-02-07  Thomas Krk  <tk@research.att.com>

	* Environment.java (make(String, Environment)): Set baseTimestamp.
	Partial fix for Savannah bug #11577.

2005-01-30  Per Bothner  <per@bothner.com>

	* WrappedException.java: Use JDK 1.4 "cause" mechanism ifdef JAVA5.
	(wrapIfNeeded): New static method.
	(message): Remove field.  Instead use getMessage() - and set
	message from cause at constructor time if needed.

2005-01-21  Per Bothner  <per@bothner.com>

	* SimpleEnvironment.java (addLocation): Defer isBound() invocation.

2005-01-16  Per Bothner  <per@bothner.com>

	* IndirectableLocation.java (INDIRECT_FLUIDS): New constant.
	* SimpleEnvironment.java (addLocation): Set value to INDIRECT_FLUIDS.
	* PlainLocation.java (setWithSave): Check for INDIRECT_FLUIDS.
	* SharedLocation.java (setWithSave): Likewise.
	Fixes Savannah bug #11578.

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

	* NamedLocation.java: Remove unneeded import.

2005-01-05  Per Bothner  <per@bothner.com>

	* Location.java (counter, id): Comment out, except for debugging.
	(toString): Update accordingly.
	* NamedLocation.java (toString): Remove - use inherited version.

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

	* CallContext.java, LocationEnumeration.java, NamedLocation.java,
	Namespace.java, SimpleEnvironment.java, Symbol.java:
	Change "select" (preprocessor) syntax.

2004-12-29  Per Bothner  <per@bothner.com>

	* IndirectableLocation.java: Changed to inherit directly from
	Location, rather than via NamedLocation.
	(getKeySymbol, getKeyProperty): New methods.
	(setBase): Simplify.
	* NamedLocation.java: Inherit from IndirectableLocation.
	* PlainLocation.java: Inherit from NamedLocation
	* SharedLocation.java: Likewise.
	* Location.java (getKeySymbol, getKeyProperty): New methods.
	(toString): New method.

	* InheritingEnvironment.java (lookupDirect): Moved to super class.
	* SimpleEnvironment.java (lookupDirect): New method.
	(put): Simplify using getLocation.
	(newEntry): New helper method.
	* Environment.java (addLocation): Change to a non-void return.
	* InheritingEnvironment.java (getLocation): Use new addLocation.

	* UnboundLocation.java: Removed class - just use a PlainLocation.
	* Makefile.am: Update accordingly.
	* IndirectableLocation.java (undefine): Handle UNBOUND ourself.
	* Location.java (make): No longer use UnboundLocation.
	* LocationEnumeration.java (nextLocation): Likewise.
	* NamedLocation.java (genEnvironment): Update likewise.
	* SimpleEnvironment.java (unbound): Rename field ...
	(sharedTail): and change type to namedLocation.
	(addUnboundLocation, define, addLocation): Major simplification,
	since we don't try to use an extra WeakReference.

2004-12-22  Per Bothner  <per@bothner.com>

	* Namespace.java: New protected constructor. Kludge used by SName.

2004-12-20  Per Bothner  <per@bothner.com>

	* Symbol.java (name): Make field protected, for the sake of Keyword.
	* Namespace.java (createInternal): Remove, moving most of body to ...
	(add): New public method.
	(lookup): Use add instead of createInternal.

2004-12-19  Per Bothner  <per@bothner.com>

	* InheritingEnvironment.java (hasMoreElements): Fix logic bug
	reported (with incomplete patch) by Christian Surlykke.

	* SimpleEnvironment.java (addLocation): Guard againts cycles.

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

	Rewrite of how symbols and environments are handled.
	Locations are now separate from stateless Symbols.
	* Symbol.java: Major rewrite.  Move some functionality to Location.
	(constraint): Remove field - we no longer make use of Constraints.
	* Namespace.java: New class.  Partially based on Environment.

	* Location.java: Major re-write. No longer base class for Symbol.
	* ConstantLocation.java: New class, replaces ConstantConstraint.
	* NamedLocation.java: New abstract class, extends Location.
	* IndirectableLocation.java: New abstract class.  Combines
	functionality of IndirectableConstraint, TrivalCOntraint, and Symbol.
	* PlainLocation.java: New class, extends IndirectableConstraint.
	* SharedLocation.java: Similar to PlainLocation, but synchronized.
	* UnboundLocation.java: New class, replaced UnboundConstraint.
	* ProcLocation.java: Small update.

	* PropertyLocation.java: New class, extends Location.

	* Constraint.java: Removed class; replaced by Location.
	* AliasConstraint.java: Likewise removed.
	* ConstantConstraint.java: Likewise.
	* IndirectConstraint.java: Likewise.
	* TrivialConstraint.java: Likewise.
	* UnboundConstraint.java: Likewise.
	* Makefile.am: Update accordingly.

	* EnvironmentKey.java: New interface for a (Symbol. property)-pair.
	* KeyPair.java: New concrete classs implementing EnvironmentKey.

	* Environment.java: Made abstract.   Changed to map EnvironmentKey
	to Location, instead of String to Symbol.
	* SimpleEnvironment.java: New class, extends Environment.
	* InheritingEnvironment.java: New class, extends SimpleEnvironment.
	* SymbolEnumeration.java: Removed class, replaced by ...
	* LocationEnumeration.java: New class.
	* NameMap.java: Changed to match new Environment.

	Re-implemented fluid bindings.
	* FluidBinding.java: Removed class.
	* FluidConstraint.java: Likewise.
	* CallContext.java (fluidBindings): Removed field.
	(setFluids, resetFluids): Removed methods.
	* Future.java (fluidBindings): Remove field.
	(setFluids, resetFluids, getFluids): Removed methods.
	(<init>, run): Redid creating of sub-Environment.

	* Named.java (getSymbol): New method.

	* UnboundSymbol.java: Removed RuntimeException class, replaced by ...
	* UnboundLocationException.java: New class extends RuntimeException.

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

	* Environment.java (make): Comment out one of the new methods.

2004-11-22  Per Bothner  <per@bothner.com>

	* Symbol.java (setConstraint, makeUninterned): New methods.
	* Environment.java (setLocked, make): New methods.

2004-10-23  Per Bothner  <per@bothner.com>

	* WrongType.java (ARG_CAST): New constant.
	(make*2): New methods take argValue parameter.
	(getMessage): Rework logic to work well for ARG_CAST.

2004-08-24  Per Bothner  <per@bothner.com>

	* OutPort.java (openFile): New static method.

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

	* CallFrame.java:  Remove unused class.

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

	* Procedure.java:  New API, especially for --full-tailcalls.
	(apply):  New static method.  Old apply calls new static.
	(match0, match1, match2, match3, match4, matchN):  New methods.
	(check0, check1, check2, check3, check4, checkN):  New methods.
	* MethodProc.java (match, applyV):  Remove methods.
	(apply(CallContext)):  Remove method - use the inherited method.
	(applyN):  Update to use checkN instead of removed match+applyV.
	* CallContext.java:  No longer implement Runnable.
	(run):  Remove method.
	(pc):  New field.
	(getRestArgsArray, getRestArgsList):  Take start parameter.
	(setArgs[5 methods], setArgsN):  Remove methods.
	(getArgs):  Reset next to 0.
	* CpsMethodContainer.java:  Remove interface.
	* CpsMethodProc.java:  Remove class.
	* Makefile.am:  Update accordingly.
	* CallFrame.java:  No longer implement CpsMethodContainer.

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

	* WrappedException.java (<init>):  Add default constructor.
	* WrongType.java (number):  Change to 1-origin.
	(typeExpected):  Renamed to expectedType and chaned to Object,
	(argValue):  New field.
	(<init>):  New constructors that also set argValue.
	(getMessage):  Add more information.

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

	* CpsMethodProc.java:  Remove no-longer-used class.
	* Makefile.am (java_sources): Remove CpsProcedure.java, CallFrame.java.
	* CpsMethodProc.java:  Extend MethodProc instead of CpsProcedure.
	* CallFrame.java:  Likewise.

	* MethodProc.java:  Merge functionality from CpsProcedure.
	* CpsProcedure.java:  Now just a stub, soon to be removed.

	* ApplyMethodContainer.java:  Remove no-longer-used interface.
	* ApplyMethodProc.java:  Remove no-longer-used class.
	* Makefile.am:  Update accordingly.

2004-07-20  Per Bothner  <per@bothner.com>

	* CallContext.java:  Remove unused import statements.
	* CharArrayInPort.java:  Likewise.
	* CharArrayOutPort.java:  Likewise.
	* CpsProcedure.java:  Likewise.
	* OutPort.java:  Likewise.
	* Printable.java:  Likewise.

2004-06-12  Per Bothner  <per@bothner.com>

	* InPort.java (readState, getReadState):
	Moved to gnu.text.LineBufferedReader.

2004-05-20  Per Bothner  <per@bothner.com>

	* OutPort.java (writeChars):  Remove redundant method.

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

	* MethodProc.java (mostSpecific):  Handle the case that two or more
	methods are equally specific, but a later method is more specific.

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

	* Symbol.java:  Implement Comparable, and Map.Entry, if JAVA2.
	(compareTo):   New method.

2004-01-09  Per Bothner  <per@bothner.com>

	* FluidConstraint.java (find):  Inline Future.getFluids.

	* TrivialConstraint.java (getInstance):  Minor fix,
	
	* CallContext.java (curEnvironment):  New field.
	(getEnvironment):  Rewrite to use curEnvironment.
	* Environment.java (getCurrent):  Use CallContext's getEnvironment.
	(setCurrent):  Set current CallContext's curEnvironment.
	(setGlobal):  New method.
	* Future.java (environmentr):  Renamed field to initEnvironment,
	(<init>):  Update accordingly.
	(run):  Set CallContext.curEnvironment from initEnvironment.
	
	* Environment.java (user, lookup_global, define_global, put_global):
	Call getCurrent directly.

	* Environment.java (getInstance, getSymbol, lookup, addSymbol, remove):
	Add synchronization as appropropriate.

2003-11-09  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (toString):  New method.

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

	* ValueStack.java:  Extends Values instead of TreeList.

2003-10-09  Per Bothner  <per@bothner.com>

	* CallContext.java (setFluids, resetFluids):  Add synchronization, as
	syggested by jared@mercedsystems.com.	Fixes Savannah bug #5789.

	* ApplyMethodProc.java (module):  Make field public.
	* CpsMethodProc.java (module):  Make field public.

2003-10-07  Per Bothner  <per@bothner.com>

	* Procedure.java (getSymbol, setSymbol):  New methods.
	(getName):  Check for a Symbol as the name property.
	* ApplyMethodProc.java (<init>):  Name can be a Symbol or a String.
	* CpsMethodProc.java (<init):  Likewise.

	* Environment.java (setPrevious):  New method.

	* Values.java (equals):  Remove - for now use inherited method,
	which for a Value just compares identity.

2003-09-30  Per Bothner  <per@bothner.com>

	* CallContext.java (startFromContext, getFromContext,
	cleanupFromContext):  New methods. 

2003-09-11  Per Bothner  <per@bothner.com>

	* Values.java (nextValue):  Adjust curIndex by buffer gap size.

2003-09-04  Per Bothner  <per@bothner.com>

	* CallContext.java (getRestArgsArray, getRestArgsList):  New methods.

	* CpsMethodProc.java (getName):  New method.

2003-08-08  Daniel Bonniot  <Daniel.Bonniot@inria.fr>

	* ProecdureN.java (noArgs):  New static field.
	(apply0):  Use it (so we don't depend on Values).

2003-07-12  Per Bothner  <per@bothner.com>

	* Future.java (parent):  Remove unused field.
	(iniBindings):  New field.
	(<init>):  Combine construcors.
	Set initBindings using getFields().
	(run):  Set context's fluidBindings using initBindings.
	Fixes bug reported 7/11 by Chris.Dean@sokitomi.com.

2003-07-10  Per Bothner  <per@bothner.com>

	* CallContext.java (getArgAsObject):  Make non-public.
	(getArgs):  Use getNextArg instead of getArgAsObject.
	* Procedure.java (apply):  Likewise.

2003-05-30  Per Bothner  <per@bothner.com>

	* WrongType.java (getMessage):  Don't print causes's message if null.

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

	* WrappedException.java:  Add so-far-commented-out hooks
	to use JDK-1.4-style getCause/initCause.

2003-05-03  Per Bothner  <per@bothner.com>

	* CallContext.java.in:  Renamed back to ...
	* CallContext.java:  and changed to use new JAVA1/JAVA2 switching.
	* Makefile.am:  Update accordingly.

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

	* Symbol.java (defineValue):  Check for null env.
	Fixes bug reported 04-08 by Vladimir Tsichevski.

2003-04-06  Per Bothner  <per@bothner.com>

	* SFormat.java:  Removed.
	* Makefile.am (java_sources):  Update accordingly.

2003-04-05  Per Bothner  <per@bothner.com>

	* SFormat.java (print):  Remove formatting.  Instead just indircet
	to DisplayMethod's writeObject.
	(format):  Remove usused method.
	(printReadable): Inline into print and remove.
	* OutPort.java (writeSchemeObject):  Remove no-longer-used method.
	* Symbol.java (print):  Don't use SFormat.
	* Values.java (print):  Likewise.

2003-03-15  Per Bothner  <per@bothner.com>

	* Symbol.java:  Reduce set of inconsistent 'make' overloadings to one.
	Previous situation would cause problems when compiling XQuery QNames.
	(make(String, String)):  Generalize to make(Object, String) - allows
	first argument to be null, an Environment, or a namespace name.
	(make(String, Environment)):  Subsumed by above method, hence removed.
	(make(Object, String)):  Rename variant that creates an initialized
	uninterned symbol to makeUninterned to avoid confusion.
	(writeExternal, readExternal):  Match new 'make' argument order.

2003-03-03  Per Bothner  <per@bothner.com>

	* CallContext.java.in (baseUriDefault):  new static field.
	(getBaseUriDefault):  New static method.

2003-03-02  Per Bothner  <per@bothner.com>

	* CallContext.java.in (baseUri):  New protected field.
	(getBaseUriRaw, getBaseUri, setBaseUri):  New methods.

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

	* ValueStack.java (oindex, find):  Field and methods moved to
	TreeList.  Not much left in this class ...

2003-01-09  Per Bothner  <per@bothner.com>

	* Values.java:  Update for new gnu.lists APIs.

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

	* Symbol.java (toString):  Also display getNamespaceURI() if non-empty.

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

	* Environment.java: Implement Externalizable.
	(writeExternal, readExternal, readResolve):  New methods.

	* Environment.java (envTable. EmptyNamespace):  New static fields.
	(getInstance):  New method.
	(<init>):  New constructor.

	* Symbol.java (getNamespaceURI, getLocalName, make):  New methods.
	(<init>):  Set constraint for uninterned Symbol.
	(readExternal):  Set constraint even for uninterned Symbol.
	Intern name if non-null.

	* Procedure.java (setSetter):  New method.

2002-10-28  Per Bothner  <bothner@bothner.com>

	* Binding.java:  Renamed to Symbol.java.
	* BindingEnumerator.java:  Renamed to SymbolEnumerator.java.

2002-09-26  Per Bothner  <per@bothner.com>

	* Location.java (get(Object)):  New method.
	* AliasConstraint (get):  Can now simplify to use Location.get.

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

	* AliasConstraint.java (followAliases):  New static helper method.

	* MethodProc.java (match(Object[])):  Removed method.

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

	* WrongArguments.java (checkArgCount): Split into two overloaded
	methods, so we can use it for a LambdaExp.

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

	* Values.java (canonicalize):  New method.

2002-05-06  Per Bothner  <per@bothner.com>

	* ValueStack.java (find(Object), find (Object,Object)):  Make public.

	* ValueStack.java (find (Object,Object)):  Fix typo.

2002-03-22  Ola Rinta-Koski  <ola@cyberell.com>

	* ValueStack.java (clear):  New method.

2002-03-18  Per Bothner  <per@bothner.com>

	* Environment.java (getPrevious):  New method.

	* Procedure.java:  No longer implements Printable.
	(print):  Remove method.
	(toString):  New method.

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

	* Makefile.am (SED_REFERENCES_SUBS):  Moved to Make-rules.

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.
