1 2006-11-09 Ankit Jain <jankit@novell.com>
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.
13 2006-07-20 Ankit Jain <jankit@novell.com>
15 * TypeDef.cs (.ctor): If the type is an interface, then make it
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.
24 2006-06-07 Ankit Jain <jankit@novell.com>
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'.
33 2006-06-07 Ankit Jain <jankit@novell.com>
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.
41 2006-06-01 Ankit Jain <jankit@novell.com>
43 * MethodDef.cs (GetNamedParamPos): Return -1 if param_list is null.
45 2006-06-01 Ankit Jain <jankit@novell.com>
47 * MethodDef.cs (MethodDef): Use a ParamDef for return type, instead of a
49 (MethodDef.ctor): Update.
50 (MethodDef.AddParamDefaultValue): Remove.
51 (MethodDef.GetParam): Likewise.
52 (MethodDef.Resolve): Update to use ret_param instead of ret_type.
54 2006-05-31 Ankit Jain <jankit@novell.com>
56 * TypeDef.cs (TypeDef.IsValueType): New.
57 (TypeDef.IsEnumType): New.
58 (TypeDef.Define): Don't seal System.ValueType or System.Enum .
60 2006-05-26 Ankit Jain <jankit@novell.com>
62 * Assembly.cs: New. Represents a '.assembly {}' (assembly manifest).
63 * CodeGen.cs: Update to use the Assembly class.
65 2006-05-26 Ankit Jain <jankit@novell.com>
67 * PermissionSet.cs: New.
69 * PermissionMember.cs: New. Classes for 2.0 metadata format of
72 * DeclSecurity.cs (DeclSecurity.AddPermissionSet): New. Overload for new
74 (DeclSecurity.AddTo): Add new style PermissionSets also.
75 * CodeGen.cs (CodeGen.AddPermisson): Handle new PermissionSets also.
76 * ExternTable.cs (ExternAssembly.AssemblyName): New.
78 2006-05-23 Ankit Jain <jankit@novell.com>
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 .
87 2006-05-11 Ankit Jain <jankit@novell.com>
89 * CodeGen.cs (CodeGen.AddDataDef): Use Report.Error for consistent error
91 * MethodDef.cs (MethodDef.AddLabel): Likewise.
93 2006-05-11 Ankit Jain <jankit@novell.com>
95 * MethodDef.cs (MethodDef.AddLabel): Fix exception message.
97 2006-05-09 Ankit Jain <jankit@novell.com>
99 * MethodDef.cs (MethodDef.AddLabel): Throw exception for duplicate
102 2006-05-09 Ankit Jain <jankit@novell.com>
104 * CodeGen.cs (CodeGen.data_list): Change to ..
105 (CodeGen.data_table): .. a hashtable.
106 (CodeGen.AddDataDef): Update to throw exception for duplicate .data
108 (CodeGen.GetDataConst): Update to use data_table.
110 2006-04-24 Ankit Jain <jankit@novell.com>
112 * CodeGen.cs (CodeGen.ctor): Remove 'is_assembly' param.
113 (CodeGen.Write): Emit assembly manifest only if the source
116 2006-02-22 Ankit Jain <jankit@novell.com>
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.
123 2006-02-20 Ankit Jain <jankit@novell.com>
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
130 2006-02-19 Ankit Jain <jankit@novell.com>
132 * ExternTable.cs (ExternTable.GetModuleTypeRef): 'module_table' can be
135 2006-02-19 Ankit Jain <jankit@novell.com>
137 * CodeGen.cs (CodeGen.Write): Use only filename as the name of the
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*
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
152 * EventDef.cs (EventDef.AsMethodDef): Same as PropertyDef.
153 (EventDef.Define): Likewise.
155 2006-02-19 Ankit Jain <jankit@novell.com>
157 * CodeGen.cs (CodeGen.ThisModule): New.
158 (CodeGen.Write): Set module name if not set by '.module' directive.
159 * Module.cs: Inherit from ExternRef.
161 2006-02-10 Ankit Jain <jankit@novell.com>
163 * CodeGen.cs (CodeGen.ResolveMethod): Throw exception if global method
165 (CodeGen.ResolveField): Likewise for global field.
167 2006-02-08 Ankit Jain <jankit@novell.com>
169 * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Simplify and fix
172 2006-01-31 Ankit Jain <jankit@novell.com>
174 * TypeDef.cs (TypeDef.AddMethodDef): Throw exception with proper message
175 if adding a duplicate method.
177 2006-01-31 Ankit Jain <jankit@novell.com>
179 * InstrTable.cs (inst_table): Add 'readonly.' .
181 2006-01-31 Ankit Jain <jankit@novell.com>
183 * ExternTable.cs (ExternTable.GetTypeRef): If type is from an
184 undeclared assembly, then add reference to the assembly.
186 2006-01-28 Ankit Jain <jankit@novell.com>
190 * MethodPointerTypeRef.cs:
191 * ExternMethodRef.cs: Remove unused variables to fix warnings.
193 2006-01-28 Ankit Jain <jankit@novell.com>
195 * TypeDef.cs (GenericInfo):
196 * MethodDef.cs (GenericInfo): Remove (unused).
198 2006-01-23 Ankit Jain <jankit@novell.com>
200 * TypeDef.cs (TypeDef.AddFieldDef): Throw exception if duplicate field being
203 2006-01-19 Ankit Jain <jankit@novell.com>
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.
209 2006-01-19 Ankit Jain <jankit@novell.com>
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.
216 * TypeDef.cs (TypeDef.GetGenericParam): New. Two overloads for id and index.
217 * MethodDef.cs (MethodDef.GetGenericParam): Likewise.
219 2006-01-19 Ankit Jain <jankit@novell.com>
221 * MethodRef.cs (MethodRef.Resolve): Resolve owner.
223 2006-01-16 Ankit Jain <jankit@novell.com>
225 * TypeDef.cs (TypeDef.IComparable): Implement IComparable interface.
226 * TypeManager.cs (TypeManager.DefineAll): Sort type_table before Define()'ing.
228 2006-01-16 Ankit Jain <jankit@novell.com>
230 * TypeRef.cs (TypeRef.CreateMethodRef): Return a TypeSpecMethodRef if
231 this is a modified (eg. []) type.
233 2006-01-16 Ankit Jain <jankit@novell.com>
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.
244 2006-01-14 Ankit Jain <jankit@novell.com>
246 * GenericParamRef.cs (GenericParamRef.Resolve): Apply modifications to the
249 2006-01-14 Ankit Jain <jankit@novell.com>
251 * GenericParamRef.cs (GenericParamRef.Resolve): Set PeapiType of the instance
254 2006-01-13 Ankit Jain <jankit@novell.com>
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
260 * BaseMethodRef.cs (BaseMethodRef.GetGenericMethodRef): Cache GenericMethodRefs.
262 2006-01-13 Ankit Jain <jankit@novell.com>
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.
269 2006-01-13 Ankit Jain <jankit@novell.com>
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.
275 * BaseTypeRef.cs (BaseTypeRef.CreateMethodRef): New.
276 (BaseTypeRef.CreateFieldRef): New.
277 (BaseTypeRef.GetMethodRef): Implement caching.
278 (BaseTypeRef.GetFieldRef): Likewise.
280 GenericTypeInst and PrimitiveTypeRef are not cached, so static hashtables
281 are used here for caching their MethodRefs n FieldRefs.
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.
289 * CodeGen.cs (CodeGen.GetGlobalMethodRef): New. Cache global method refs.
290 (CodeGen.GetGlobalFieldRef): New. Cache global field refs.
292 2006-01-13 Ankit Jain <jankit@novell.com>
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
303 2006-01-12 Ankit Jain <jankit@novell.com>
305 * MethodDef.cs (MethodDef.CreateSignature): Use "`n" only for generic
308 2006-01-11 Ankit Jain <jankit@novell.com>
310 * InstrTable.cs (inst_table): Uncomment stelem and ldelem .
312 2006-01-11 Ankit Jain <jankit@novell.com>
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.
321 2006-01-10 Ankit Jain <jankit@novell.com>
323 * TypeDef.cs (TypeDef.GetGenericParamNum): Return -1 if type has no
325 * MethodDef.cs (MethodDef.GetGenericParamNum): Likewise.
327 2006-01-10 Ankit Jain <jankit@novell.com>
329 * MethodDef.cs (MethodDef.WriteCode): Resolve generic params for abstract
332 2006-01-10 Ankit Jain <jankit@novell.com>
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.
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.
346 * TypeRef.cs (TypeRef.GetGenericTypeInst): Don't cache.
347 * ExternTypeRef.cs (ExternTypeRef.GetGenericTypeInst): Likewise.
349 2006-01-09 Ankit Jain <jankit@novell.com>
351 * GenericArguments.cs (GenericArguments.is_resolved): New.
352 (GenericArguments.p_type_list): New. Resolve only once and return this.
354 2006-01-09 Ankit Jain <jankit@novell.com>
356 * TypeDef.cs (TypeDef.Define): Set is_defined to true as soon as the
357 Peapi type gets created.
359 2006-01-09 Ankit Jain <jankit@novell.com>
361 * GenericTypeRef.cs: Rename to ..
362 * GenericParamRef.cs: .. this.
363 (IGenericTypeRef): New.
364 (GenericParamRef): Implement IGenericTypeRef.
365 * GenericTypeInst.cs (GenericTypeInst): Implement IGenericTypeRef instead
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.
372 2006-01-08 Ankit Jain <jankit@novell.com>
374 * InstrTable.cs (inst_table): Add stelem.any, ldelem.any and
375 constrained. instructions.
377 2006-01-07 Ankit Jain <jankit@novell.com>
379 * GenericParameters.cs (GenericParameter): New.
380 (GenericParameters): Collection of Generic parameters.
383 * MethodDef.cs: Update to use the new GenericParameters class.
385 2006-01-06 Ankit Jain <jankit@novell.com>
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
390 * GenericTypeInst.cs (GenericTypeInst.Resolve): Rename to ..
391 (GenericTypeInst.ResolveOnly): .. this.
392 (GenericTypeInst.ResolveAsClass): Rename to Resolve.
394 * TypeDef.cs (TypeDef.Define): Revert the ResolveAsClass calls added here.
395 * Local.cs (Local.GetPeapiLocal): Use new GenericTypeInst.ResolveOnly if type is
398 2006-01-06 Ankit Jain <jankit@novell.com>
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
406 * ExternTypeRef.cs: Implement new methods of IClassRef.
407 Classes implementing IClassRef cache their generic instances (GenericTypeInst)
408 and their corresponding resolved PEAPI types.
410 * CodeGen.cs (CodeGen.GetTypeRef): Gets a TypeRef given a type name and caches them.
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.
418 * TypeDef.cs (TypeDef.Define): Use ResolveAsClass for base class and interfaces
419 being implemented if they are GenericTypeInsts.
421 2005-12-24 Jb Evain <jbevain@gmail.com>
423 * FeatureAttr.cs: tag as Flags, add an Instance value.
424 * PropertyDef.cs (PropertyDef.Resolve): Tag the property as instance or class.
426 2005-12-22 Ankit Jain <jankit@novell.com>
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 .
436 2005-12-21 Ankit Jain <jankit@novell.com>
438 * GenericArguments.cs (GenericArguments): New.
439 * ExternTypeRefInst.cs (ExternTypeRefInst):
440 * GenericTypeInst.cs (GenericTypeInst):
441 * GenericMethodSig.cs (GenericMethodSig): Update to use new GenericArguments class.
443 2005-12-16 Ankit Jain <jankit@novell.com>
445 Use tuple of (field name, type_name) for fielddef hashtable in TypeDef.cs and
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
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.
467 2005-12-15 Ankit Jain <jankit@novell.com>
469 * CodeGen.cs (CodeGen.SetAssemblyName): Multiple .assembly declarations with different
470 names are not allowed.
472 2005-12-14 Ankit Jain <jankit@novell.com>
474 * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Handle the case when only
475 lower bound (no size info) is available.
477 2005-12-14 Ankit Jain <jankit@novell.com>
479 * TypeDef.cs (TypeDef.ctor): name_space can be null.
481 2005-12-13 Ankit Jain <jankit@novell.com>
483 * TypeDef.cs (TypeDef.ctor): Ensure that 'name' contains only the last part
484 of the full (namespace + name) dotted name.
486 2005-12-12 Ankit Jain <jankit@novell.com>
488 * TypeDef.cs (TypeDef.Define): Ensure nested visibility for a nested class.
489 (TypeDef.NestedFullName): New.
491 2005-12-09 Ankit Jain <jankit@novell.com>
493 * MethodDef.cs (MethodDef.GenParamCount): typar_list can be null.
495 2005-12-09 Ankit Jain <jankit@novell.com>
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
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
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.
536 2005-12-05 Ankit Jain <jankit@novell.com>
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.
545 2005-11-28 Ankit Jain <jankit@novell.com>
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.
553 2005-09-15 Ankit Jain <jankit@novell.com>
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.
582 2005-09-08 Ankit Jain <jankit@novell.com>
584 * CodeGen.cs (CodeGen.stack_reserve): New.
585 (CodeGen.SetStackReserve): New.
586 (CodeGen.Write): SetStackReserve on the pefile.
588 2005-09-06 Ankit Jain <jankit@novell.com>
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.
594 2005-08-29 Ankit Jain <jankit@novell.com>
596 * InstrTable.cs (inst_table): Comment out stelem and ldelem opcodes.
598 2005-08-26 Ankit Jain <jankit@novell.com>
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.
616 2005-08-23 Ankit Jain <jankit@novell.com>
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.
628 2005-08-18 Ankit Jain <jankit@novell.com>
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
646 2005-08-18 Ankit Jain <jankit@novell.com>
648 * MethodDef.cs (MethodDef.WriteCode): Process custom attributes and decl security
649 lists even for abstract methods.
651 2005-08-16 Ankit Jain <jankit@novell.com>
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.
669 2005-08-08 Ankit Jain <jankit@novell.com>
671 * ExternTypeRef.cs (ExternTypeRef.Clone): Use full_name instead of FullName
672 to avoid cloning modifiers (like []).
674 2005-08-08 Ankit Jain <jankit@novell.com>
676 * CodeGen.cs (CodeGen.entry_point): New bool field.
677 (CodeGen.HasEntryPoint): New. Property to mark that the assembly
679 (CodeGen.Write): Throw Exception if an EXE has been requested but the
680 source file has no entrypoint defined.
682 2005-08-05 Ankit Jain <jankit@novell.com>
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
691 (BeginTypeDef, BeginMethodDef, BeginAssemblyRef): Set current DeclSecurity
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.
699 2005-08-03 Ankit Jain <jankit@novell.com>
701 * GlobalMethodRef.cs (GlobalMethodRef.Resolve): Use CreateVarargSignature
702 to create method's signature for a vararg method.
704 2005-08-02 Ankit Jain <ankit@corewars.org>
707 * TypeDef.cs (TypeDef.Define): Use default values for pack and size if only
708 one of them is unspecified.
710 2005-05-10 Ankit Jain <ankit@corewars.org>
713 * ExternTable.cs (ExternRef.GetTypeRef): Make ValueClass if requested.
716 2005-05-06 Ankit Jain <ankit@corewars.org>
718 * MethodDef.cs (MethodDef.GetNamedParamPos): Param num starts from 1 for instance
720 * CodeGen.cs (CodeGen.BeginTypeDef): Set current_customattrtarget when reopening a
723 2005-04-27 Ankit Jain <ankit@corewars.org>
725 * ExternTypeRefInst.cs (ExternTypeRefInst.GetMethodRef): Use method_table to avoid
727 * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Use method_table to avoid
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.
734 2005-04-22 Atsushi Enomoto <atsushi@ximian.com>
737 ble.un.s and blt.un.s were incorrectly added to the table.
739 2005-04-22 Ankit Jain <ankit@corewars.org>
741 * TypeSpecMethodRef.cs (TypeSpecMethodRef.Resolve): Set is_resolved
744 2005-04-18 Ankit Jain <ankit@corewars.org>
746 * CodeGen.cs (CodeGen.AddManifestResource): Add a
747 ManifestResource to manifestResources ArrayList.
748 (CodeGen.Write): Add all resources to the pefile.
750 2005-04-12 Ankit Jain <ankit@corewars.org>
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
766 (GetParam): New. Get ParamDef by index.
768 2005-04-08 Ankit Jain <radical@corewars.org>
770 * MethodDef.cs (named_param_table, CreateNamedParamTable): Remove.
771 (GetNamedParamPos): Implement using a linear scan.
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
778 2005-03-17 Ankit Jain <radical@corewars.org>
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.
784 2005-02-07 Jackson Harper <jackson@ximian.com>
786 * MethodDef.cs: Don't die on duplicate local symbols. Fixes bug
787 72149. Patch by Sohail Somani.
789 2004-12-14 Raja R Harinath <rharinath@novell.com>
791 * MethodDef.cs (CreateSignature): Add a space in generated signature.
793 2004-12-02 Jackson Harper <jackson@ximian.com>
795 * ExternTypeRefInst.cs: When converting to arrays we loose our valuetypedness.
797 2004-12-02 Jackson Harper <jackson@ximian.com>
799 * MethodDef.cs: Abstract methods don't get bodies. Even if there
802 2004-12-02 Jackson Harper <jackson@ximian.com>
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).
808 * TypeDef.cs: Accessors and convience properties for getting and
809 setting the method/field attributes.
812 2004-12-02 Jackson Harper <jackson@ximian.com>
814 * FieldDef.cs: Set the underlying type for bytearray data constants. This
815 fixes bug #70153 and #70154 which my previous fix caused.
817 2004-08-01 Atsushi Enomoto <atsushi@ximian.com>
819 * DebuggingInfo.cs : csc build fix (see bug #62230).
821 2004-07-27 Martin Baulig <martin@ximian.com>
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.
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.
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.
837 * DebuggingInfo.cs: New file.
839 2004-07-23 Jackson Harper <jackson@ximian.com>
841 * MethodDef.cs: Params are 1 based if the method is instance
842 because of the 'this' arg.
844 2004-07-21 Jackson Harper <jackson@ximian.com>
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.
850 2004-07-12 Jackson Harper <jackson@ximian.com>
852 * MethodDef.cs: Local lists are not lazyily allocated so they were
853 getting added to every method. This is legal but wastes space.
855 2004-07-08 Jackson Harper <jackson@ximian.com>
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
863 2004-06-26 Jackson Harper <jackson@ximian.com>
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.
873 2004-06-24 Jackson Harper <jackson@ximian.com>
875 * MethodDef.cs: Report when defining methods just like MS.
876 * TypeDef.cs: Error message when we can't find a locla method.
878 2004-06-23 Jackson Harper <jackson@ximian.com>
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
885 * ParamDef.cs: Make IsSentinel work for both cases of generating a
888 2004-06-20 Jackson Harper <jackson@ximian.com>
890 * SwitchInstr.cs: Allow switches with no labels.
892 2004-06-20 Jackson Harper <jackson@ximian.com>
894 * InstrTable.cs: Add .u8 opcodes for ldind and ldelem these are
895 just aliases to their .i8 equivelents.
897 2004-06-19 Jackson Harper <jackson@ximian.com>
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*().
903 2004-06-19 Jackson Harper <jackson@ximian.com>
905 * InstrTable.cs: Add undocumented brnull opcode. This is really
906 just an alias for brfalse.
908 2004-06-19 Jackson Harper <jackson@ximian.com>
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
914 * MethodRef.cs: Use the new CreateVarargSignature method to create
915 the methods signature if it is a vararg method.
917 2004-06-14 Jackson Harper <jackson@ximian.com>
919 * CodeGen.cs: Allow file refs to be added.
920 * FileRef.cs: New file - represents a file ref.
922 2004-06-14 Jackson Harper <jackson@ximian.com>
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.
929 2004-06-14 Jackson Harper <jackson@ximian.com>
931 * CodeGen.cs: Implement setting module names.
933 2004-05-23 Jackson Harper <jackson@ximian.com>
935 * MethodDef.cs: Cache vararg signatures so a new memberref is not
936 created for each vararg pattern.
938 2004-05-22 Jackson Harper <jackson@ximian.com>
940 * InstrTable.cs: ldc.i4.M1 is aliased to ldc.i4.m1. Fixes bug #58524.
942 2004-05-22 Jackson Harper <jackson@ximian.com>
944 * GlobalMethodRef.cs: Check for sentinel properly.
946 2004-04-03 Jackson Harper <jackson@ximian.com>
950 2004-04-02 Jackson Harper <jackson@ximian.com>
952 * CodeGen.cs: Allow setting assembly info.
954 2004-04-01 Jackson Harper <jackson@ximian.com>
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.
961 2004-03-28 Jackson Harper <jackson@ximian.com>
963 * PeapiTypeRef.cs: Check for null bounds in bound arrays. Patch by
965 * ModifiablyType.cs: Set names properly for bound arrays.
967 2004-02-18 Jackson Harper <jackson@ximian.com>
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.
973 2003-12-10 Jackson Harper <jackson@ximian.com>
975 * ModifiableType.cs: Allow the conversion list to be got/set.
976 * ExternTypeRef.cs: Add a Clone method. Remove table modification.
978 2003-12-10 Jackson Harper <jackson@ximian.com>
980 * ExternTable.cs: Add methods to update a types name.
981 * ExternTypeRef.cs: When a types name is modified update it in the
984 2003-12-08 Jackson Harper <jackson@ximian.com>
986 * ModifiableType.cs: Put modifier and class in the list in the
989 2003-11-18 Jackson Harper <jackson@ximian.com>
991 * MethodDef.cs: Add support for .zeroinit. This is just another
992 way of initializing locals.
994 2003-11-17 Jackson Harper <jackson@ximian.com>
996 * LdstrInstr.cs: Allow strings to be created as bytearrays.
998 2003-10-28 Jackson Harper <jackson@ximian.com>
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.
1004 2003-10-28 Jackson Harper <jackson@ximian.com>
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
1011 2003-10-18 Jackson Harper <jackson@ximian.com>
1013 * ExternTable.cs: Separate class and value types into diff tables.
1015 2003-10-18 Jackson Harper <jackson@ximian.com>
1017 * InstrTable.cs: Use short branch instructions instead of aliasing them
1018 to the long branch instructions.
1020 2003-10-13 Jackson Harper <jackson@ximian.com>
1022 * MethodDef.cs: Check for null param lists in vararg
1023 methods. Fixes bug #49614.
1025 2003-10-11 Jackson Harper <jackson@ximian.com>
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.
1032 2003-10-08 Jackson Harper <jackson@ximian.com>
1034 * PeapiTypeRef.cs: Remove old hackery for adding methods to
1035 arrays, use typespecs now.
1037 2003-10-08 Jackson Harper <jackson@ximian.com>
1039 * InstrTable.cs: Add unbox.any instruction.
1040 * MethodDef.cs: Allow generic parameters to be added to methods.
1042 2003-10-06 Jackson Harper <jackson@latitudegeo.com>
1044 * MethodInfo.cs: Use report to display no label error message.
1046 2003-10-01 Jackson Harper <jackson@latitudegeo.com>
1048 * LabelInfo.cs: Fix tabbing, add ToString so labels are printed
1049 properly in error messages.
1051 2003-09-27 Jackson Harper <jackson@latitudegeo.com>
1053 * MethodDef.cs: Allow PInvoke info to be added.
1055 2003-09-21 Jackson Harper <jackson@latitudegeo.com>
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
1067 * TypeRef.cs: Error message for lookups.
1069 2003-09-20 Jackson Harper <jackson@latitudegeo.com>
1071 * TypeDef.cs: Rework so multiple constraints can be added to a
1074 2003-09-16 Jackson Harper <jackson@latitudegeo.com>
1076 * InstrTable.cs: endfault instruction (which is just endfinally
1079 2003-09-15 Jackson Harper <jackson@latitudegeo.com>
1081 * FinallyBlock.cs: The sad thing is how long it took me to realize
1082 what was going on here...
1084 2003-09-13 Jackson Harper <jackson@latitudegeo.com>
1086 * MethodInstr.cs: callvirt operation is implicitly instance.
1088 2003-09-12 Jackson Harper <jackson@latitudegeo.com>
1090 * TypeRef.cs: Remove unused enum, this has been moved to the
1091 ModifiableType base class.
1093 2003-09-08 Jackson Harper <jackson@latitudegeo.com>
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.
1100 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
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.
1107 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
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.
1117 2003-08-10 Jackson Harper <jackson@latitudegeo.com>
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
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.
1133 2003-08-05 Nick Drochak <ndrochak@gol.com>
1135 * IClassRef.cs: Fix build on .NET
1137 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
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
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
1149 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
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.
1155 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
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.
1164 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
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.
1171 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
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
1178 * GlobalMethodRef.cs: Expose call conv
1179 * TypeSpecMethodRef.cs: Expose call conv
1180 * MethodInstr.cs: For newobj operations set the call conv to instance
1182 2003-07-31 Jackson Harper <jackson@latitudegeo.com>
1184 * MethodDef.cs: Allow 0 offsets for labels, and make sure to only
1185 use offsets when we are supposed to.
1187 2003-07-30 Jackson Harper <jackson@latitudegeo.com>
1189 * BranchInstr.cs: Allow explicit offsets for labels
1191 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
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.
1202 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
1204 * IInstr.cs: Instructions now get their parent method when being
1206 * *Instr.cs: Adjust emit method to accept a methoddef
1208 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1210 * CodeGen.cs: Set the assembly name when creating the PEFile.
1212 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
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
1218 * ExternTable.cs: Do not reference the assemblies untill after the
1219 PEFile untill the Resolve phase.
1221 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
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
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.
1244 2003-07-25 Jackson Harper <jackson@latitudegeo.com>
1246 * MethodDef.cs: If methods do not have the static attribute give
1247 them the instance calling convention.
1249 2003-07-21 Jackson Harper <jackson@latitudegeo.com>
1251 * MethodDef.cs: Do not decremint param count for vararg methods,
1252 the ellipsis is needed later
1254 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
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
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
1270 * TypeRef.cs: Set UseTypeSpec to true if a type is modified.
1272 2003-07-17 Jackson Harper <jackson@latitudegeo.com>
1274 * GenericTypeRef.cs: New File - A reference to a generic type
1276 * InstrTable.cs: Add the stelem and ldelem opcodes.
1278 2003-07-15 Jackson Harper <jackson@latitudegeo.com>
1280 * TypeDef.cs: Allow adding and emitting generic type constraints.
1282 2003-07-14 Jackson Harper <jackson@latitudegeo.com>
1284 * TypeDef.cs: Emit generic parameters.
1286 2003-06-15 Jackson Harper <jackson@latitudegeo.com>
1288 * CodeGen.cs: Fix buglet in cache name creating (I will claim this
1291 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1293 * CodeGen.cs: When creating nested types cache their names using
1294 the parent/type method but emit their short name.
1296 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1298 * CodeGen.cs: Add methods for setting corflags, subsystem, and corflags.
1300 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1302 * ITypeRef.cs, PeapiTypeRef.cs, TypeRef.cs: Quick hack for custom
1305 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1307 * EventDef.cs: Only add one method for addon, fire, other, and
1310 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1312 * TypeDef.cs: Add properties to types.
1313 * PropertyDef.cs: New file - Implementation of a type property feature
1315 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1317 * TypeDef.cs: Fix silly null reference bug.
1319 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1321 * EventDef.cs: New file - An event definition.
1322 * FeatureAttr.cs: New file - Attributes for features (events and
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.
1330 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
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
1339 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
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.
1353 2003-05-25 Jackson Harper <jackson@latitudegeo.com>
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.
1365 2003-05-24 Jackson Harper <jackson@latitudegeo.com>
1367 * CatchBlock.cs: Remove typo causing to labels to be the same as
1369 * FaultBlock.cs: Remove typo causing to labels to be the same as
1371 * FilterBlock.cs: Remove typo causing to labels to be the same as
1373 * MethodDef.cs: Allow for multiple labels to point to the same
1379 2003-05-23 Jackson Harper <jackson@latitudegeo.com>
1381 * CatchBlock.cs: New file - Initial implementation of a catch
1383 * FaultBlock.cs: New file - Initial implementation of a fault
1385 * FilterBlock.cs: New file - Initial implementation of a filter
1387 * FinallyBlock.cs: New file - Initial implementation of a finally
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.
1397 2003-05-22 Jackson Harper <jackson@latitudegeo.com>
1399 * InstrTable.cs: Add unsigned conversion instructions.
1401 2003-05-21 Jackson Harper <jackson@latitudegeo.com>
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.
1408 2003-05-18 Jackson Harper <jackson@latitudegeo.com>
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
1426 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
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
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.
1440 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
1442 * TypeDef.cs: Add size and packing information
1444 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1446 * IFieldRef.cs: New file - interface field references must implement
1447 * ExternFieldRef.cs: New file - Reference to a field in another
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
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
1460 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
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.
1466 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1468 * MethodDef.cs: Allways set max stack
1470 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1472 * ExternTable.cs: Alias corlib to mscorlib since these seem to get
1475 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1477 * IMethodRef.cs: New file - Interface that method references must
1479 * ExternMethodRef.cs: New file - Reference to a method in another
1481 * Local.cs: New file - A Local variable
1482 * MethodInstr.cs: New file - an instruction that takes a method
1484 * IClassRef.cs: Add method to get a method reference from a class
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.
1496 2003-05-07 Jackson Harper <jackson@latitudegeo.com>
1498 * TypeInstr.cs: New file - implementation of instructions that
1499 take a single type instruction.
1501 2003-05-06 Jackson Harper <jackson@latitudegeo.com>
1503 * SwitchInstr.cs: New file - implementation of switch instructions
1505 2003-05-05 Jackson Harper <jackson@lattidegeo.com>
1507 * MethodDef.cs: Add ability to add and emit labels
1508 * BranchInstr.cs: New file - Branch instructions
1510 2003-05-04 Jackson Harper <jackson@latitudegeo.com>
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.
1517 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
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.
1524 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1526 * TypeManager.cs: Check if type is defined before defining it.
1528 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
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
1534 2003-04-30 Jackson Harper <jackson@latitudegeo.com>
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
1541 * LdstrInstr.cs: New file - ldstr instruction (the only
1542 instruction that takes a string parameter)
1544 2003-04-28 Jackson Harper <jackson@latitudegeo.com>
1546 * InstrTable.cs: Much simpler system. All tokens go into one
1547 hashtable now. There is no reason to have them seperated out.
1549 2003-04-20 Jackson Harper <jackson@latitudegeo.com>
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
1556 2003-04-18 Jackson Harper <jackson@latitudegeo.com>
1558 * FieldDef.cs: Change peapi fielddef name.
1559 * MethodDef.cs: Change peapi methoddef name.
1561 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
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
1568 * CodeGen.cs: Add methods to add method definitions
1570 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1572 * ExternTypeRef.cs: external types are classrefs
1574 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1576 * PeapiTypeRef.cs: New file - base wrapper for type refs that are
1578 * PrimitiveTypeRef.cs: New file - A primitive type (char, int, string)
1580 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1582 * TypeRef.cs: Rewrite - Typerefs are now resolved after parsing.
1583 * TypeManager.cs: Rewrite - Just a simple table for looking up
1585 * ExternTable.cs: Create ClassRef's instead of Classes
1586 * Location.cs: Make compile
1587 * CodeGen.cs: Use new tree system
1589 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
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
1599 * TypeDef.cs: New file - Represents the a class definition, and
1600 will hold all of the classes members.
1602 2003-04-07 Jackson Harper <jackson@latitudegeo.com>
1604 * TypeRef.cs: Return FieldDef when adding a field def to a class
1606 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1608 * TypeRef.cs: Add flag for making types pinned
1610 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1612 * ClassTable.cs: Do not append a . to names that are not in a
1614 * CodeGen.cs: Handle nested classes
1616 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1618 * ExternTable.cs: Remove some unsed fields.
1620 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
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.
1627 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1629 * InstrTable.cs: Add Calli, detabify
1631 2003-03-29 Jackson Harper <jackson@latitudegeo.com>
1633 * InstrTable.cs: Add branch ops switch, and lc.r*, also fix some
1634 typos for other ops.
1636 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1638 * ClassTable.cs: Set defined flag and type attributes for referenced
1639 classes when they are defined.
1641 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1643 * MethodTable.cs: Add method to Check if all methods have been defined, set referenced methods properties
1645 * FieldTable.cs: Add method to check if all fields have been defined, set referenced fields properties
1647 * ClassTable.cs: Make sure all methods and fields are defined.
1649 2003-03-16 Jackson Harper <jackson@latitudegeo.com>
1651 * MethodTable.cs: Fire events when methods are defined and referenced
1653 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1655 * ClassTable.cs: Classes now store field tables
1656 * CodeGen.cs: Add methods to add fields and get field references
1658 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1660 * FieldTable.cs: New file, holds a classes fields
1662 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1664 * InstrTable.cs: Add FieldOp instructions
1666 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1668 * InstrTable.cs: Add ldstr instruction
1670 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
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)
1676 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1678 * InstrTable.cs: Add TypeOps (instructions that take a type param)
1680 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1682 * InstrTable.cs: Add IntOps (instructions that take an integer param)
1684 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1686 * InstrTable.cs: Fix instructions that have dots in their name
1688 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
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)
1694 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1696 * CodeGen.cs: Set current method when a new method is added.
1698 2003-03-12 Jackson Harper <jackson@latitudegeo.com>
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.
1705 2003-03-11 Jackson Harper <jackson@latitudegeo.com>
1707 * TypeRef.cs: New file, used for pairing types and their names.
1709 2003-03-09 Jackson Harper <jackson@latitudegeo.com>
1711 * ExternTable.cs: Do not verify the existence of external types
1713 2003-03-08: Jackson Harper <jackson@latitudegeo.com>
1715 * CodeGen.cs: Add ExternTable property
1716 * ExternTable.cs: New file, this will is used for pulling
1717 types and methods from external assemblies.
1719 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1721 * ClassTable.cs, CodeGen.cs: Add methods to allow types to inherit from another type.
1723 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1725 * ClassTable.cs: Add method to check for undefined types
1727 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1729 * CodeGen.cs: Use class table for adding type definitions
1730 * ClassTable.cs: Return ClassDef when defining types
1732 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1734 * ClassTable.cs: Add method for adding class definitions to the
1737 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
1739 * CodeGen.cs: Reconfigure to work with new PEAPI emission system
1741 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
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
1747 2003-02-10 Jackson Harper <jackson@latitudegeo.com>
1749 * Method.cs: Add method to set parameters,
1750 set parameters when defining type
1751 * Class.cs: Fix very silly bug in GetMethod method
1754 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
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,
1760 * Instructions.cs: Take Class instead of CodeGen when emitting,
1761 get member methods from Class.
1762 * TypeManager.cs: Add set indexer
1764 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
1766 * Instructions.cs: Use TypeManager to lookup types
1768 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1770 * TypeManager.cs: Fix error parsing type names
1771 * Method.cs: Display the name of types that can't be found
1773 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
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
1782 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1784 * Method.cs: Add functionality to define local variables
1785 * Instructions.cs: Add newobj instruction, cleanup call instruction
1787 2003-02-03 Jackson Harper <jackson@latitudegeo.com>
1789 * AssemblyNameStore.cs: Added file
1791 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
1793 * Instructions.cs: Resolve parameters types in a more proper manner.
1795 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
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