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

	* ClassMemberConstraint.java (define):  If value is Named,
	handle case where getName() returns null.

	* Invoke.java (applyN):  Use CallContext.getInstance().

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

	* Invoke.java (inlineClassName):  New static method.
	* Invoke.java:  Implement CanInline.
	(inline): New method calls inlineClassName
	* InstanceOf.java:  Likewise.
	* SlotGet.java:  Likewise.
	* SlotSet.java:  Likewise.

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

	* TypeSwitch.java:  New class, implements XQuery 'typeswitch'.
	* Makefile.am (java_sources):  Update accordingly.

	* InstanceOf.java (emitIsInstance):  New static helper method.
	(compile):  If type us TypeValue, calls its emitIsInstance method.

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

	* SlotGet.java (makeGetField):  New method, moved from Expression.

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

	* ClassMethods.java (getMethods):  Match change in ClassType's
	getMethods class.  Now use "-" to specify "no package" - i.e. skip all
	private classes.  Fixes problem reported by Walter Pelissero

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

	* ClassMethods.java (getMethods):  Use ClassType's new getMethods
	method, using Vector instead of Method[].
	Fix off-by-one loop when duplicate found - don't increment i.

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

	* Invoke.java (compile):  Better warning - list applicable methods.

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

	* ClassMemberConstraint.java (get):  New takes defaultValue param.

	* Invoke.java:  Various methods now specify throws Throwable.

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

	* ClassMemberConstraint.java (set):  If we cannot set the field,
	change the constraint to a TrivialConstraint (kludge).

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

	* ClassMethods.java (checkName):  Use mangleNameIfNeeded.
	* SlotGet.java (apply2):  Likewise.
	* SlotSet.java (apply):  Likewise.

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

	* Invoke.java:  Update for PairClassType field rename.

	* ClassMemberConstraint.java (define):  Use reversible demangling.

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

	* ClassMemberConstraint.java (define):  If value isn't a Named,
	then demangle the field name.

	* Invoke.java (applyN):  Handle PairClassType and staticLink.
	(getClassType):  If PairClassType, get its instance class.

	* SlotGet.java (apply2, getField):  Use ClassExp.slotToMethodName.
	(getField):  Make static.
	* SlotSet.java (apply,, getField):  Use ClassExp.slotToMethodName.

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

	* SlotSet.java (isStatic):  Make non-static (duh).
	(setField$Ex, setStaticField$Ex):  New static final fields.
	(<init>):  New constructor.
	(setField, setStaticField):  New static methods.
	(apply):  Take extra isStatic parameter.
	(apply3):  Pass this.isStatic to apply.
	* Invoke.java (applyN):  Pass extra arg to SlotSet.apply.
	* SlotGet.java (set2):  Likewise.
	(setter):  New field.
	(<init>):  New init also takes setter arg.
	(field, staticField):  Specify setters.
	(getSetter):  New method.

	* SlotGet.java (apply2):  If field is final Binding, get its value.
	(compile):  Likewise handle case of indirect Binding field.
	* SLotSet.java (apply):  If field is final Binding, set its value.
	(compileSet):  Likewise handle case of indirect Binding field.

	* ClassMemberConstraint.java:  Better error messages if unbound.

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

	* Invoke.java:  Handle method name symbol implemented using Binding.
	* ClassMethods.java:  Likewise.

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

	* ArrayLength.java:  Update to use LangPrimType.
	* SlotGet.java:  Likewise.

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

	* ClassMethods.java, SlotGet.java:  Update for new gnu.lists.Fstring.

	* Invoke.java (compile):  Better error messages.

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

	* SlotGet.java (compile):  Comment out Oct 12 change - it isn't safe.

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

	* ClassMemberConstraint.java (field):  Remove field;  don't use
	gnu.bytecode.Field; only java.lang.reflect.Field.

	* Invoke.java (invoke, invokeStatic, make):  Make fields final.

	* Invoke.java (compile):  Catch missing-class exception; emit warning.

	* SlotGet.java (set2):  Swap argument order for new setter convention.

	* SlotGet.java (compile):  Inline final static int fields.

	* InstanceOf.java (<init>):  New constructor.

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

	* Invoke.java (applyN):  Update for new MethodProc protocol.

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

	* InstanceOf.java:  Moved from kawa.standard.
	* Makefile.am:  Update accordingly.

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

	* ClassMemberConstraint.java (define):  Re-structure.

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

	* SlotGet.java (apply2): Use Values.noArgs instead of Procedure.noArgs.

	* ClassMemberConstraint.java (define):  Trivial optimization.

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

	* ClassMethods.java (class MethodFilter):  New non-public class.
	(getMethods):  Re-write to use ClassType's getMethods.
	(selectMethod, getMethods, getConstructors):  Remove methods.
	* Invoke.java (interpreter):  New field.  Use it.
	(getStaticMethod, getMethod):  New methods.

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

	* ClassMemberConstraint.java (define):	Just use the new version of
	the Environment define method.

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

	* SlotGet.java (apply2, compile, getReturnType):  Handle 'length
	of an array as a special case.

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

	* ClassMemberConstraint.java (define):  Sigh.  Put in some kludge
	for languages with dual separate namespaces.

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

	* ClassMemberConstraint.java (define):  Since kawa.lang.Syntax now
	implements Named, we no longer need special case for it.

	Various tweaks for better javadoc processing.
	* package.html:  New file.

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

	* ClassMethods.java (getMethods):  Interpreter is now in gnu.expr.
	(apply):  Change to Interpreter.defaultInterpreter.
	* SlotGet.java (apply2):  Likewise.
	* SlotSet.java (apply):  Likewise.

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

	* ArrayGet.java:  Moved/renamed from kawa/lang/PrimArrayGet.java.
	* ArraySet.java:  Moved/renamed from kawa/lang/PrimArraySet.java.
	* ArrayNew.java:  Moved/renamed from kawa/lang/PrimArrayNew.java.
	* ArrayLength.java:  Moved/renamed from kawa/lang/PrimArrayLength.java.
	* StaticGet.java:  Moved/renamed from kawa/lang/GetStatic.java.
	* StaticSet.java:  Moved/renamed from kawa/lang/SetStatic.java.
	* Makefile.am, Makefile.in (java_JAVA):  Update for now classes.

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

	* ClassMemberConstraint.java (<Init>(Field)):  New constructor.
	(defineAll, define):  New static methods.

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

	* ClassMemberConstraint.java (<init>):  New constructor.
	(define):  New static method.

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

	* Invoke.java (getMethods):  Set cacheArgs *after* recursive call done.
	(compile):  Use methods instead of acheMethods.

	* ClassMemberConstraint.java:  New class;  extends Constraint.
	* Makefile.am, Makefile.in (java_JAVA): Add ClassMemberConstraint.java.
	* Invoke.java (applyN):  Throw exception if no applicable method found.
	(getMethods):  Add argsToSkip parameter.
	(compile, getReturnType):  Fix getMethods call.
	(makeInvokeStatic):  New method.

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

	* ClassMethods.java (selectApplicable, apply):  New static methods.
	(checkName):  New helper method.

	* Invoke.java:  Generalize to subsume InvokeStatic and MakeInstance.
	Also implement Inlineable.
	* InvokeStatic.java:  Remove class - subsumed by Invoke.
	* MakeInstance.java:  Remove class - subsumed by Invoke.
	* Makefile.am, Makefile.in (java_JAVA):  Remove rmeoved classes.
	* SlotGet.java, SlotSet.java:  Also handle `static-field'.
	Implement Inlineable.

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

	* ClassMethods.java (apply):  Check if method isApplicable.

	* InvokeStatic.java (invokeStatic):  New static field.
	(apply$V):  New method.
	(getMethod):  Pass argument types to ClassMethods.apply.
	* MakeInstance.java (getMethod):  Likewise.

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

	* ClassMethods.java (apply):  Return MethodProc, not Procedure.
	* MakeInstance.java:  Make it implement Inlineable.
	Handle "<init>" specially.
	* Invoke.java:  New class; extends ProcedureN.
	* Makefile.am, Makefile.in (java_JAVA):  Add Invoke.java.

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

	New package.
	* ClassMethods.java:  Moved from kawa/standard/class_methods.java.
	* InvokeStatic.java:  Moved from kawa/lang/InvokeStatic.java.
	* MakeInstance.java:  New, but subsumes kawa/standard/make.java.
	* SlotGet.java:  Moved from kawa/standard/field.java.
	* SlotSet.java:  New class.
	* Makefile.am, Makefile.in:  New files.
