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

	* ClassMethods.java (class MethodFilter):  Enhance so it also matches
	methods whose names in "$X" or "$V$X".

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

	* OccurrenceType.java:  Change to extends ObjectType.  This sets
	size to 4 so isVoid returns false.

	* OccurrenceType.java (toString):  New method.

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

	* Invoke.java (inline):  Check 'warn-invoke-unknown-method' option
	before emitting warning.

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

	* ClassMemberConstraint.java (define):  Check for Procedure
	whose name is a Symbol.

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

	* ClassMemberConstraint.java (get):  Inline the 'setup' method,
	but return defaultValue instead of throwing UnboundSymbol.

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

	* ClassMemberConstraint.java (define):  Demangle field name
	when field is non-final.

2003-07-15  Chris Dean  <Chris.Dean@sokitomi.com>

	* ClassMethods.java (removeRedundantMethods):  New helper method.
	(getMethods):  Handle extra is_special flag, for invoke-special.
	* Invoke.java (invokeSpecial):  New static field.
	(applyN):  Check for and dis-allow invoke-special.
	(getMethods):  Handle invoke-special.
	
2003-07-12  Chris Dean  <Chris.Dean@sokitomi.com>

	* ArrayGet.java (Externalizable): Implement writeExternal, 
	readExternal.  Fixes Savannah bug #4289
	* ArraySet.java (Externalizable): Likewise
	* ArrayNew.java (Externalizable): Likewise
	* ArrayLength.java (Externalizable): Likewise
    
2003-06-06  Per Bothner  <per@bothner.com>

	* Invoke.java (inlineClassName, inline): Call ApplyExp.setLine.

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

	* Invoke.java (applyN, applyN):  Use Symbol's getName method.

	* Invoke.java (inlineClassName):  Take InlineCalls parameter instead
	of Interpreter.  Get latter from former.
	If type is a Classtype and isExisting, emit error is not found.

	* InstanceOf.java (inline):  Upadte call to inlineClassName.
	* SlotGet.java (inline):  Likewise.
	* SlotSet.java (inline):  Likewise.

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

	* ClassMethods.java (checkName):  Take new 'reversible' parameter.
	* Invoke.java (getMethodName):  Pass false to checkName.
	* SlotGet.java (compile, getReturnType):  Pass true to checkName.
	* SlotSet.java (compile):  Likewise.
	Fixes bug reported 05-13 by Chris Dean <Chris.Dean@sokitomi.com>.

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

	* OccurrenceType.java:  New class, extends Type.
	* Makefile.am (java_sources):  Add new file.

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

	* Invoke.java (applyN):  Revert 04-30 change.
	* ClassMethods.java (apply):  Mangle method names non-reversibly.
	(checkName):  Likewise.

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

	* Invoke.java (applyN):  Use mangleNameIfNeeded rather than plain
	mangleName for consistency.

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

	* StaticFieldConstraint.java:  Moved from kawa.standard.
	* Makefile.am (java_sources):  Add new file.

2002-11-20  Per Bothner  <bothner@bothner.com>

	* ClassMethods.java:  Convert from ProcedureN to Procedure2.
	(apply2):  New method, replaces applyN.
	(apply(String,String)):  New method.

	* InvokeNamed.java:  Remove - don't need it after all.
	* Makefile.am:  Update accordingly.

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

	* InvokeNamed.java:  New class, extends ProcedureN.
	* Makefile.am (java_sources):  Add InvokeNamed.java.

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

	* ClassMethods.java (checkName):  Use Symbol's getName, not toString.

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

	* Invoke.java (kind):  New otpions 's' is static methods only;  'S' is
	changed to static or non-static (as documented for invoke-static).
	(applyN, getMethods, inline):  Handle both 's' and 'S' kinds.
	(inline):  If kinds=='S' and there is a single definitely ok static
	method, prefer it over non-static methods.

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

	* ClassMemberConstraint.java (define):  Special handling for aliases,
	recognized by having the type gnu.mapping.Location.

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

	* SlotGet.java (compile):  If there is no reflect-class (mapbe because
	we're currently compiling it), don't try to get its lang-specific type.

	* Invoke.java (inline):  Don't inline 'make' for new non-existing type.

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

	* Invoke.java (inlineClassName):  Allow plain Type, not just
	ClassType.  This allows (as <int> exp) to be inlined better.

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

	* SlotSet.java (compile):  Handle cals whose 2nd arg is a Field or
	Method, as created when inlining (make <type> field: value).

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

	* SlotSet.java (returnSelf):  New field.
	(setFieldReturnObject):  New static final field.
	(apply3, compile, getReturnType):  Handle returnSelf.
	* Invoke.java:  No longer implement Inlineable.
	(compile, getReturnType):  Remove methods.
	(inline):  Enhance, using most of the old logic from compile.
	We can do better type propagation easier this way.

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

	* InstanceOf.java, Invoke.java, SlotGet.java, SlotSet.java,
	TypeSwitch.java (inline):  Update to take extra ExpWalker parameter.

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

	* SlotSet.java (getField):  Call Compilation.mangleNameIfNeeded.

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

	* SlotGet.java (compile):  Convert field type to language type.

	* SlotGet.java (apply2, inline):  Use getInterpreter method.

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

	* ClassMemberConstraint.java (setup):  Fix name/this.name confusion.

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.
