2006-11-14 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / ilasm / codegen / ChangeLog
1 2006-11-09  Ankit Jain  <jankit@novell.com>
2
3         * CodeGen.cs (CodeGen.BeginAssemblyRef): Add param for attributes.
4         (SetAssemblyName): Rename to .. 
5         (SetThisAssembly): .. this. Add param for attributes.
6         * ExternTable (ExternAssembly.ctor): Likewise.
7         (ExternAssembly.Resolve): Add attributes.
8         (ExternTable.AddAssembly): Add param for attributes.
9         (ExternTable): Update to changes.
10         * Assembly.cs (Assembly.SetAssemblyAttr): New.
11         (Assembly.Resolve): Add the flags.
12
13 2006-07-20  Ankit Jain  <jankit@novell.com>
14
15         * TypeDef.cs (.ctor): If the type is an interface, then make it
16         abstract.
17         (TypeDef.AddMethodDef): Set an interface method abstract and virtual if
18         it lacks either of the attributes.
19         * MethodDef.cs (MethodDef.FullName): New.
20         (MethodDef.WriteCode): Make global methods, non-abstract and static.
21         Interface cannot have a non-static method with a body.
22         Update error messages to use new FullName property.
23
24 2006-06-07  Ankit Jain  <jankit@novell.com>
25
26         * TypeDef.cs (TypeDef.IsAbstract): New.
27         * MethodDef.cs (MethodDef.WriteCode): Parent type must also be abstract
28         for an abstract method. Abstract methods cannot have a body.
29         Report errors for body with different implementation attributes like
30         native/runtime/unmanaged etc.
31         If the method has no body, then emit a 'ret'.
32
33 2006-06-07  Ankit Jain  <jankit@novell.com>
34
35         * TypeDef.cs (TypeDef.AddFieldDef):
36         (TypeDef.Define): Use Report.Warning instead of Console.Error.WriteLine
37         (TypeDef.AddMethodDef): Likewise. Also, use methoddef.Location .
38         * ExternTable.cs (ExternTable.GetTypeRef): Likewise.
39         * MethodDef.cs (MethodDef.StartLocation): New.
40
41 2006-06-01  Ankit Jain  <jankit@novell.com>
42
43         * MethodDef.cs (GetNamedParamPos): Return -1 if param_list is null.
44
45 2006-06-01  Ankit Jain  <jankit@novell.com>
46
47         * MethodDef.cs (MethodDef): Use a ParamDef for return type, instead of a
48         BaseTypeRef.
49         (MethodDef.ctor): Update.
50         (MethodDef.AddParamDefaultValue): Remove.
51         (MethodDef.GetParam): Likewise.
52         (MethodDef.Resolve): Update to use ret_param instead of ret_type.
53
54 2006-05-31  Ankit Jain  <jankit@novell.com>
55
56         * TypeDef.cs (TypeDef.IsValueType): New.
57         (TypeDef.IsEnumType): New.
58         (TypeDef.Define): Don't seal System.ValueType or System.Enum .
59
60 2006-05-26  Ankit Jain  <jankit@novell.com>
61
62         * Assembly.cs: New. Represents a '.assembly {}' (assembly manifest).
63         * CodeGen.cs: Update to use the Assembly class.
64
65 2006-05-26  Ankit Jain  <jankit@novell.com>
66
67         * PermissionSet.cs: New.
68         * Permission.cs: New.
69         * PermissionMember.cs: New. Classes for 2.0 metadata format of
70         declarative security.
71
72         * DeclSecurity.cs (DeclSecurity.AddPermissionSet): New. Overload for new
73         PermissionSet class.
74         (DeclSecurity.AddTo): Add new style PermissionSets also.
75         * CodeGen.cs (CodeGen.AddPermisson): Handle new PermissionSets also.
76         * ExternTable.cs (ExternAssembly.AssemblyName): New.
77
78 2006-05-23  Ankit Jain  <jankit@novell.com>
79
80         * DeclSecurity.cs (IDeclSecurityTarget): Remove AddPermission &
81         AddPermissionSet methods. Add 'DeclSecurity' property.
82         * TypeDef.cs: Update implementation of IDeclSecurityTarget interface.
83         * MethodDef.cs: Likewise.
84         * ExternTable.cs: Likewise.
85         * CodeGen.cs (CodeGen.AddPermission): Use IDeclSecurityTarget.DeclSecurity .
86
87 2006-05-11  Ankit Jain  <jankit@novell.com>
88
89         * CodeGen.cs (CodeGen.AddDataDef): Use Report.Error for consistent error
90         reporting.
91         * MethodDef.cs (MethodDef.AddLabel): Likewise.
92
93 2006-05-11  Ankit Jain  <jankit@novell.com>
94
95         * MethodDef.cs (MethodDef.AddLabel): Fix exception message.
96
97 2006-05-09  Ankit Jain  <jankit@novell.com>
98
99         * MethodDef.cs (MethodDef.AddLabel): Throw exception for duplicate
100         labels.
101
102 2006-05-09 Ankit Jain  <jankit@novell.com>
103
104         * CodeGen.cs (CodeGen.data_list): Change to ..
105         (CodeGen.data_table): .. a hashtable.
106         (CodeGen.AddDataDef): Update to throw exception for duplicate .data
107         labels.
108         (CodeGen.GetDataConst): Update to use data_table.
109
110 2006-04-24  Ankit Jain  <jankit@novell.com>
111
112         * CodeGen.cs (CodeGen.ctor): Remove 'is_assembly' param.
113         (CodeGen.Write): Emit assembly manifest only if the source
114         had it.
115
116 2006-02-22  Ankit Jain  <jankit@novell.com>
117
118         * ExternTable.cs (ExternTable.GetTypeRef): Emit a warning if mscorlib is
119         referenced without a corresponding '.assembly extern' directive. 
120         * TypeDef.cs (TypeDef.Define): Valuetype class should be sealed. Emit
121         warning if its not, and make it so.
122
123 2006-02-20  Ankit Jain  <jankit@novell.com>
124
125         * *.cs: Update all .cs files to use Report.Error instead of directly
126         throwing an exception.
127         * CodeGen.cs (CodeGen.ctor): Remove 'report' param, and the related
128         field & property.
129
130 2006-02-19  Ankit Jain  <jankit@novell.com>
131
132         * ExternTable.cs (ExternTable.GetModuleTypeRef): 'module_table' can be
133         null.
134
135 2006-02-19  Ankit Jain  <jankit@novell.com>
136
137         * CodeGen.cs (CodeGen.Write): Use only filename as the name of the
138         module.
139         * TypeDef.cs (TypeDef.ResolveAsMethodRef): New.
140         (TypeDef.ResolveMethod): Change signature to take ret_type, params
141         etc instead of a signature string. Also, if the method does not exist,
142         then use ResolveAsMethodRef to return a MethodRef for it.
143         (TypeDef.ResolveVarargMethod): Likewise.
144         (TypeDef.ResolveField): Likewise.
145         * MethodRef.cs (MethodRef.Resolve): Update use of TypeDef.Resolve*
146         methods.
147         * FieldRef.cs (FieldRef.Resolve): Update use of TypeDef.ResolveField.
148         * PropertyDef.cs (PropertyDef.AsMethodDef): Throws an exception is the
149         method is not a MethodDef.
150         (PropertyDef.Define): Use AsMethodDef to ensure that get/set/other are
151         MethodDefs.
152         * EventDef.cs (EventDef.AsMethodDef): Same as PropertyDef.
153         (EventDef.Define): Likewise.    
154  
155 2006-02-19  Ankit Jain  <jankit@novell.com>
156
157         * CodeGen.cs (CodeGen.ThisModule): New.
158         (CodeGen.Write): Set module name if not set by '.module' directive.
159         * Module.cs: Inherit from ExternRef. 
160
161 2006-02-10  Ankit Jain  <jankit@novell.com>
162
163         * CodeGen.cs (CodeGen.ResolveMethod): Throw exception if global method
164         not found.
165         (CodeGen.ResolveField): Likewise for global field.
166
167 2006-02-08  Ankit Jain  <jankit@novell.com>
168
169         * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Simplify and fix
170         behavior.
171
172 2006-01-31  Ankit Jain  <jankit@novell.com>
173
174         * TypeDef.cs (TypeDef.AddMethodDef): Throw exception with proper message
175         if adding a duplicate method.
176
177 2006-01-31  Ankit Jain  <jankit@novell.com>
178
179         * InstrTable.cs (inst_table): Add 'readonly.' .
180
181 2006-01-31  Ankit Jain  <jankit@novell.com>
182
183         * ExternTable.cs (ExternTable.GetTypeRef): If type is from an 
184         undeclared assembly, then add reference to the assembly.
185
186 2006-01-28  Ankit Jain  <jankit@novell.com>
187
188         * MethodDef.cs:
189         * TypeManager.cs:
190         * MethodPointerTypeRef.cs:
191         * ExternMethodRef.cs: Remove unused variables to fix warnings.
192
193 2006-01-28  Ankit Jain  <jankit@novell.com>
194
195         * TypeDef.cs (GenericInfo):
196         * MethodDef.cs (GenericInfo): Remove (unused).
197
198 2006-01-23  Ankit Jain  <jankit@novell.com>
199
200         * TypeDef.cs (TypeDef.AddFieldDef): Throw exception if duplicate field being
201         added.
202
203 2006-01-19  Ankit Jain  <jankit@novell.com>
204
205         * Module.cs (Module): New. Class for representing this module.
206         * CodeGen.cs (CodeGen): Update to use the new Module class.
207         (CodeGen.Write): Resolve this_module.
208
209 2006-01-19  Ankit Jain  <jankit@novell.com>
210
211         * GenericParameters.cs (GenericParameter): Implement ICustomAttrTarget.
212         (GenericParameter.Resolve): New overload, reduce code duplication.
213         (GenericParameters.GetGenericParam): New. Returns a GenericParameter.
214         (GenericParameters.GetGenericParamNum): Update to use new GetGenericParam.
215
216         * TypeDef.cs (TypeDef.GetGenericParam): New. Two overloads for id and index.
217         * MethodDef.cs (MethodDef.GetGenericParam): Likewise.
218
219 2006-01-19  Ankit Jain  <jankit@novell.com>
220
221         * MethodRef.cs (MethodRef.Resolve): Resolve owner.
222
223 2006-01-16  Ankit Jain  <jankit@novell.com>
224
225         * TypeDef.cs (TypeDef.IComparable): Implement IComparable interface.
226         * TypeManager.cs (TypeManager.DefineAll): Sort type_table before Define()'ing.
227
228 2006-01-16  Ankit Jain  <jankit@novell.com>
229
230         * TypeRef.cs (TypeRef.CreateMethodRef): Return a TypeSpecMethodRef if
231         this is a modified (eg. []) type.       
232
233 2006-01-16  Ankit Jain  <jankit@novell.com>
234
235         * BaseTypeRef.cs (BaseTypeRef.Resolve): Make this abstract.
236         (BaseTypeRef.CreateMethodRef):
237         (BaseTypeRef.CreateFieldRef): Make protected and abstract.
238         * BaseClassRef.cs (BaseClassRef.Clone): Make this abstract.
239         Update all derived classes.
240         * PrimitiveTypeRef.cs (PrimitiveTypeRef.CreateMethodRef):
241         * GenericTypeInst.cs (GenericTypeInst.CreateMethodRef): Implement, but throw
242         exception as this method is not used.
243
244 2006-01-14  Ankit Jain  <jankit@novell.com>
245
246         * GenericParamRef.cs (GenericParamRef.Resolve): Apply modifications to the
247         cached type.
248
249 2006-01-14  Ankit Jain  <jankit@novell.com>
250
251         * GenericParamRef.cs (GenericParamRef.Resolve): Set PeapiType of the instance
252         to the cached one.
253
254 2006-01-13  Ankit Jain  <jankit@novell.com>
255
256         * GenericParamRef.cs (GenericParamRef.Resolve): Ensure no duplicate
257         GenParams get added to the TypeSpec table.
258         * GenericMethodSig.cs (GenericMethodSig.GetInstance): Cache sigs in a
259         static hashtable.
260         * BaseMethodRef.cs (BaseMethodRef.GetGenericMethodRef): Cache GenericMethodRefs.
261
262 2006-01-13  Ankit Jain  <jankit@novell.com>
263
264         Create BaseMethodRef from IMethodRef. Replace usage of IMethodRef
265         with BaseMethodRef in *all* files. 
266         Remove implementations of IMethodRef's methods from derived classes.
267         * BaseMethodRef.cs: New.
268
269 2006-01-13  Ankit Jain  <jankit@novell.com>
270
271         Move caching of method-refs and field-refs to BaseTypeRef, and use
272         CreateMethodRef & CreateFieldRef for creating the actual object.
273         Override these in derived classes to return the right objects.
274
275         * BaseTypeRef.cs (BaseTypeRef.CreateMethodRef): New.
276         (BaseTypeRef.CreateFieldRef): New.
277         (BaseTypeRef.GetMethodRef): Implement caching.
278         (BaseTypeRef.GetFieldRef): Likewise.
279         
280         GenericTypeInst and PrimitiveTypeRef are not cached, so static hashtables
281         are used here for caching their MethodRefs n FieldRefs.
282
283         * GenericTypeInst.cs (GenericTypeInst.GetMethodRef): Override and use
284         static hashtable to do caching.
285         (GenericTypeInst.GetFieldRef): Likewise.
286         * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Likewise.
287         (PrimitiveTypeRef.GetFieldRef): Likewise.
288
289         * CodeGen.cs (CodeGen.GetGlobalMethodRef): New. Cache global method refs.
290         (CodeGen.GetGlobalFieldRef): New. Cache global field refs.
291
292 2006-01-13  Ankit Jain  <jankit@novell.com>
293
294         Create BaseClassRef, BaseGenericTypeRef from IClassRef & IGenTypeRef.
295         Replace usage of interfaces ITypeRef, IClassRef & IGenTypeRef with their
296         corresponding Base* types.
297         * BaseTypeRef.cs: New. Combine ITypeRef and ModifiableType into this.
298         * BaseClassRef.cs: New.
299         * BaseGenericTypeRef.cs: New.
300         * TypeSpecMethodRef.cs (TypeSpecMethodRef.ctor): Slight change in order
301         of params.
302
303 2006-01-12  Ankit Jain  <jankit@novell.com>
304
305         * MethodDef.cs (MethodDef.CreateSignature): Use "`n" only for generic
306         methods.
307
308 2006-01-11  Ankit Jain  <jankit@novell.com>
309
310         * InstrTable.cs (inst_table): Uncomment stelem and ldelem .
311
312 2006-01-11  Ankit Jain  <jankit@novell.com>
313
314         Support new syntax of specifying namespace, ie., as
315         part of the type name. (gen-nested2.il)
316         * TypeDef.cs (TypeDef.ctor): Add outer as a param.
317         Don't split name on '.' for inner classes.
318         * CodeGen.cs (CodeGen.BeginTypeDef): Update to use only 'name'
319         for inner classes and FullName for outermost class.
320
321 2006-01-10  Ankit Jain  <jankit@novell.com>
322
323         * TypeDef.cs (TypeDef.GetGenericParamNum): Return -1 if type has no
324         generic parameters.
325         * MethodDef.cs (MethodDef.GetGenericParamNum): Likewise.
326
327 2006-01-10  Ankit Jain  <jankit@novell.com>
328
329         * MethodDef.cs (MethodDef.WriteCode): Resolve generic params for abstract
330         methods also.
331
332 2006-01-10  Ankit Jain  <jankit@novell.com>
333
334         * TypeDef.cs (TypeDef.TypeParameters): New.
335         (TypeDef.ResolveGenParams): New. Resolve any gen param refs in
336         constraints, base class ref or implemented interfaces.
337         * MethodDef.cs (MethodDef.ResolveGenParams): Update to use new Resolve
338         overloads and ResolveConstraints for GenericParameters.
339
340         * GenericTypeInst.cs (GenericTypeInst.Resolve): Resolve generic args.
341         * GenericParamRef.cs (GenericParamRef.Resolve): Implement.
342         * GenericParameters.cs (GenericParameter.ResolveConstraints): New.
343         (GenericParameters.ResolveConstraints): New.
344         * GenericArguments.cs (GenericArguments.Resolve): New.
345
346         * TypeRef.cs (TypeRef.GetGenericTypeInst): Don't cache.
347         * ExternTypeRef.cs (ExternTypeRef.GetGenericTypeInst): Likewise.
348
349 2006-01-09  Ankit Jain  <jankit@novell.com>
350
351         * GenericArguments.cs (GenericArguments.is_resolved): New.
352         (GenericArguments.p_type_list): New. Resolve only once and return this.
353
354 2006-01-09  Ankit Jain  <jankit@novell.com>
355
356         * TypeDef.cs (TypeDef.Define): Set is_defined to true as soon as the
357         Peapi type gets created.
358
359 2006-01-09  Ankit Jain  <jankit@novell.com>
360
361         * GenericTypeRef.cs: Rename to ..
362         * GenericParamRef.cs: .. this.
363         (IGenericTypeRef): New.
364         (GenericParamRef): Implement IGenericTypeRef.
365         * GenericTypeInst.cs (GenericTypeInst): Implement IGenericTypeRef instead
366         of IClassRef.
367         (GenericTypeInst.ResolveOnly): Rename to ResolveNoTypeSpec to implement
368         IGenericTypeRef.ResolveNoTypeSpec .
369         * MethodDef.cs (MethodDef.ResolveGenParams): Update to use GenericParamRef.
370         * Local.cs (Local.GetPeapiLocal): Use IGenericTypeRef.
371
372 2006-01-08  Ankit Jain  <jankit@novell.com>
373
374         * InstrTable.cs (inst_table): Add stelem.any, ldelem.any and
375         constrained. instructions.
376
377 2006-01-07  Ankit Jain  <jankit@novell.com>
378
379         * GenericParameters.cs (GenericParameter): New.
380         (GenericParameters): Collection of Generic parameters.
381         * TypeDef.cs:
382         * CodeGen.cs:
383         * MethodDef.cs: Update to use the new GenericParameters class.
384
385 2006-01-06  Ankit Jain  <jankit@novell.com>
386
387         GenericTypeInst.Resolve should do the expected thing ie., resolve and add
388         the Generic Inst to the typespec table. Use ResolveOnly to Resolve w/o 
389         adding to the table.
390         * GenericTypeInst.cs (GenericTypeInst.Resolve): Rename to ..
391         (GenericTypeInst.ResolveOnly): .. this.
392         (GenericTypeInst.ResolveAsClass): Rename to Resolve.
393
394         * TypeDef.cs (TypeDef.Define): Revert the ResolveAsClass calls added here.
395         * Local.cs (Local.GetPeapiLocal): Use new GenericTypeInst.ResolveOnly if type is
396         GenericTypeInst.
397
398 2006-01-06  Ankit Jain  <jankit@novell.com>
399
400         * IClassRef.cs (IClassRef.Clone): New.
401         (IClassRef.GetGenericTypeInst): Get the Generic Instance of the IClassRef.
402         (IClassRef.ResolveInstance): Resolves the generic instance and returns the
403         resolved PEAPI type.     
404
405         * TypeRef.cs:
406         * ExternTypeRef.cs: Implement new methods of IClassRef.
407         Classes implementing IClassRef cache their generic instances (GenericTypeInst)
408         and their corresponding resolved PEAPI types.
409
410         * CodeGen.cs (CodeGen.GetTypeRef): Gets a TypeRef given a type name and caches them.
411
412         GenericTypeInst is now used for any Generic Type Instance, including any
413         extern types. ExternTypeRefInst is not used now.
414         * GenericTypeInst.cs (GenericTypeInst): Implement IClassRef instead of ITypeRef.
415         (GenericTypeInst.ResolveAsClass): Adds the instance to the TypeSpec table after Resolve()'ing it.
416         Clone () returns a cloned instance which shares its class_ref and generic arguments.
417
418         * TypeDef.cs (TypeDef.Define): Use ResolveAsClass for base class and interfaces
419         being implemented if they are GenericTypeInsts.
420
421 2005-12-24  Jb Evain  <jbevain@gmail.com>
422
423         * FeatureAttr.cs: tag as Flags, add an Instance value.
424         * PropertyDef.cs (PropertyDef.Resolve): Tag the property as instance or class.
425
426 2005-12-22  Ankit Jain  <jankit@novell.com>
427
428         * MethodDef.cs (MethodDef.ctor): Add type_def param. Use this for all uses of
429         the owner type_def. ResolveGenParams () before creating signature.
430         (MethodDef.ResolveGenParams):
431         (MethodDef.ResolveGenParam): Remove type_def param, instead use type_def field.
432         (MethodDef.Define): Remove overload with typedef param.
433         (MethodDef.CreateSignature): Put "`0" right after the name instead of at the end.
434         * TypeDef.cs (TypeDef.DefineContents): Update usage of MethodDef.Define .
435
436 2005-12-21  Ankit Jain  <jankit@novell.com>
437
438         * GenericArguments.cs (GenericArguments): New.
439         * ExternTypeRefInst.cs (ExternTypeRefInst):
440         * GenericTypeInst.cs (GenericTypeInst):
441         * GenericMethodSig.cs (GenericMethodSig): Update to use new GenericArguments class.
442
443 2005-12-16  Ankit Jain  <jankit@novell.com>
444
445         Use tuple of (field name, type_name) for fielddef hashtable in TypeDef.cs and
446         CodeGen.cs
447         * FieldDef.cs (FieldDef.Type): New.
448         * TypeDef.cs (TypeDef.ResolveField): Add 'type_name' param.
449         * CodeGen.cs (CodeGen.ResolveField): Add 'type_name' param.
450         * FieldRef.cs (FieldRef.Resolve): Update usage of .ResolveField .
451         * GlobalFieldRef (GlobalFieldRef.Resolve): Likewise.
452         * ExternTable.cs (IScope.FullName): New. Returns full name including and enclosing class
453         or assembly/module name.
454         (ExternRef.FullName):
455         (ExternModule.FullName):
456         (ExternAssembly.FullName): Implement new IScope.FullName .
457         * ExternTypeRef.cs (ExternTypeRef.Clone): Clone SigMod also.
458         (ExternTypeRef.FullName): Update to return full name including enclosing type or assembly
459         or module name. 
460         (ExternTypeRef.Name): Update to return only full_name with modifiers (array/pointers etc).
461         (ExternTypeRef.GetReflectedType): Use Name instead of FullName as only type name is required here.
462         * GenericTypeRef.cs (GenericTypeRef.FullName): Return proper fullname of the form (!0 or !!0).
463         * GenericTypeInst.cs (GenericTypeInst.ctor): Change param 'full_name' to 'name'. 'full_name' is
464         constructed here using the type parameter list.
465         Update code to use name instead of full_name.
466                                
467 2005-12-15  Ankit Jain  <jankit@novell.com>
468
469         * CodeGen.cs (CodeGen.SetAssemblyName): Multiple .assembly declarations with different
470         names are not allowed.
471
472 2005-12-14  Ankit Jain  <jankit@novell.com>
473
474         * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Handle the case when only
475         lower bound (no size info) is available.
476
477 2005-12-14  Ankit Jain  <jankit@novell.com>
478
479         * TypeDef.cs (TypeDef.ctor): name_space can be null.
480
481 2005-12-13  Ankit Jain  <jankit@novell.com>
482
483         * TypeDef.cs (TypeDef.ctor): Ensure that 'name' contains only the last part
484         of the full (namespace + name) dotted name.
485
486 2005-12-12  Ankit Jain  <jankit@novell.com>
487
488         * TypeDef.cs (TypeDef.Define): Ensure nested visibility for a nested class.
489         (TypeDef.NestedFullName): New.
490
491 2005-12-09  Ankit Jain  <jankit@novell.com>
492
493         * MethodDef.cs (MethodDef.GenParamCount): typar_list can be null.
494
495 2005-12-09  Ankit Jain  <jankit@novell.com>
496
497         * ITypeRef.cs (ITypeRef.GetMethodRef): Add 'gen_param_count' param.
498         * Sentinel.cs (Sentinel.GetMethodRef): Update.
499         * GlobalMethodRef.cs (GlobalMethodRef.ctor): Add 'gen_param_count' param.
500         (GlobalMethodRef.Resolve): Update usage of MethodDef.CreateSignature .
501         * TypeDef.cs (TypeDef.GetGenericParamNum): New.
502         (TypeDef.DefineContents): Update usage of ITypeRef.GetMethodRef .
503         * ExternTypeRefInst.cs (ExternTypeRefInst.ctor): Add parameter for list of type
504         parameters (type_list).
505         (ExternTypeRefInst.Clone): Clone type_list also.
506         (ExternTypeRefInst.Resolve): Resolve the list of type parameters, and create
507         instance of PEAPI.GenericTypeInst instead of PEAPI.ClassRefInst .
508         (ExternTypeRefInst.GetMethodRef): Update.
509         * GenericTypeInst.cs (GenericTypeInst.GetMethodRef): Update signature. Update
510         usage of TypeSpecMethodRef.ctor .
511         * MethodRef.cs (MethodRef.ctor): Add 'gen_param_count' param.
512         (MethodRef.Resolve): Throw exception for non-existant owner. Update usage of
513         MethodDef.CreateSignature .
514         * ExternMethodRef.cs (ExternMethodRef.ctor): Add 'gen_param_count' param.
515         (ExternMethodRef.Resolve): Update usage of PEFile.AddMethodToTypeSpec and .AddMethod
516         * GenericMethodRef.cs (GenericMethodRef.PeapiMethod): Return PEAPI.Method obtained in 
517         .Resolve .
518         * GenericTypeRef.cs (GenericTypeRef.GetMethodRef): Update.
519         * MethodPointerTypeRef.cs (MethodPointerTypeRef.GetMethodRef): Likewise.
520         * TypeSpecMethodRef.cs (TypeSpecMethodRef.ctor): Add 'gen_param_count' param.
521         (TypeSpecMethodRef.Resolve): Update usage of PEFile.AddMethodToTypeSpec .
522         * MethodDef.cs (MethodDef.ctor): Add 'typars_list' param.
523         (MethodDef.AddGenericParam): Replace .. 
524         (MethodDef.AddGenericParams): .. with this.
525         (MethodDef.GenParamCount): New.
526         (MethodDef.GetGenericParamNum): New. Returns index for a given method type parameter name.
527         (MethodDef.ResolveGenParams): Resolves type parameter names in the parameter
528         list to their corresponding indices.
529         (MethodDef.ResolveGenParam): Resolves a give type parameter to its corresponding
530         index.
531         (MethodDef.CreateSignature): Add 'gen_param_count' param.
532         * TypeRef.cs (TypeRef.GetMethodRef): Update.
533         * ExternTypeRef.cs (ExternTypeRef.GetMethodRef): Likewise.
534         * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Likewise.
535
536 2005-12-05  Ankit Jain  <jankit@novell.com>
537
538         * TypeDef.cs (TypeDef.GenericInfo.num): New.
539         (TypeDef.AddGenericParam): Set num for GenericInfo.
540         * MethodDef.cs (MethodDef.GenericInfo.num): New.
541         (MethodDef.AddGenericParam): Set num for GenericInfo.
542         * GenericTypeRef.cs (GenericTypeRef.ctor): Update to use PEAPI.GenParam
543         instead of PEAPI.MVar and PEAPI.GenericTypeSpec.
544
545 2005-11-28  Ankit Jain  <jankit@novell.com>
546
547         * ExternTypeRef.cs (extern_table): Remove unused field.
548         (.ctor): Remove parameter for extern_table. Update usage accordingly.
549         * ExternTable.cs (IScope): Remove unused 'table' parameter.
550         (ExternRef): Change IScope interface implementation accordingly. Update
551         call to ExternTypeRef.ctor for the previous change.
552
553 2005-09-15  Ankit Jain  <jankit@novell.com>
554
555         * DeclSecurity.cs (IDeclSecurityTarget.AddDeclSecurity): Remove.
556           (IDeclSecurityTarget.AddPermission),
557           (IDeclSecurityTarget.AddPermissionSet): New.
558           (DeclSecurity.IDeclSecurityTarget): Implement new interface methods.
559           (DeclSecurity.sec_action),
560           (DeclSecurity.data): Remove.
561           (DeclSecurity.permissionset_table): New.
562           (DeclSecurity.ctor): Replace parameterized constructor with a default one.
563           (DeclSecurity.AddTo): AddDeclSecurity for all Security Actions in the permissionset_table.
564         * TypeDef.cs (TypeDef.declsecurity_list): Remove.
565           (TypeDef.decl_sec): New.
566           (TypeDef.IDeclSecurityTarget): Implement new interface methods.
567           (TypeDef.DefineContents): Use new decl_sec instead of declsecurity_list.
568         * CodeGen.cs (CodeGen.assembly_declsec): Change type from ArrayList to DeclSecurity.
569           (CodeGen.EndAssemblyRef): Set current_customattrtarget and current_declsectarget to null.
570           (CodeGen.IDeclSecurityTarget): Implement new interface methods.
571           (CodeGen.Write): Add assembly_declsec to the assembly (using DeclSecurity.AddTo).
572         * ExternTable.cs (ExternAssembly.declsec_list): Remove.
573           (ExternAssembly.decl_sec): New.
574           (ExternAssembly.Resolve): Use new decl_sec instead of declsec_list.
575           (ExternAssembly.IDeclSecurityTarget): Implement new interface methods.
576         * MethodDef.cs (MethodDef.declsecurity_list): Remove.
577           (MethodDef.decl_sec): New.
578           (MethodDef.IDeclSecurityTarget): Implement new interface methods.
579           (MethodDef.WriteCode): Use new decl_sec instead of declsecurity_list.
580         * ExternTypeRef.cs (ExternTypeRef.GetReflectedType): New.  
581
582 2005-09-08  Ankit Jain  <jankit@novell.com>
583
584         * CodeGen.cs (CodeGen.stack_reserve): New.
585           (CodeGen.SetStackReserve): New.
586           (CodeGen.Write): SetStackReserve on the pefile.
587
588 2005-09-06  Ankit Jain  <jankit@novell.com>
589
590         * ExternTable.cs (ExternRef.is_resolved): New.
591           (ExternModule.Resolve, ExternAssembly.Resolve,
592           ExternTable.Resolve): Return if is_resolved. Set to true at the end.
593
594 2005-08-29  Ankit Jain  <jankit@novell.com>
595
596         * InstrTable.cs (inst_table): Comment out stelem and ldelem opcodes.
597
598 2005-08-26  Ankit Jain  <jankit@novell.com>
599
600         * ExternTable.cs (IScope): New. Interface for ResolutionScope.
601           (ExternRef): Implement IScope.
602           (ExternRef.GetTypeRef): Handle references to nested classes.
603           (ExternRef.GetValueType): Remove. Logic combined with GetType.
604           (ExternRef.GetType): Add param 'is_valuetype' and handle accordingly.
605         * ExternTypeRef.cs (ExternTypeRef): Implement IScope.
606           (ExternTypeRef.extern_ref),
607           (ExternTypeRef.ctor),
608           (ExternTypeRef.ExternRef): Change extern_ref type from ExternRef to IScope.
609           (ExternTypeRef.nestedtypes_table),
610           (ExternTypeRef.nestedclass_table): New. Hashtables for nested classes.
611           (ExternTypeRef.Resolve): Resolve parent if it is ExternTypeRef type.
612           (ExternTypeRef.GetTypeRef): New.
613           (ExternTypeRef.GetExternTypeRef): New. Returns the resolve PEAPI type.
614           (ExternTypeRef.GetType): New.
615
616 2005-08-23  Ankit Jain  <jankit@novell.com>
617
618         * ExternTable.cs (ExternTable.ctor): Remove. Move the initialization code
619           to the new method AddCorlib.
620           (ExternTable.AddCorlib): New.
621           (ExternTable.Resolve): Assembly_table can be null so check before using it.
622           (ExternTable.GetTypeRef): AddCorlib if mscorlib is being referenced but
623           assembly_table is still null.
624         * CodeGen.cs (CodeGen.SetAssemblyName): Call AddCorlib if name is not mscorlib.
625           (CodeGen.Write): Pass null for new outputDir param for PEFile ctor. 
626         * (PrimitiveTypeRef.Name): New. Returns the full_name.
627
628 2005-08-18  Ankit Jain  <jankit@novell.com>
629
630         * IMethodRef.cs (IMethodRef.Owner): New. Returns owner of the method.
631         * GlobalMethodRef.cs (GlobalMethodRef),
632           MethodRef.cs (MethodRef),
633           ExternMethodRef.cs (ExternMethodRef),
634           GenericMethodRef.cs (GenericMethodRef),
635           TypeSpecMethodRef.cs (TypeSpecMethodRef): Implement IMethodRef.Owner.
636         * CustomAttr.cs (CustomAttr.IsSuppressUnmanaged): New. Checks if the
637           it is a "System.Security.SuppressUnmanagedCodeSecurityAttribute" and 
638           is from "mscorlib" or the current assembly is mscorlib itself.
639         * TypeDef.cs (TypeDef.DefineContents),
640           MethodDef.cs (MethodDef.WriteCode): Set HasSecurity attribute if
641           SuppressUnmanagedCodeSecurity custom attribute is present.
642         * ExternTable.cs (ExternRef.Name): New.  
643         * ExternTypeRef.cs (ExternTypeRef.ExternRef): New. Returns the corresponding
644           extern ref.
645
646 2005-08-18  Ankit Jain  <jankit@novell.com>
647
648         * MethodDef.cs (MethodDef.WriteCode): Process custom attributes and decl security
649           lists even for abstract methods.
650
651 2005-08-16  Ankit Jain  <jankit@novell.com>
652
653         * CodeGen.cs (CodeGen.current_field_native_type): New.
654           (CodeGen.AddFieldMarshalInfo): New. Add marshal info for the current field.
655           (CodeGen.AddFieldDef): Add marshal info for the field.
656         * FieldDef.cs (FieldDef.native_type): New. Native type for marshalling.
657           (FieldDef.AddMarshalInfo): New. Set native_type.
658           (FieldDef.Resolve): Set MarshalInfo for field_def.
659         * MethodDef.cs (MethodDef.ret_native_type): New. Native type for return type.  
660           (MethodDef.AddRetTypeMarshalInfo): New.
661           (MethodDef.EntryPoint): Throw exception is the method is not static.
662           (MethodDef.Resolve): Call overload with class_def=null.
663           (MethodDef.Resolve): Add global methods to code_gen.PEFile. 
664           Add marshal info for return type.
665         * ParamDef.cs (ParamDef.native_type): New. Native type for marshalling.
666           (ParamDef.AddMarshalInfo): New.
667           (ParamDef.Define): Add marshal info to peapi_param.
668
669 2005-08-08  Ankit Jain  <jankit@novell.com>
670
671         * ExternTypeRef.cs (ExternTypeRef.Clone): Use full_name instead of FullName
672           to avoid cloning modifiers (like []).
673
674 2005-08-08  Ankit Jain  <jankit@novell.com>
675
676         * CodeGen.cs (CodeGen.entry_point): New bool field.
677           (CodeGen.HasEntryPoint): New. Property to mark that the assembly
678           has an entrypoint.
679           (CodeGen.Write): Throw Exception if an EXE has been requested but the
680           source file has no entrypoint defined.
681
682 2005-08-05  Ankit Jain  <jankit@novell.com>
683
684         * DeclSecurity.cs: New File.
685           (DeclSecurity): New class.
686           (IDeclSecurityTarget): New interface.
687         * TypeDef.cs (TypeDef): Implement IDeclSecurityTarget.
688           (TypeDef.DefineContents): Add DeclSecurity info.
689         * CodeGen.cs (CurrentDeclSecurityTarget): New. Property for current
690           DeclSecurity target.
691           (BeginTypeDef, BeginMethodDef, BeginAssemblyRef): Set current DeclSecurity
692           target accordingly.
693           (AddAssemblyDeclSecurity): New. Add DeclSecurity info to assembly.
694         * ExternTable.cs (ExternAssembly): Implement IDeclSecurityTarget.
695           (Resolve): Add DeclSecurity info to AssemblyRef.
696         * MethodDef.cs (MethodDef): Implement IDeclSecurityTarget.
697           (WriteCode): Add DeclSecurity info to MethodDef.
698
699 2005-08-03  Ankit Jain  <jankit@novell.com>
700
701         * GlobalMethodRef.cs (GlobalMethodRef.Resolve): Use CreateVarargSignature
702           to create method's signature for a vararg method.
703
704 2005-08-02  Ankit Jain  <ankit@corewars.org>
705
706         Fix #61512.
707         * TypeDef.cs (TypeDef.Define): Use default values for pack and size if only
708           one of them is unspecified.
709
710 2005-05-10  Ankit Jain  <ankit@corewars.org>
711
712         Fix #74768.
713         * ExternTable.cs (ExternRef.GetTypeRef): Make ValueClass if requested.
714         Hack alongwith Hari.
715
716 2005-05-06  Ankit Jain  <ankit@corewars.org>
717
718         * MethodDef.cs (MethodDef.GetNamedParamPos): Param num starts from 1 for instance
719         methods.
720         * CodeGen.cs (CodeGen.BeginTypeDef): Set current_customattrtarget when reopening a
721         class.
722         
723 2005-04-27  Ankit Jain  <ankit@corewars.org>
724
725         * ExternTypeRefInst.cs (ExternTypeRefInst.GetMethodRef): Use method_table to avoid
726         creating duplicates.
727         * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Use method_table to avoid 
728         creating duplicates
729         * PeapiTypeRef.cs (Pair): New class. Tuple of PEAPI.Type and string.
730         (PeapiTypeRef.type_table): New.
731         (PeapiTypeRef.MakeArray, MakeBoundArray, MakeManagedPointer, MakeUnmanagedPointer,
732         MakeCustomModified): Use type_table to avoid creating duplicates.
733         
734 2005-04-22  Atsushi Enomoto  <atsushi@ximian.com>
735
736         * InstrTable.cs :
737           ble.un.s and blt.un.s were incorrectly added to the table.
738
739 2005-04-22  Ankit Jain  <ankit@corewars.org>
740
741         * TypeSpecMethodRef.cs (TypeSpecMethodRef.Resolve): Set is_resolved
742         to true.
743         
744 2005-04-18  Ankit Jain  <ankit@corewars.org>
745
746         * CodeGen.cs (CodeGen.AddManifestResource): Add a
747         ManifestResource to manifestResources ArrayList.
748         (CodeGen.Write): Add all resources to the pefile.
749
750 2005-04-12  Ankit Jain  <ankit@corewars.org>
751
752         * CustomAttr.cs (ICustomAttrTarget): New interface.
753         * TypeDef.cs: Implement ICustomAttrTarget.
754         * FieldDef.cs, PropertyDef.cs, ParamDef.cs, EventDef.cs
755         (AddCustomAttribute): Implement ICustomAttrTarget
756         (.Resolve): Add custom attributes.
757         * CodeGen.cs (CurrentCustomAttrTarget): New. Property for 
758         current CustomAttr target.
759         (BeginTypeDef, BeginMethodDef, BeginAssemblyRef): Set
760         current_customattrtarget accordingly.
761         * ExternTable.cs (ExternRef): Implement ICustomAttrTarget.
762         (ExternModule.Resolve): Add custom attributes to ModuleRef.
763         (ExternAssembly.Resolve): Add custom attributes to AssemblyRef.
764         * MethodDef.cs: Implement ICustomAttrTarget and add custom
765         attributes.
766         (GetParam): New. Get ParamDef by index.
767
768 2005-04-08  Ankit Jain  <radical@corewars.org>
769
770         * MethodDef.cs (named_param_table, CreateNamedParamTable): Remove.
771         (GetNamedParamPos): Implement using a linear scan.
772
773         * TypeDef.cs (TypeDef): Initialize 'is_enum_class'.
774         (Define): Set 'is_value_class' or 'is_enum_class' depending on
775         whether the parent is System.ValueType or System.Enum.  Update to
776         changes in PEAPI.cs.
777
778 2005-03-17  Ankit Jain  <radical@corewars.org>
779
780         * MethodDef.cs: Added method AddParamDefaultValue for adding DefaultValue
781         to a method parameter.
782         * ParamDef.cs: Added method AddDefaultValue and handling of default value.
783
784 2005-02-07  Jackson Harper  <jackson@ximian.com>
785
786         * MethodDef.cs: Don't die on duplicate local symbols. Fixes bug
787         72149. Patch by Sohail Somani.
788
789 2004-12-14  Raja R Harinath  <rharinath@novell.com>
790
791         * MethodDef.cs (CreateSignature): Add a space in generated signature.
792
793 2004-12-02  Jackson Harper  <jackson@ximian.com>
794
795         * ExternTypeRefInst.cs: When converting to arrays we loose our valuetypedness.
796
797 2004-12-02  Jackson Harper  <jackson@ximian.com>
798
799         * MethodDef.cs: Abstract methods don't get bodies. Even if there
800         are bodies there.
801
802 2004-12-02  Jackson Harper  <jackson@ximian.com>
803
804         * MethodDef.cs: If the type is an interface auto set fields to
805         static (and give a warning if they are not static), and set
806         methods to abstract virtual (and give warning if they were not already).
807         * FieldDef.cs:
808         * TypeDef.cs: Accessors and convience properties for getting and
809         setting the method/field attributes.
810         
811         
812 2004-12-02  Jackson Harper  <jackson@ximian.com>
813
814         * FieldDef.cs: Set the underlying type for bytearray data constants. This
815         fixes bug #70153 and #70154 which my previous fix caused.
816
817 2004-08-01  Atsushi Enomoto  <atsushi@ximian.com>
818
819         * DebuggingInfo.cs : csc build fix (see bug #62230).
820
821 2004-07-27  Martin Baulig  <martin@ximian.com>
822
823         * IInstr.cs (IInstr): Made this an abstract class and not an
824         interface, added a .ctor which takes a Location.
825         (IInstr.Location): New public readonly field.
826
827         * CodeGen.cs (CodeGen.SymbolWriter): New public property.
828         (CodeGen.BeginSourceFile, EndSourceFile): New public methods.
829         (CodeGen.EndMethodDef): Take a `Location' argument.
830         (CodeGen.Write): Create debugging info if the user requested it.
831
832         * MethodDef.cs (MethodDef.ctor): Added `CodeGen codegen' and
833         `Location start' arguments.  If the user requested debugging
834         information, register ourselves with the symbol writer.
835         (MethodDef.WriteCode): Emit debugging information.
836
837         * DebuggingInfo.cs: New file.
838
839 2004-07-23  Jackson Harper  <jackson@ximian.com>
840
841         * MethodDef.cs: Params are 1 based if the method is instance
842         because of the 'this' arg.
843         
844 2004-07-21  Jackson Harper  <jackson@ximian.com>
845
846         * ExternTypeRefInst.cs: Use the PeapiType so that modified types
847         will actually work. Add a Clone method so that type ref insts
848         aren't duplicated making them modified multiple times.
849         
850 2004-07-12  Jackson Harper  <jackson@ximian.com>
851
852         * MethodDef.cs: Local lists are not lazyily allocated so they were
853         getting added to every method. This is legal but wastes space.
854
855 2004-07-08  Jackson Harper  <jackson@ximian.com>
856
857         * CodeGen.cs: Add assembly custom attributes to the pe file.
858         * CustomAttr.cs: Custom attributes are now added through the
859         pefile, this ensures that they get emitted properly.
860         * ExternTable.cs: Allow adding custom attributes to assembly
861         refs.
862         
863 2004-06-26  Jackson Harper  <jackson@ximian.com>
864
865         * TypeDef.cs: Preserve the order of fields in a class. Then after
866         all the fields have been defined reset the order in PEAPI to the
867         correct order. This is done so sequential layouts actually
868         work. The order needs to be reset because it can be lost during
869         the recursive definition phase.
870         * MethodDef.cs: Use and ExternModule for pinvoke data's module
871         refs. This way we don't get duplicate module refs.
872         
873 2004-06-24  Jackson Harper  <jackson@ximian.com>
874
875         * MethodDef.cs: Report when defining methods just like MS.
876         * TypeDef.cs: Error message when we can't find a locla method.
877         
878 2004-06-23  Jackson Harper  <jackson@ximian.com>
879
880         * MethodDef.cs: sigh, another varargs fix that probably breaks
881         other varargs tets. Someday I will get this right, I don't think
882         today is that day though. This fix basically just makes sure to
883         trim the sentinel off of signatures. Also eliminated some code
884         duplication.
885         * ParamDef.cs: Make IsSentinel work for both cases of generating a
886         sentinel param def.
887         
888 2004-06-20  Jackson Harper  <jackson@ximian.com>
889
890         * SwitchInstr.cs: Allow switches with no labels.
891         
892 2004-06-20  Jackson Harper  <jackson@ximian.com>
893
894         * InstrTable.cs: Add .u8 opcodes for ldind and ldelem these are
895         just aliases to their .i8 equivelents.
896         
897 2004-06-19  Jackson Harper  <jackson@ximian.com>
898
899         * MethodPointerTypeRef.cs: New File - represents a method pointer
900         that is being treated as a typeref. For example method void*() in
901         the statement castclass method void*().
902         
903 2004-06-19  Jackson Harper  <jackson@ximian.com>
904
905         * InstrTable.cs: Add undocumented brnull opcode. This is really
906         just an alias for brfalse.
907         
908 2004-06-19  Jackson Harper  <jackson@ximian.com>
909
910         * MethodDef.cs: Add a method to create vararg signatures from a
911         list of typerefs that matches the algorithm for creating vararg
912         signatures from paramdefs. This is used when creating methodref
913         signatures.
914         * MethodRef.cs: Use the new CreateVarargSignature method to create
915         the methods signature if it is a vararg method.
916         
917 2004-06-14  Jackson Harper  <jackson@ximian.com>
918
919         * CodeGen.cs: Allow file refs to be added.
920         * FileRef.cs: New file - represents a file ref.
921         
922 2004-06-14  Jackson Harper  <jackson@ximian.com>
923
924         * CodeGen.cs: Allow adding module refs.
925         * ExternTable.cs: Add ExternModule refs.
926         * ExternTypeRef.cs: Take an ExternRef which can be either an
927         assmebly ref or a module ref.
928         
929 2004-06-14  Jackson Harper  <jackson@ximian.com>
930
931         * CodeGen.cs: Implement setting module names.
932         
933 2004-05-23  Jackson Harper  <jackson@ximian.com>
934
935         * MethodDef.cs: Cache vararg signatures so a new memberref is not
936         created for each vararg pattern.
937         
938 2004-05-22  Jackson Harper  <jackson@ximian.com>
939
940         * InstrTable.cs: ldc.i4.M1 is aliased to ldc.i4.m1. Fixes bug #58524.
941         
942 2004-05-22  Jackson Harper  <jackson@ximian.com>
943
944         * GlobalMethodRef.cs: Check for sentinel properly.
945         
946 2004-04-03  Jackson Harper  <jackson@ximian.com>
947
948         * CodeGen.cs: cast
949         
950 2004-04-02  Jackson Harper  <jackson@ximian.com>
951
952         * CodeGen.cs: Allow setting assembly info.
953         
954 2004-04-01  Jackson Harper  <jackson@ximian.com>
955
956         * CodeGen.cs: Add a current assembly ref and methods to create/end
957         it so we can set assembly ref attributes.
958         * ExternTable.cs: Make the ExternAssembly public so that its
959         attributes can be set.
960
961 2004-03-28  Jackson Harper  <jackson@ximian.com>
962
963         * PeapiTypeRef.cs: Check for null bounds in bound arrays. Patch by
964         Vladimir Vukicevic.
965         * ModifiablyType.cs: Set names properly for bound arrays.
966         
967 2004-02-18  Jackson Harper <jackson@ximian.com>
968
969         * ExternTypeRefInst.cs: New file - represents an instance of an
970         extern type ref, used for making value type tokens.
971         * TypeDef.cs: Add implementing classes.
972         
973 2003-12-10  Jackson Harper <jackson@ximian.com>
974
975         * ModifiableType.cs: Allow the conversion list to be got/set.
976         * ExternTypeRef.cs: Add a Clone method. Remove table modification.
977         
978 2003-12-10  Jackson Harper <jackson@ximian.com>
979
980         * ExternTable.cs: Add methods to update a types name.
981         * ExternTypeRef.cs: When a types name is modified update it in the
982         table.
983         
984 2003-12-08  Jackson Harper <jackson@ximian.com>
985
986         * ModifiableType.cs: Put modifier and class in the list in the
987         correct order.
988         
989 2003-11-18  Jackson Harper <jackson@ximian.com>
990
991         * MethodDef.cs: Add support for .zeroinit. This is just another
992         way of initializing locals.
993         
994 2003-11-17  Jackson Harper <jackson@ximian.com>
995
996         * LdstrInstr.cs: Allow strings to be created as bytearrays.
997         
998 2003-10-28 Jackson Harper <jackson@ximian.com>
999
1000         * ExternTable.cs: Revert back to resolving value and class types
1001         into the same table. This avoids types being resolved multiple
1002         times when classrefs are used with valuetypes.
1003         
1004 2003-10-28 Jackson Harper <jackson@ximian.com>
1005
1006         * ExternTable.cs: This is now used to store ExternTypeRefs so we
1007         only create 1 for each external type.
1008         * ExternTypeRef.cs: Only create one method and field per a
1009         signature/name.
1010         
1011 2003-10-18 Jackson Harper <jackson@ximian.com>
1012
1013         * ExternTable.cs: Separate class and value types into diff tables.
1014         
1015 2003-10-18 Jackson Harper <jackson@ximian.com>
1016
1017         * InstrTable.cs: Use short branch instructions instead of aliasing them
1018         to the long branch instructions.
1019         
1020 2003-10-13 Jackson Harper <jackson@ximian.com>
1021
1022         * MethodDef.cs: Check for null param lists in vararg
1023         methods. Fixes bug #49614.
1024         
1025 2003-10-11 Jackson Harper <jackson@ximian.com>
1026
1027         * GenericTypeRef.cs: Allow Mvars to be a base type.
1028         * GenericMethodRef.cs: Basically just a wrapper around an existing
1029         method making it into a generic method. 
1030         * GenericMethodSig.cs: Signature for a generic method.
1031         
1032 2003-10-08 Jackson Harper <jackson@ximian.com>
1033
1034         * PeapiTypeRef.cs: Remove old hackery for adding methods to
1035         arrays, use typespecs now.
1036         
1037 2003-10-08 Jackson Harper <jackson@ximian.com>
1038
1039         * InstrTable.cs: Add unbox.any instruction.
1040         * MethodDef.cs: Allow generic parameters to be added to methods.
1041         
1042 2003-10-06 Jackson Harper <jackson@latitudegeo.com>
1043
1044         * MethodInfo.cs: Use report to display no label error message.
1045         
1046 2003-10-01 Jackson Harper <jackson@latitudegeo.com>
1047
1048         * LabelInfo.cs: Fix tabbing, add ToString so labels are printed
1049         properly in error messages.
1050         
1051 2003-09-27 Jackson Harper <jackson@latitudegeo.com>
1052
1053         * MethodDef.cs: Allow PInvoke info to be added.
1054         
1055 2003-09-21 Jackson Harper <jackson@latitudegeo.com>
1056
1057         * CodeGen.cs: Add methods for adding data. CodeGen now takes a
1058         report object for giving users errors/warnings/info.
1059         * FieldDef.cs: When a data constant is assigned to a field the
1060         constant might not exist yet. So just take the constants name and
1061         look it up when writting code.
1062         * Local.cs: Starting to add some error handling. Still playing
1063         with diff ways to do this.
1064         * MethodDef.cs: Add some error handling for local var lookups
1065         * TypeDef.cs: Data is allways global so it should never be added
1066         to a class
1067         * TypeRef.cs: Error message for lookups.
1068         
1069 2003-09-20 Jackson Harper <jackson@latitudegeo.com>
1070
1071         * TypeDef.cs: Rework so multiple constraints can be added to a
1072         generic parameter.
1073         
1074 2003-09-16 Jackson Harper <jackson@latitudegeo.com>
1075
1076         * InstrTable.cs: endfault instruction (which is just endfinally
1077         with a costume on).
1078         
1079 2003-09-15 Jackson Harper <jackson@latitudegeo.com>
1080
1081         * FinallyBlock.cs: The sad thing is how long it took me to realize
1082         what was going on here...
1083                 
1084 2003-09-13 Jackson Harper <jackson@latitudegeo.com>
1085
1086         * MethodInstr.cs: callvirt operation is implicitly instance.
1087         
1088 2003-09-12 Jackson Harper <jackson@latitudegeo.com>
1089
1090         * TypeRef.cs: Remove unused enum, this has been moved to the
1091         ModifiableType base class.
1092         
1093 2003-09-08 Jackson Harper <jackson@latitudegeo.com>
1094
1095         * TypeDef.cs: By default types will have System.Object as their
1096         parent type if no parent type is specified (this is what PEAPI
1097         does) however if we are assembling corlib the System.Object type
1098         will not have System.Object as its parent type.
1099         
1100 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
1101
1102         * DataDef.cs: Make name public so data names can be looked up
1103         * FieldDef.cs: Stub method for adding data values
1104         * TypeDef.cs: Implement long form overrides, fix some backwords
1105         variable naming, add a method to lookup data definitions.
1106         
1107 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
1108
1109         * IClassRef.cs: Removed methods that have been moved into ITypeRef
1110         * MethodDef.cs: Make some properties public, Add method to get a
1111         list of parameter types. This is used to build signatures. Alow
1112         sentinels in signatures and in param lists. Fix some tabbing.
1113         * ParamDef.cs: Expose the parameters type so they can be used when
1114         building signatures.
1115         * TypeDef.cs: Add and emit overrides.
1116                 
1117 2003-08-10 Jackson Harper <jackson@latitudegeo.com>
1118
1119         * CodeGen.cs: Fix tabbing
1120         * ModifiableType.cs: Modify a types signature when the type is
1121         modified instead of waiting untill the end. Signatures need to be
1122         modified immediatly because they are used in method signatures and
1123         would fail for overloaded operations if sigs weren't modified
1124         right away.
1125         * ExternTypeRef.cs: Add signature modifications, fix some tabbing
1126         * GenericTypeInst.cs: Use ModifiableType as a base
1127         * GenericTypeRef.cs: Use ModifiableType as a base
1128         * PeapiTypeRef.cs: No longer take or modify type names.
1129         * PrimitiveTypeRef.cs: Add signature modifications, fix some tabbing.
1130         * Sentinel.cs: Add signature modifications, fix some tabbing.
1131         * TypeRef.cs: Add signature modifications, fix some tabbing.
1132                 
1133 2003-08-05  Nick Drochak <ndrochak@gol.com>
1134
1135         * IClassRef.cs: Fix build on .NET
1136
1137 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1138
1139         * IClassRef.cs: Add method for making types into value types
1140         * ExternTypeRef.cs: Add functionality for valuetypes
1141         * MethodDef.cs: Handle Vararg signatures individually. Fixes for
1142         new Sentinel type in vararg signatures
1143         * MethodRef.cs: Use new SentinelTypeRef instead of Sentinel type 
1144         ref constant.
1145         * ParamDef.cs: New method to check if this parameter is the sentinel
1146         * TypeRef.cs: Add some functionality for creating valuetypes
1147         * Sentinel.cs: New type represents the sentinel
1148
1149 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1150
1151         * TypeDef.cs: Make types into value types if specified. Also
1152         add the functionality to make types into Enums.
1153         TODO: Value types of nested classes.
1154
1155 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1156
1157         * LabelInfo.cs: Move this type outside of MethodDef, because other
1158         types use LabelInfos for label references now.
1159         * BranchInstr.cs: Take a LabelInfo instead of information on a label.
1160         * HandlerBlock.cs: Take a LabelInfo instead of information on a label.
1161         * MethodDef.cs: Return LabelInfo from AddLabel methods. New method for
1162         adding a reference to a label.
1163         
1164 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
1165
1166         * ExternMethodRef.cs: Remove top secret debugging code.
1167         * MethodDef.cs: Less elegant but more bugfree method of doing explicit
1168         offsets for labels. Just put the offset labels in another list and 
1169         define them in another loop.
1170         
1171 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
1172
1173         * IMethodRef.cs: Method refs should expose their call conv. This is
1174         needed so the call conv can be modified for the newobj operation which
1175         is implicitly instance.
1176         * ExternMethodRef.cs: Expose call conv. Don't resolve vararg methods
1177         more then once.
1178         * GlobalMethodRef.cs: Expose call conv
1179         * TypeSpecMethodRef.cs: Expose call conv
1180         * MethodInstr.cs: For newobj operations set the call conv to instance
1181
1182 2003-07-31 Jackson Harper <jackson@latitudegeo.com>
1183
1184         * MethodDef.cs: Allow 0 offsets for labels, and make sure to only
1185         use offsets when we are supposed to.
1186         
1187 2003-07-30 Jackson Harper <jackson@latitudegeo.com>
1188
1189         * BranchInstr.cs: Allow explicit offsets for labels
1190         
1191 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
1192
1193         * FilterBlock.cs: Use a handler block for the this block. This
1194         makes it easier to create filters using braces, labels, or offsets
1195         * HandlerBlock.cs: Allow handler blocks to be created using positions,
1196         offsets, and labels.
1197         * MethodDef.cs: Add methods to create labels all 3 ways, and emit
1198         labels created by each of the methods.
1199         * TryBlock.cs: Use a handler block instead of label strings. This 
1200         allows all three methods of label creation to be used.
1201         
1202 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
1203
1204         * IInstr.cs: Instructions now get their parent method when being 
1205         emitted.
1206         * *Instr.cs: Adjust emit method to accept a methoddef
1207         
1208 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1209
1210         * CodeGen.cs: Set the assembly name when creating the PEFile. 
1211
1212 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1213
1214         * CodeGen.cs: Do not create the PEFile untill the resolve phase. This 
1215         fixes the problem with ilasm creating blank files if their is a 
1216         failure in the parsing phase and not being able to set the assembly
1217         name.
1218         * ExternTable.cs: Do not reference the assemblies untill after the 
1219         PEFile untill the Resolve phase.
1220         
1221 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1222
1223         * ExternFieldRef.cs: Resolve as a typespec field if neccasary, make 
1224         sure to not resolve more then once.
1225         * ExternMethodRef.cs: Resolve as a typespec method if neccasary
1226         * ExternTypeRef.cs: Use modifiable type as base class
1227         * FieldRef.cs: Make sure to not resolve more then once.
1228         * GlobalFieldRef.cs: Make sure to not resolve more then once.
1229         * GlobalMethodRef.cs: Make sure to not resolve more then once.
1230         * ITypeRef.cs: Types no longer need the AsClassRef method
1231         * MethodDef.cs: Only decriment param count for vararg methods if there
1232         is an ellipsis on the end of the param list. 
1233         Fix little bug so return types allways get resolved.
1234         * PeapiTypeRef.cs: Use TypeRef.Ellipsis for a place holder in bound
1235         arrays instead of null
1236         * PrimitiveTypeRef.cs: Use modifiable type as a base
1237         * TypeRef.cs: Use modifable type as base, and let it do all the
1238         modifications
1239         * TypeSpecFieldRef.cs: Make sure to not resolve more then once.
1240         * ModifiableType.cs: New base class for all types. This class will
1241         handle all of the typemodification and determine whether methods
1242         should be added to the type or the types typespec.
1243         
1244 2003-07-25 Jackson Harper <jackson@latitudegeo.com>
1245
1246         * MethodDef.cs: If methods do not have the static attribute give
1247         them the instance calling convention.
1248                 
1249 2003-07-21 Jackson Harper <jackson@latitudegeo.com>
1250
1251         * MethodDef.cs: Do not decremint param count for vararg methods,
1252         the ellipsis is needed later
1253         
1254 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
1255
1256         * GenericTypeInst.cs: New File - A type reference to an instance
1257         of a generic type. ie Set<int32>
1258         * TypeSpecFieldRef.cs: New File - A field ref that is attached to
1259         a typespec. This can be used with modified types, and generic types.
1260         * TypeSpecMethodRef.cs: New File - A method ref that is attached
1261         to a typespec. This can be used with modified types, and generic types.
1262         * GenericTypeRef.cs: Create method refs and field refs using the
1263         new typespec classes.
1264         * ITypeRef.cs: Types should now be able to have methods and fields
1265         attached to them
1266         * PeapiTypeRef.cs: Set UseTypeSpec to true if the type is modified
1267         * PrimitiveTypeRef.cs: Add methods to attach fields and
1268         methods. This just uses the TypeSpec* classes so I don't need to
1269         create classrefs.
1270         * TypeRef.cs: Set UseTypeSpec to true if a type is modified.
1271         
1272 2003-07-17 Jackson Harper <jackson@latitudegeo.com>
1273
1274         * GenericTypeRef.cs:  New File - A reference to a generic type
1275         spec. ie !0 or !1
1276         * InstrTable.cs: Add the stelem and ldelem opcodes.
1277         
1278 2003-07-15 Jackson Harper <jackson@latitudegeo.com>
1279
1280         * TypeDef.cs: Allow adding and emitting generic type constraints.
1281                 
1282 2003-07-14 Jackson Harper <jackson@latitudegeo.com>
1283
1284         * TypeDef.cs: Emit generic parameters.
1285
1286 2003-06-15 Jackson Harper <jackson@latitudegeo.com>
1287
1288         * CodeGen.cs: Fix buglet in cache name creating (I will claim this
1289         was a typo). 
1290                 
1291 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1292
1293         * CodeGen.cs: When creating nested types cache their names using
1294         the parent/type method but emit their short name.
1295                 
1296 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1297
1298         * CodeGen.cs: Add methods for setting corflags, subsystem, and corflags.
1299         
1300 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1301
1302         * ITypeRef.cs, PeapiTypeRef.cs, TypeRef.cs: Quick hack for custom
1303         modified types.
1304                 
1305 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1306
1307         * EventDef.cs: Only add one method for addon, fire, other, and
1308         removeon
1309                 
1310 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1311
1312         * TypeDef.cs: Add properties to types.
1313         * PropertyDef.cs: New file - Implementation of a type property feature
1314                 
1315 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1316
1317         * TypeDef.cs: Fix silly null reference bug.
1318                 
1319 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1320
1321         * EventDef.cs: New file - An event definition.
1322         * FeatureAttr.cs: New file - Attributes for features (events and
1323         properties)
1324         * MethodRef.cs: Only resolve methods once.
1325         * TypeDef.cs: Allow Events to be added to types. Also add
1326         functionality to add generic type parameters to types. The
1327         actually emission of these type parameters is commented out untill
1328         I commit my patches to PEAPI and work out the syntax of constraints.
1329                 
1330 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
1331
1332         * CodeGen.cs: Allow this assembly name to be set.
1333         * HandlerBlock.cs: Make label fields public so they can be
1334         accessed in a TryBlocks constructor.
1335         * MethodDef.cs: Allow random labels to be inserted at the current
1336         position. These are use for scope blocks.
1337         * TryBlock.cs: New constructor takes from and to labels as a HandlerBlock
1338                 
1339 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
1340
1341         * CustomAttr.cs: New file - Custom attributes
1342         * InstrTable.cs: Add stelem.r4 and stelem.r8 instructions. Add
1343         . tail to unaligned modifier.
1344         * LdtokenInstr.cs: Add type tokens.
1345         * MethodDef.cs: Fix IsVararg, add method to add custom attributes,
1346         emitting custom attributes when writing code, allow for Ellipsises
1347         in param lists, add coma between args in signatures.
1348         * ParamDef.cs: Add the Ellipsis pseudo param
1349         * PrimitiveTypeRef.cs: System.String and System.Object can be
1350         referenced without an [mscorlib] assembly prefix. 
1351         * TypeDef.cs: Add Custom attributes.
1352                 
1353 2003-05-25 Jackson Harper <jackson@latitudegeo.com>
1354
1355         * CodeGen.cs: Add method to resolve global vararg methods.
1356         * ExternMethodRef.cs: Resolve vararg methods
1357         * GlobalMethodRef.cs: Set calling conventions, add vararg methods
1358         * MethodDef.cs: Set calling conventions, add vararg methods
1359         * MethodRef.cs: Set calling conventions, add vararg methods
1360         * TypeDef.cs: Resolve vararg methods
1361         * TypeRef.cs: Add Ellipsis pseudo type, this should never really
1362         be used as a type, but is stored in arrays with other types. Pass
1363         call convs to methodref constructor.
1364                 
1365 2003-05-24 Jackson Harper <jackson@latitudegeo.com>
1366
1367         * CatchBlock.cs: Remove typo causing to labels to be the same as
1368         from labels.
1369         * FaultBlock.cs: Remove typo causing to labels to be the same as
1370         from labels.
1371         * FilterBlock.cs: Remove typo causing to labels to be the same as
1372         from labels.
1373         * MethodDef.cs: Allow for multiple labels to point to the same
1374         line. ie:
1375         END_BLOCK:
1376         PASS:
1377         do stuff
1378                 
1379 2003-05-23 Jackson Harper <jackson@latitudegeo.com>
1380
1381         * CatchBlock.cs: New file - Initial implementation of a catch
1382         block
1383         * FaultBlock.cs: New file - Initial implementation of a fault
1384         block
1385         * FilterBlock.cs: New file - Initial implementation of a filter
1386         block
1387         * FinallyBlock.cs: New file - Initial implementation of a finally
1388         block
1389         * HandlerBlock.cs: New file - A handler block is the block
1390         assosciated with a SEH clause
1391         * ISehClause: New file - Interface that structured exception
1392         handling clauses must implement.
1393         * TryBlock.cs: New file - Initial implementation only supports
1394         label form SEH. This TryBlock is added to a method as an
1395         instruction out of convenience, tryblock is not an instruction.
1396                 
1397 2003-05-22 Jackson Harper <jackson@latitudegeo.com>
1398
1399         * InstrTable.cs: Add unsigned conversion instructions.
1400                 
1401 2003-05-21 Jackson Harper <jackson@latitudegeo.com>
1402
1403         * CalliInstr.cs: New file - The calli instruction
1404         * Ldtoken.cs: New file - The ldtoken instruction
1405         * InstrTable.cs: ldc.i8 is a TOKEN_I8 and should be given the
1406         MiscToken.ldc_i8 value.
1407                 
1408 2003-05-18 Jackson Harper <jackson@latitudegeo.com>
1409
1410         * ExternMethodRef.cs: Accept and add calling conventions. Add
1411         methods using array methods if owners are arrays, resolve methods
1412         named <init> as .ctor.
1413         * ExternTable.cs: Add method to get value classes.
1414         * ExternTypeRef.cs: Add AsClassRef method, GetMethodRef now takes
1415         calling conventions.
1416         * IClassRef.cs: GetMethodRef now takes calling conventions
1417         * ITypeRef.cs: Add IsArray IsRef and AsClassRef methods
1418         * MethodRef.cs: Change <init> to .ctor
1419         * PeapiTypeRef.cs: This class is no longer an ITypeRef because it
1420         cannot be converted to a IClassRef. Add IsArray and IsRef, use new
1421         Class::GetArray* methods to convert to arrays.
1422         * PrimitiveTypeRef.cs: Add method to convert to an IClassRef
1423         * TypeRef.cs: Add IsArray and IsRef, add method to convert to
1424         IClassRef. GetMethodRef now takes calling conventions
1425                 
1426 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
1427
1428         * MethodDef.cs: Add named param table and methods to get named param
1429         positions. Add method to get named local variables slot
1430         number. Make sure param_lists aren't null when defining them. Add
1431         specialname and rtspecialname attributes if the method being
1432         defined is named '.ctor' or '.cctor'. Add new method for creating
1433         signatures using a list of typerefs.
1434         * GlobalMethodRef.cs: Use new CreateSignature method that takes an
1435         array of typerefs.
1436         * MethodRef.cs: Use new CreateSignature method
1437         * InstrTable.cs: Use INSTR_LOCAL and INSTR_PARAM tokens for
1438         instructions that take local and param operands.
1439                 
1440 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
1441
1442         * TypeDef.cs: Add size and packing information
1443                 
1444 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1445
1446         * IFieldRef.cs: New file - interface field references must implement
1447         * ExternFieldRef.cs: New file - Reference to a field in another
1448         assembly
1449         * FieldRef.cs: New file - Reference to a field in this assembly
1450         * GlobalFieldRef.cs: New file - Reference to a global field
1451         * FieldInstr.cs: New file - Instruction that takes a field
1452         instruction
1453         * CodeGen.cs: Add method to resolve global methods
1454         * ExternTypeRef.cs: Add method to get method references
1455         * FieldDef.cs: Allow methods to be resolved before being defined
1456         * IClassRef.cs: Add method to get field references.
1457         * TypeDef.cs: Add method to resolve member fields.
1458         * TypeRef.cs: Add method to get field references
1459                 
1460 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1461
1462         * GlobalMethodRef.cs: New file - A reference to a global method
1463         * CodeGen.cs: Store global methods and fields in hashtables to
1464         make lookup easier. Add method to resolve global methods.
1465                 
1466 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1467
1468         * MethodDef.cs: Allways set max stack
1469                 
1470 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1471
1472         * ExternTable.cs: Alias corlib to mscorlib since these seem to get
1473         used interchangably
1474                 
1475 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1476
1477         * IMethodRef.cs: New file - Interface that method references must
1478         implement
1479         * ExternMethodRef.cs: New file - Reference to a method in another
1480         assembly
1481         * Local.cs: New file - A Local variable
1482         * MethodInstr.cs: New file - an instruction that takes a method
1483         reference operand
1484         * IClassRef.cs: Add method to get a method reference from a class
1485         reference
1486         * MethodDef.cs: Add ability to resolve methods before defining
1487         them, add max stack, locals, and entry point. Make CreateSignature
1488         method public and static so other classes can use it.
1489         * TypeDef.cs: Store methods and fields in hashtables so they can
1490         be easily retrieved, add method to resolve member methods.
1491         * TypeRef.cs: Add method for resolving member methods.
1492         * ExternTypeRef.cs: Add methods to get classref and methodrefs
1493         * MethodRef.cs: New file - Reference to a method in this assembly.
1494         
1495                 
1496 2003-05-07 Jackson Harper <jackson@latitudegeo.com>
1497
1498         * TypeInstr.cs: New file - implementation of instructions that
1499         take a single type instruction.
1500                 
1501 2003-05-06 Jackson Harper <jackson@latitudegeo.com>
1502
1503         * SwitchInstr.cs: New file - implementation of switch instructions
1504                 
1505 2003-05-05 Jackson Harper <jackson@lattidegeo.com>
1506
1507         * MethodDef.cs: Add ability to add and emit labels
1508         * BranchInstr.cs: New file - Branch instructions
1509                 
1510 2003-05-04 Jackson Harper <jackson@latitudegeo.com>
1511
1512         * LdcInstr.cs: New file - lcd* instructions
1513         * MiscInstr.cs: New file - Just an enum that gives me constant
1514         values for instructions PEAPI does not define in an enum
1515         * InstrTable.cs: Use new MiscInstr constants instead of string values.
1516                 
1517 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1518
1519         * CodeGen.cs: Define the contents of types after all types have
1520         been resolved, this avoids the infinite loop that would occur if a
1521         type was a member of its base type.
1522         * TypeDef.cs: Method to define contents after being defined. 
1523                 
1524 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1525
1526         * TypeManager.cs: Check if type is defined before defining it.
1527                 
1528 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1529
1530         * CodeGen.cs: Add outer classes to typedefs if necesary
1531         * InstrTable.cs: ldtoken instruction is a INSTR_TOK token
1532         * TypeDef.cs: Add outer class property
1533                 
1534 2003-04-30 Jackson Harper <jackson@latitudegeo.com>
1535
1536         * MethodDef.cs: Accept and emit instructions.
1537         * CodeGen.cs: Fix typo
1538         * IInstr.cs: New file - Interface for instructions that are added to methods
1539         * IntInstr.cs: New file - Instruction that takes a single int
1540         param
1541         * LdstrInstr.cs: New file - ldstr instruction (the only
1542         instruction that takes a string parameter)
1543                 
1544 2003-04-28 Jackson Harper <jackson@latitudegeo.com>
1545
1546         * InstrTable.cs: Much simpler system. All tokens go into one
1547         hashtable now. There is no reason to have them seperated out.
1548                 
1549 2003-04-20 Jackson Harper <jackson@latitudegeo.com>
1550
1551         * CodeGen.cs: Add method to add data
1552         * FieldDef.cs: Add method to set a fields value
1553         * TypeDef.cs: Add method to add data
1554         * DataDef.cs: New file - Definition of a data constant
1555                 
1556 2003-04-18 Jackson Harper <jackson@latitudegeo.com>
1557
1558         * FieldDef.cs: Change peapi fielddef name.
1559         * MethodDef.cs: Change peapi methoddef name.
1560                 
1561 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1562
1563         * MethodDef.cs: New file - definition of a method.
1564         * ParamDef.cs: New file - definition of a parameter to a method
1565         * TypeDef.cs: Add method definitions, set intransit flag to false
1566         before defining members, so a false circular reference is not
1567         created.
1568         * CodeGen.cs: Add methods to add method definitions
1569
1570 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1571
1572         * ExternTypeRef.cs: external types are classrefs
1573                 
1574 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1575
1576         * PeapiTypeRef.cs: New file - base wrapper for type refs that are
1577         just peapi types.
1578         * PrimitiveTypeRef.cs: New file - A primitive type (char, int, string)
1579                 
1580 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1581
1582         * TypeRef.cs: Rewrite - Typerefs are now resolved after parsing.
1583         * TypeManager.cs: Rewrite - Just a simple table for looking up
1584         typedefs
1585         * ExternTable.cs: Create ClassRef's instead of Classes
1586         * Location.cs: Make compile
1587         * CodeGen.cs: Use new tree system
1588                 
1589 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1590
1591         * ExternTypeRef.cs: New file - Represents a reference to a type in
1592         an external assembly
1593         * FieldDef.cs: New file - Represents a field definition
1594         * IClassRef.cs: New file - Interface that classrefs must
1595         implement. This needs some more thought though because once a
1596         classref has been modified it is no longer a classref.
1597         * ITypeRef.cs: New file - Interface that references to types must
1598         implement
1599         * TypeDef.cs: New file - Represents the a class definition, and
1600         will hold all of the classes members.
1601
1602 2003-04-07 Jackson Harper <jackson@latitudegeo.com>
1603
1604         * TypeRef.cs: Return FieldDef when adding a field def to a class
1605                 
1606 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1607
1608         * TypeRef.cs: Add flag for making types pinned
1609         
1610 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1611
1612         * ClassTable.cs: Do not append a . to names that are not in a
1613         namespace
1614         * CodeGen.cs: Handle nested classes
1615                 
1616 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1617
1618         * ExternTable.cs: Remove some unsed fields.
1619         
1620 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1621
1622         * ExternTable.cs: Add method to lookup classes with a full name,
1623         instead of having to have namespace and name seperate.
1624         * ClassTable.cs: Make method that seprates full names into
1625         name/namespaces public.
1626                 
1627 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1628
1629         * InstrTable.cs: Add Calli, detabify
1630                 
1631 2003-03-29 Jackson Harper <jackson@latitudegeo.com>
1632
1633         * InstrTable.cs: Add branch ops switch, and lc.r*, also fix some
1634         typos for other ops.
1635
1636 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1637
1638         * ClassTable.cs: Set defined flag and type attributes for referenced 
1639         classes when they are defined.
1640
1641 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1642
1643         * MethodTable.cs: Add method to Check if all methods have been defined, set referenced methods properties
1644         when defining them
1645         * FieldTable.cs: Add method to check if all fields have been defined, set referenced fields properties
1646         when defining them
1647         * ClassTable.cs: Make sure all methods and fields are defined.
1648
1649 2003-03-16 Jackson Harper <jackson@latitudegeo.com>
1650
1651         * MethodTable.cs: Fire events when methods are defined and referenced
1652
1653 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1654
1655         * ClassTable.cs: Classes now store field tables
1656         * CodeGen.cs: Add methods to add fields and get field references
1657
1658 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1659
1660         * FieldTable.cs: New file, holds a classes fields
1661
1662 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1663
1664         * InstrTable.cs: Add FieldOp instructions
1665
1666 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1667
1668         * InstrTable.cs: Add ldstr instruction
1669
1670 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1671
1672         * CodeGen.cs: Add method to get method references.
1673         * MethodTable.cs: Complete GetReference method
1674         * InstrTable.cs: Add MethodOps (instructions that take a method ref param)
1675
1676 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1677
1678         * InstrTable.cs: Add TypeOps (instructions that take a type param)
1679
1680 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1681
1682         * InstrTable.cs: Add IntOps (instructions that take an integer param)
1683
1684 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1685
1686         * InstrTable.cs: Fix instructions that have dots in their name
1687
1688 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1689
1690         * CodeGen.cs: Add code buffer for il instructions when a new method is added.
1691         * InstrTable.cs: New file, this is a table of all the instructions (just simple 
1692         instructions right now)
1693
1694 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1695
1696         * CodeGen.cs: Set current method when a new method is added.
1697
1698 2003-03-12 Jackson Harper <jackson@latitudegeo.com>
1699
1700         * ClassTable.cs: Add Method tables to Class tables, add method to get a 
1701         class's method table.
1702         * CodeGen.cs: Add Method to add methods :p
1703         * MethodTable.cs: Add file, this class is used to add methods to a class.
1704
1705 2003-03-11 Jackson Harper <jackson@latitudegeo.com>
1706
1707         * TypeRef.cs: New file, used for pairing types and their names.
1708
1709 2003-03-09 Jackson Harper <jackson@latitudegeo.com>
1710
1711         * ExternTable.cs: Do not verify the existence of external types
1712
1713 2003-03-08: Jackson Harper <jackson@latitudegeo.com>
1714
1715         * CodeGen.cs: Add ExternTable property
1716         * ExternTable.cs: New file, this will is used for pulling 
1717         types and methods from external assemblies.
1718
1719 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1720
1721         * ClassTable.cs, CodeGen.cs: Add methods to allow types to inherit from another type.
1722
1723 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1724
1725         * ClassTable.cs: Add method to check for undefined types
1726
1727 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1728
1729         * CodeGen.cs: Use class table for adding type definitions
1730         * ClassTable.cs: Return ClassDef when defining types
1731         
1732 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1733
1734         * ClassTable.cs: Add method for adding class definitions to the 
1735         the table.
1736
1737 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
1738
1739         * CodeGen.cs: Reconfigure to work with new PEAPI emission system
1740
1741 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
1742
1743         * ClassTable.cs: Add file, this is a 'table' for storing classes
1744         * Location.cs: Add file, this will eventually be used for marking
1745         locations in IL files
1746
1747 2003-02-10 Jackson Harper <jackson@latitudegeo.com>
1748
1749         * Method.cs: Add method to set parameters, 
1750                set parameters when defining type
1751         * Class.cs: Fix very silly bug in GetMethod method
1752         
1753
1754 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
1755
1756         * Class.cs: Resolve Methods before emiting
1757         * InstrBase.cs: Take a Class instead of CodeGen when emiting
1758         * Method.cs: Replace MethodInfo property with MethodBuilder property,
1759                 Add resolve method
1760         * Instructions.cs: Take Class instead of CodeGen when emitting, 
1761                 get member methods from Class.
1762         * TypeManager.cs: Add set indexer
1763
1764 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
1765
1766         * Instructions.cs: Use TypeManager to lookup types
1767
1768 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1769
1770         * TypeManager.cs: Fix error parsing type names
1771         * Method.cs: Display the name of types that can't be found
1772
1773 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1774
1775         * TypeManager.cs: Add file
1776         * CodeGen.cs: Add TypeManager attribute
1777         * InstrBase.cs: Take a CodeGen in Emit method
1778         * Instructions.cs: Take a CodeGen in Emit method, handle arg lists better
1779         * Method.cs: Handle local variables better
1780         
1781
1782 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1783
1784         * Method.cs: Add functionality to define local variables
1785         * Instructions.cs: Add newobj instruction, cleanup call instruction
1786
1787 2003-02-03 Jackson Harper <jackson@latitudegeo.com>
1788
1789         * AssemblyNameStore.cs: Added file
1790
1791 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
1792
1793         * Instructions.cs: Resolve parameters types in a more proper manner.
1794
1795 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
1796
1797         * Class.cs: Don't try to emit methods if we don't have any
1798         * Class.cs: Test for entry point of methods, and set Assembly entrypoint
1799         * CodeGen.cs: Add method to set an Assemblys entry point
1800         * Method.cs: Add IsEntryPoint property
1801         * Method.cs Add MethodInfo property, and set this while Emiting
1802         * Instructions.cs: Add new InstrCall instruction