1 2008-06-07 Martin Baulig <martin@ximian.com>
3 * DebuggingInfo.cs: Reflect latest symbol writer changes.
5 2008-06-02 Ankit Jain <jankit@novell.com>
8 * CatchBlock.cs: Allow exception to be of any type (BaseTypeRef) and not
9 just a class (BaseClassRef).
11 2008-06-01 Ankit Jain <jankit@novell.com>
14 * MethodDef.cs (CreateSignature): Add new @include_optional and
15 @call_conv param. Make private.
16 (CreateVarargSignature): Likewise.
17 (CreateSignature): Add new static method for vararg and other methods.
18 (GetVarargSig): Add new @full_signature param to uniquely identify
21 * CodeGen.cs (ResolveVarargMethod): This now takes two signatures - one
22 with only the required params and the other with the optional ones, to
23 correctly resolve global vararg methods.
28 * PrimitiveTypeRef.cs:
29 * TypeDef.cs: Track api changes.
31 2008-04-10 Erven Rohou <erven.rohou@st.com>
33 * DebuggingInfo.cs: use new DefineMethod API. Remove useless
35 * MethodDef.cs: remove useless variable.
37 2008-04-07 Rodrigo Kumpera <rkumpera@novell.com>
39 * MethodDef.cs: Mono.CompilerServices API has changed in an incompatible way
40 since Erven's patch. Fixed it to follow the new one.
42 2008-04-07 Erven Rohou <erven.rohou@st.com>
44 * DebugInfo.cs, MethodDef.cs: Add support for emitting variable names
47 2008-02-07 Gert Driesen <drieseng@users.sourceforge.net>
49 * CodeGen.cs: Use original filename as base name for debug file.
50 Symbol writer will already add .mdb to it. Fixes bug #359516.
52 2008-01-03 Rodrigo Kumpera <rkumpera@novell.com>
54 * EmiteByteInstr.cs: Fixed typo in class name.
56 2007-12-31 Rodrigo Kumpera <rkumpera@novell.com>
58 * EmiteByteInstr.cs: added. Implements support
59 for the .emitbyte directive.
61 2007-12-31 Rodrigo Kumpera <rkumpera@novell.com>
63 * SwitchInstr.cs (Emit): Switch from using strings
66 2007-10-09 Rodrigo Kumpera <rkumpera@novell.com>
68 * MethodPointerTypeRef.cs (.ctor): generate
69 full name of the method pointer. This is required
70 to alow overloading with method pointers.
72 2007-07-18 Jb Evain <jbevain@novell.com>
74 * InstrTable.cs: add brzero alias.
76 2007-01-10 Ankit Jain <jankit@novell.com>
78 * BaseClassRef.cs (Clone): Move to ..
79 * BaseTypeRef.cs (Clone): .. here.
80 * Sentinel.cs: Implement abstract Clone method.
81 * MethodPointerTypeRef.cs: Likewise.
82 * PrimitiveTypeRef.cs: Likewise.
83 * ModifiableType (MakeCustomModified): Add to SigMod.
87 * ExternTypeRef.cs: Update.
89 Tue Dec 12 19:23:34 CET 2006 Paolo Molaro <lupus@ximian.com>
91 * PropertyDef.cs: support more than one .other method in properties.
93 Tue Dec 12 19:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
95 * EventDef.cs: support more than one .other method in events.
97 2006-11-09 Ankit Jain <jankit@novell.com>
99 * CodeGen.cs (CodeGen.BeginAssemblyRef): Add param for attributes.
100 (SetAssemblyName): Rename to ..
101 (SetThisAssembly): .. this. Add param for attributes.
102 * ExternTable (ExternAssembly.ctor): Likewise.
103 (ExternAssembly.Resolve): Add attributes.
104 (ExternTable.AddAssembly): Add param for attributes.
105 (ExternTable): Update to changes.
106 * Assembly.cs (Assembly.SetAssemblyAttr): New.
107 (Assembly.Resolve): Add the flags.
109 2006-07-20 Ankit Jain <jankit@novell.com>
111 * TypeDef.cs (.ctor): If the type is an interface, then make it
113 (TypeDef.AddMethodDef): Set an interface method abstract and virtual if
114 it lacks either of the attributes.
115 * MethodDef.cs (MethodDef.FullName): New.
116 (MethodDef.WriteCode): Make global methods, non-abstract and static.
117 Interface cannot have a non-static method with a body.
118 Update error messages to use new FullName property.
120 2006-06-07 Ankit Jain <jankit@novell.com>
122 * TypeDef.cs (TypeDef.IsAbstract): New.
123 * MethodDef.cs (MethodDef.WriteCode): Parent type must also be abstract
124 for an abstract method. Abstract methods cannot have a body.
125 Report errors for body with different implementation attributes like
126 native/runtime/unmanaged etc.
127 If the method has no body, then emit a 'ret'.
129 2006-06-07 Ankit Jain <jankit@novell.com>
131 * TypeDef.cs (TypeDef.AddFieldDef):
132 (TypeDef.Define): Use Report.Warning instead of Console.Error.WriteLine
133 (TypeDef.AddMethodDef): Likewise. Also, use methoddef.Location .
134 * ExternTable.cs (ExternTable.GetTypeRef): Likewise.
135 * MethodDef.cs (MethodDef.StartLocation): New.
137 2006-06-01 Ankit Jain <jankit@novell.com>
139 * MethodDef.cs (GetNamedParamPos): Return -1 if param_list is null.
141 2006-06-01 Ankit Jain <jankit@novell.com>
143 * MethodDef.cs (MethodDef): Use a ParamDef for return type, instead of a
145 (MethodDef.ctor): Update.
146 (MethodDef.AddParamDefaultValue): Remove.
147 (MethodDef.GetParam): Likewise.
148 (MethodDef.Resolve): Update to use ret_param instead of ret_type.
150 2006-05-31 Ankit Jain <jankit@novell.com>
152 * TypeDef.cs (TypeDef.IsValueType): New.
153 (TypeDef.IsEnumType): New.
154 (TypeDef.Define): Don't seal System.ValueType or System.Enum .
156 2006-05-26 Ankit Jain <jankit@novell.com>
158 * Assembly.cs: New. Represents a '.assembly {}' (assembly manifest).
159 * CodeGen.cs: Update to use the Assembly class.
161 2006-05-26 Ankit Jain <jankit@novell.com>
163 * PermissionSet.cs: New.
164 * Permission.cs: New.
165 * PermissionMember.cs: New. Classes for 2.0 metadata format of
166 declarative security.
168 * DeclSecurity.cs (DeclSecurity.AddPermissionSet): New. Overload for new
170 (DeclSecurity.AddTo): Add new style PermissionSets also.
171 * CodeGen.cs (CodeGen.AddPermisson): Handle new PermissionSets also.
172 * ExternTable.cs (ExternAssembly.AssemblyName): New.
174 2006-05-23 Ankit Jain <jankit@novell.com>
176 * DeclSecurity.cs (IDeclSecurityTarget): Remove AddPermission &
177 AddPermissionSet methods. Add 'DeclSecurity' property.
178 * TypeDef.cs: Update implementation of IDeclSecurityTarget interface.
179 * MethodDef.cs: Likewise.
180 * ExternTable.cs: Likewise.
181 * CodeGen.cs (CodeGen.AddPermission): Use IDeclSecurityTarget.DeclSecurity .
183 2006-05-11 Ankit Jain <jankit@novell.com>
185 * CodeGen.cs (CodeGen.AddDataDef): Use Report.Error for consistent error
187 * MethodDef.cs (MethodDef.AddLabel): Likewise.
189 2006-05-11 Ankit Jain <jankit@novell.com>
191 * MethodDef.cs (MethodDef.AddLabel): Fix exception message.
193 2006-05-09 Ankit Jain <jankit@novell.com>
195 * MethodDef.cs (MethodDef.AddLabel): Throw exception for duplicate
198 2006-05-09 Ankit Jain <jankit@novell.com>
200 * CodeGen.cs (CodeGen.data_list): Change to ..
201 (CodeGen.data_table): .. a hashtable.
202 (CodeGen.AddDataDef): Update to throw exception for duplicate .data
204 (CodeGen.GetDataConst): Update to use data_table.
206 2006-04-24 Ankit Jain <jankit@novell.com>
208 * CodeGen.cs (CodeGen.ctor): Remove 'is_assembly' param.
209 (CodeGen.Write): Emit assembly manifest only if the source
212 2006-02-22 Ankit Jain <jankit@novell.com>
214 * ExternTable.cs (ExternTable.GetTypeRef): Emit a warning if mscorlib is
215 referenced without a corresponding '.assembly extern' directive.
216 * TypeDef.cs (TypeDef.Define): Valuetype class should be sealed. Emit
217 warning if its not, and make it so.
219 2006-02-20 Ankit Jain <jankit@novell.com>
221 * *.cs: Update all .cs files to use Report.Error instead of directly
222 throwing an exception.
223 * CodeGen.cs (CodeGen.ctor): Remove 'report' param, and the related
226 2006-02-19 Ankit Jain <jankit@novell.com>
228 * ExternTable.cs (ExternTable.GetModuleTypeRef): 'module_table' can be
231 2006-02-19 Ankit Jain <jankit@novell.com>
233 * CodeGen.cs (CodeGen.Write): Use only filename as the name of the
235 * TypeDef.cs (TypeDef.ResolveAsMethodRef): New.
236 (TypeDef.ResolveMethod): Change signature to take ret_type, params
237 etc instead of a signature string. Also, if the method does not exist,
238 then use ResolveAsMethodRef to return a MethodRef for it.
239 (TypeDef.ResolveVarargMethod): Likewise.
240 (TypeDef.ResolveField): Likewise.
241 * MethodRef.cs (MethodRef.Resolve): Update use of TypeDef.Resolve*
243 * FieldRef.cs (FieldRef.Resolve): Update use of TypeDef.ResolveField.
244 * PropertyDef.cs (PropertyDef.AsMethodDef): Throws an exception is the
245 method is not a MethodDef.
246 (PropertyDef.Define): Use AsMethodDef to ensure that get/set/other are
248 * EventDef.cs (EventDef.AsMethodDef): Same as PropertyDef.
249 (EventDef.Define): Likewise.
251 2006-02-19 Ankit Jain <jankit@novell.com>
253 * CodeGen.cs (CodeGen.ThisModule): New.
254 (CodeGen.Write): Set module name if not set by '.module' directive.
255 * Module.cs: Inherit from ExternRef.
257 2006-02-10 Ankit Jain <jankit@novell.com>
259 * CodeGen.cs (CodeGen.ResolveMethod): Throw exception if global method
261 (CodeGen.ResolveField): Likewise for global field.
263 2006-02-08 Ankit Jain <jankit@novell.com>
265 * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Simplify and fix
268 2006-01-31 Ankit Jain <jankit@novell.com>
270 * TypeDef.cs (TypeDef.AddMethodDef): Throw exception with proper message
271 if adding a duplicate method.
273 2006-01-31 Ankit Jain <jankit@novell.com>
275 * InstrTable.cs (inst_table): Add 'readonly.' .
277 2006-01-31 Ankit Jain <jankit@novell.com>
279 * ExternTable.cs (ExternTable.GetTypeRef): If type is from an
280 undeclared assembly, then add reference to the assembly.
282 2006-01-28 Ankit Jain <jankit@novell.com>
286 * MethodPointerTypeRef.cs:
287 * ExternMethodRef.cs: Remove unused variables to fix warnings.
289 2006-01-28 Ankit Jain <jankit@novell.com>
291 * TypeDef.cs (GenericInfo):
292 * MethodDef.cs (GenericInfo): Remove (unused).
294 2006-01-23 Ankit Jain <jankit@novell.com>
296 * TypeDef.cs (TypeDef.AddFieldDef): Throw exception if duplicate field being
299 2006-01-19 Ankit Jain <jankit@novell.com>
301 * Module.cs (Module): New. Class for representing this module.
302 * CodeGen.cs (CodeGen): Update to use the new Module class.
303 (CodeGen.Write): Resolve this_module.
305 2006-01-19 Ankit Jain <jankit@novell.com>
307 * GenericParameters.cs (GenericParameter): Implement ICustomAttrTarget.
308 (GenericParameter.Resolve): New overload, reduce code duplication.
309 (GenericParameters.GetGenericParam): New. Returns a GenericParameter.
310 (GenericParameters.GetGenericParamNum): Update to use new GetGenericParam.
312 * TypeDef.cs (TypeDef.GetGenericParam): New. Two overloads for id and index.
313 * MethodDef.cs (MethodDef.GetGenericParam): Likewise.
315 2006-01-19 Ankit Jain <jankit@novell.com>
317 * MethodRef.cs (MethodRef.Resolve): Resolve owner.
319 2006-01-16 Ankit Jain <jankit@novell.com>
321 * TypeDef.cs (TypeDef.IComparable): Implement IComparable interface.
322 * TypeManager.cs (TypeManager.DefineAll): Sort type_table before Define()'ing.
324 2006-01-16 Ankit Jain <jankit@novell.com>
326 * TypeRef.cs (TypeRef.CreateMethodRef): Return a TypeSpecMethodRef if
327 this is a modified (eg. []) type.
329 2006-01-16 Ankit Jain <jankit@novell.com>
331 * BaseTypeRef.cs (BaseTypeRef.Resolve): Make this abstract.
332 (BaseTypeRef.CreateMethodRef):
333 (BaseTypeRef.CreateFieldRef): Make protected and abstract.
334 * BaseClassRef.cs (BaseClassRef.Clone): Make this abstract.
335 Update all derived classes.
336 * PrimitiveTypeRef.cs (PrimitiveTypeRef.CreateMethodRef):
337 * GenericTypeInst.cs (GenericTypeInst.CreateMethodRef): Implement, but throw
338 exception as this method is not used.
340 2006-01-14 Ankit Jain <jankit@novell.com>
342 * GenericParamRef.cs (GenericParamRef.Resolve): Apply modifications to the
345 2006-01-14 Ankit Jain <jankit@novell.com>
347 * GenericParamRef.cs (GenericParamRef.Resolve): Set PeapiType of the instance
350 2006-01-13 Ankit Jain <jankit@novell.com>
352 * GenericParamRef.cs (GenericParamRef.Resolve): Ensure no duplicate
353 GenParams get added to the TypeSpec table.
354 * GenericMethodSig.cs (GenericMethodSig.GetInstance): Cache sigs in a
356 * BaseMethodRef.cs (BaseMethodRef.GetGenericMethodRef): Cache GenericMethodRefs.
358 2006-01-13 Ankit Jain <jankit@novell.com>
360 Create BaseMethodRef from IMethodRef. Replace usage of IMethodRef
361 with BaseMethodRef in *all* files.
362 Remove implementations of IMethodRef's methods from derived classes.
363 * BaseMethodRef.cs: New.
365 2006-01-13 Ankit Jain <jankit@novell.com>
367 Move caching of method-refs and field-refs to BaseTypeRef, and use
368 CreateMethodRef & CreateFieldRef for creating the actual object.
369 Override these in derived classes to return the right objects.
371 * BaseTypeRef.cs (BaseTypeRef.CreateMethodRef): New.
372 (BaseTypeRef.CreateFieldRef): New.
373 (BaseTypeRef.GetMethodRef): Implement caching.
374 (BaseTypeRef.GetFieldRef): Likewise.
376 GenericTypeInst and PrimitiveTypeRef are not cached, so static hashtables
377 are used here for caching their MethodRefs n FieldRefs.
379 * GenericTypeInst.cs (GenericTypeInst.GetMethodRef): Override and use
380 static hashtable to do caching.
381 (GenericTypeInst.GetFieldRef): Likewise.
382 * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Likewise.
383 (PrimitiveTypeRef.GetFieldRef): Likewise.
385 * CodeGen.cs (CodeGen.GetGlobalMethodRef): New. Cache global method refs.
386 (CodeGen.GetGlobalFieldRef): New. Cache global field refs.
388 2006-01-13 Ankit Jain <jankit@novell.com>
390 Create BaseClassRef, BaseGenericTypeRef from IClassRef & IGenTypeRef.
391 Replace usage of interfaces ITypeRef, IClassRef & IGenTypeRef with their
392 corresponding Base* types.
393 * BaseTypeRef.cs: New. Combine ITypeRef and ModifiableType into this.
394 * BaseClassRef.cs: New.
395 * BaseGenericTypeRef.cs: New.
396 * TypeSpecMethodRef.cs (TypeSpecMethodRef.ctor): Slight change in order
399 2006-01-12 Ankit Jain <jankit@novell.com>
401 * MethodDef.cs (MethodDef.CreateSignature): Use "`n" only for generic
404 2006-01-11 Ankit Jain <jankit@novell.com>
406 * InstrTable.cs (inst_table): Uncomment stelem and ldelem .
408 2006-01-11 Ankit Jain <jankit@novell.com>
410 Support new syntax of specifying namespace, ie., as
411 part of the type name. (gen-nested2.il)
412 * TypeDef.cs (TypeDef.ctor): Add outer as a param.
413 Don't split name on '.' for inner classes.
414 * CodeGen.cs (CodeGen.BeginTypeDef): Update to use only 'name'
415 for inner classes and FullName for outermost class.
417 2006-01-10 Ankit Jain <jankit@novell.com>
419 * TypeDef.cs (TypeDef.GetGenericParamNum): Return -1 if type has no
421 * MethodDef.cs (MethodDef.GetGenericParamNum): Likewise.
423 2006-01-10 Ankit Jain <jankit@novell.com>
425 * MethodDef.cs (MethodDef.WriteCode): Resolve generic params for abstract
428 2006-01-10 Ankit Jain <jankit@novell.com>
430 * TypeDef.cs (TypeDef.TypeParameters): New.
431 (TypeDef.ResolveGenParams): New. Resolve any gen param refs in
432 constraints, base class ref or implemented interfaces.
433 * MethodDef.cs (MethodDef.ResolveGenParams): Update to use new Resolve
434 overloads and ResolveConstraints for GenericParameters.
436 * GenericTypeInst.cs (GenericTypeInst.Resolve): Resolve generic args.
437 * GenericParamRef.cs (GenericParamRef.Resolve): Implement.
438 * GenericParameters.cs (GenericParameter.ResolveConstraints): New.
439 (GenericParameters.ResolveConstraints): New.
440 * GenericArguments.cs (GenericArguments.Resolve): New.
442 * TypeRef.cs (TypeRef.GetGenericTypeInst): Don't cache.
443 * ExternTypeRef.cs (ExternTypeRef.GetGenericTypeInst): Likewise.
445 2006-01-09 Ankit Jain <jankit@novell.com>
447 * GenericArguments.cs (GenericArguments.is_resolved): New.
448 (GenericArguments.p_type_list): New. Resolve only once and return this.
450 2006-01-09 Ankit Jain <jankit@novell.com>
452 * TypeDef.cs (TypeDef.Define): Set is_defined to true as soon as the
453 Peapi type gets created.
455 2006-01-09 Ankit Jain <jankit@novell.com>
457 * GenericTypeRef.cs: Rename to ..
458 * GenericParamRef.cs: .. this.
459 (IGenericTypeRef): New.
460 (GenericParamRef): Implement IGenericTypeRef.
461 * GenericTypeInst.cs (GenericTypeInst): Implement IGenericTypeRef instead
463 (GenericTypeInst.ResolveOnly): Rename to ResolveNoTypeSpec to implement
464 IGenericTypeRef.ResolveNoTypeSpec .
465 * MethodDef.cs (MethodDef.ResolveGenParams): Update to use GenericParamRef.
466 * Local.cs (Local.GetPeapiLocal): Use IGenericTypeRef.
468 2006-01-08 Ankit Jain <jankit@novell.com>
470 * InstrTable.cs (inst_table): Add stelem.any, ldelem.any and
471 constrained. instructions.
473 2006-01-07 Ankit Jain <jankit@novell.com>
475 * GenericParameters.cs (GenericParameter): New.
476 (GenericParameters): Collection of Generic parameters.
479 * MethodDef.cs: Update to use the new GenericParameters class.
481 2006-01-06 Ankit Jain <jankit@novell.com>
483 GenericTypeInst.Resolve should do the expected thing ie., resolve and add
484 the Generic Inst to the typespec table. Use ResolveOnly to Resolve w/o
486 * GenericTypeInst.cs (GenericTypeInst.Resolve): Rename to ..
487 (GenericTypeInst.ResolveOnly): .. this.
488 (GenericTypeInst.ResolveAsClass): Rename to Resolve.
490 * TypeDef.cs (TypeDef.Define): Revert the ResolveAsClass calls added here.
491 * Local.cs (Local.GetPeapiLocal): Use new GenericTypeInst.ResolveOnly if type is
494 2006-01-06 Ankit Jain <jankit@novell.com>
496 * IClassRef.cs (IClassRef.Clone): New.
497 (IClassRef.GetGenericTypeInst): Get the Generic Instance of the IClassRef.
498 (IClassRef.ResolveInstance): Resolves the generic instance and returns the
502 * ExternTypeRef.cs: Implement new methods of IClassRef.
503 Classes implementing IClassRef cache their generic instances (GenericTypeInst)
504 and their corresponding resolved PEAPI types.
506 * CodeGen.cs (CodeGen.GetTypeRef): Gets a TypeRef given a type name and caches them.
508 GenericTypeInst is now used for any Generic Type Instance, including any
509 extern types. ExternTypeRefInst is not used now.
510 * GenericTypeInst.cs (GenericTypeInst): Implement IClassRef instead of ITypeRef.
511 (GenericTypeInst.ResolveAsClass): Adds the instance to the TypeSpec table after Resolve()'ing it.
512 Clone () returns a cloned instance which shares its class_ref and generic arguments.
514 * TypeDef.cs (TypeDef.Define): Use ResolveAsClass for base class and interfaces
515 being implemented if they are GenericTypeInsts.
517 2005-12-24 Jb Evain <jbevain@gmail.com>
519 * FeatureAttr.cs: tag as Flags, add an Instance value.
520 * PropertyDef.cs (PropertyDef.Resolve): Tag the property as instance or class.
522 2005-12-22 Ankit Jain <jankit@novell.com>
524 * MethodDef.cs (MethodDef.ctor): Add type_def param. Use this for all uses of
525 the owner type_def. ResolveGenParams () before creating signature.
526 (MethodDef.ResolveGenParams):
527 (MethodDef.ResolveGenParam): Remove type_def param, instead use type_def field.
528 (MethodDef.Define): Remove overload with typedef param.
529 (MethodDef.CreateSignature): Put "`0" right after the name instead of at the end.
530 * TypeDef.cs (TypeDef.DefineContents): Update usage of MethodDef.Define .
532 2005-12-21 Ankit Jain <jankit@novell.com>
534 * GenericArguments.cs (GenericArguments): New.
535 * ExternTypeRefInst.cs (ExternTypeRefInst):
536 * GenericTypeInst.cs (GenericTypeInst):
537 * GenericMethodSig.cs (GenericMethodSig): Update to use new GenericArguments class.
539 2005-12-16 Ankit Jain <jankit@novell.com>
541 Use tuple of (field name, type_name) for fielddef hashtable in TypeDef.cs and
543 * FieldDef.cs (FieldDef.Type): New.
544 * TypeDef.cs (TypeDef.ResolveField): Add 'type_name' param.
545 * CodeGen.cs (CodeGen.ResolveField): Add 'type_name' param.
546 * FieldRef.cs (FieldRef.Resolve): Update usage of .ResolveField .
547 * GlobalFieldRef (GlobalFieldRef.Resolve): Likewise.
548 * ExternTable.cs (IScope.FullName): New. Returns full name including and enclosing class
549 or assembly/module name.
550 (ExternRef.FullName):
551 (ExternModule.FullName):
552 (ExternAssembly.FullName): Implement new IScope.FullName .
553 * ExternTypeRef.cs (ExternTypeRef.Clone): Clone SigMod also.
554 (ExternTypeRef.FullName): Update to return full name including enclosing type or assembly
556 (ExternTypeRef.Name): Update to return only full_name with modifiers (array/pointers etc).
557 (ExternTypeRef.GetReflectedType): Use Name instead of FullName as only type name is required here.
558 * GenericTypeRef.cs (GenericTypeRef.FullName): Return proper fullname of the form (!0 or !!0).
559 * GenericTypeInst.cs (GenericTypeInst.ctor): Change param 'full_name' to 'name'. 'full_name' is
560 constructed here using the type parameter list.
561 Update code to use name instead of full_name.
563 2005-12-15 Ankit Jain <jankit@novell.com>
565 * CodeGen.cs (CodeGen.SetAssemblyName): Multiple .assembly declarations with different
566 names are not allowed.
568 2005-12-14 Ankit Jain <jankit@novell.com>
570 * PeapiTypeRef.cs (PeapiTypeRef.MakeBoundArray): Handle the case when only
571 lower bound (no size info) is available.
573 2005-12-14 Ankit Jain <jankit@novell.com>
575 * TypeDef.cs (TypeDef.ctor): name_space can be null.
577 2005-12-13 Ankit Jain <jankit@novell.com>
579 * TypeDef.cs (TypeDef.ctor): Ensure that 'name' contains only the last part
580 of the full (namespace + name) dotted name.
582 2005-12-12 Ankit Jain <jankit@novell.com>
584 * TypeDef.cs (TypeDef.Define): Ensure nested visibility for a nested class.
585 (TypeDef.NestedFullName): New.
587 2005-12-09 Ankit Jain <jankit@novell.com>
589 * MethodDef.cs (MethodDef.GenParamCount): typar_list can be null.
591 2005-12-09 Ankit Jain <jankit@novell.com>
593 * ITypeRef.cs (ITypeRef.GetMethodRef): Add 'gen_param_count' param.
594 * Sentinel.cs (Sentinel.GetMethodRef): Update.
595 * GlobalMethodRef.cs (GlobalMethodRef.ctor): Add 'gen_param_count' param.
596 (GlobalMethodRef.Resolve): Update usage of MethodDef.CreateSignature .
597 * TypeDef.cs (TypeDef.GetGenericParamNum): New.
598 (TypeDef.DefineContents): Update usage of ITypeRef.GetMethodRef .
599 * ExternTypeRefInst.cs (ExternTypeRefInst.ctor): Add parameter for list of type
600 parameters (type_list).
601 (ExternTypeRefInst.Clone): Clone type_list also.
602 (ExternTypeRefInst.Resolve): Resolve the list of type parameters, and create
603 instance of PEAPI.GenericTypeInst instead of PEAPI.ClassRefInst .
604 (ExternTypeRefInst.GetMethodRef): Update.
605 * GenericTypeInst.cs (GenericTypeInst.GetMethodRef): Update signature. Update
606 usage of TypeSpecMethodRef.ctor .
607 * MethodRef.cs (MethodRef.ctor): Add 'gen_param_count' param.
608 (MethodRef.Resolve): Throw exception for non-existant owner. Update usage of
609 MethodDef.CreateSignature .
610 * ExternMethodRef.cs (ExternMethodRef.ctor): Add 'gen_param_count' param.
611 (ExternMethodRef.Resolve): Update usage of PEFile.AddMethodToTypeSpec and .AddMethod
612 * GenericMethodRef.cs (GenericMethodRef.PeapiMethod): Return PEAPI.Method obtained in
614 * GenericTypeRef.cs (GenericTypeRef.GetMethodRef): Update.
615 * MethodPointerTypeRef.cs (MethodPointerTypeRef.GetMethodRef): Likewise.
616 * TypeSpecMethodRef.cs (TypeSpecMethodRef.ctor): Add 'gen_param_count' param.
617 (TypeSpecMethodRef.Resolve): Update usage of PEFile.AddMethodToTypeSpec .
618 * MethodDef.cs (MethodDef.ctor): Add 'typars_list' param.
619 (MethodDef.AddGenericParam): Replace ..
620 (MethodDef.AddGenericParams): .. with this.
621 (MethodDef.GenParamCount): New.
622 (MethodDef.GetGenericParamNum): New. Returns index for a given method type parameter name.
623 (MethodDef.ResolveGenParams): Resolves type parameter names in the parameter
624 list to their corresponding indices.
625 (MethodDef.ResolveGenParam): Resolves a give type parameter to its corresponding
627 (MethodDef.CreateSignature): Add 'gen_param_count' param.
628 * TypeRef.cs (TypeRef.GetMethodRef): Update.
629 * ExternTypeRef.cs (ExternTypeRef.GetMethodRef): Likewise.
630 * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Likewise.
632 2005-12-05 Ankit Jain <jankit@novell.com>
634 * TypeDef.cs (TypeDef.GenericInfo.num): New.
635 (TypeDef.AddGenericParam): Set num for GenericInfo.
636 * MethodDef.cs (MethodDef.GenericInfo.num): New.
637 (MethodDef.AddGenericParam): Set num for GenericInfo.
638 * GenericTypeRef.cs (GenericTypeRef.ctor): Update to use PEAPI.GenParam
639 instead of PEAPI.MVar and PEAPI.GenericTypeSpec.
641 2005-11-28 Ankit Jain <jankit@novell.com>
643 * ExternTypeRef.cs (extern_table): Remove unused field.
644 (.ctor): Remove parameter for extern_table. Update usage accordingly.
645 * ExternTable.cs (IScope): Remove unused 'table' parameter.
646 (ExternRef): Change IScope interface implementation accordingly. Update
647 call to ExternTypeRef.ctor for the previous change.
649 2005-09-15 Ankit Jain <jankit@novell.com>
651 * DeclSecurity.cs (IDeclSecurityTarget.AddDeclSecurity): Remove.
652 (IDeclSecurityTarget.AddPermission),
653 (IDeclSecurityTarget.AddPermissionSet): New.
654 (DeclSecurity.IDeclSecurityTarget): Implement new interface methods.
655 (DeclSecurity.sec_action),
656 (DeclSecurity.data): Remove.
657 (DeclSecurity.permissionset_table): New.
658 (DeclSecurity.ctor): Replace parameterized constructor with a default one.
659 (DeclSecurity.AddTo): AddDeclSecurity for all Security Actions in the permissionset_table.
660 * TypeDef.cs (TypeDef.declsecurity_list): Remove.
661 (TypeDef.decl_sec): New.
662 (TypeDef.IDeclSecurityTarget): Implement new interface methods.
663 (TypeDef.DefineContents): Use new decl_sec instead of declsecurity_list.
664 * CodeGen.cs (CodeGen.assembly_declsec): Change type from ArrayList to DeclSecurity.
665 (CodeGen.EndAssemblyRef): Set current_customattrtarget and current_declsectarget to null.
666 (CodeGen.IDeclSecurityTarget): Implement new interface methods.
667 (CodeGen.Write): Add assembly_declsec to the assembly (using DeclSecurity.AddTo).
668 * ExternTable.cs (ExternAssembly.declsec_list): Remove.
669 (ExternAssembly.decl_sec): New.
670 (ExternAssembly.Resolve): Use new decl_sec instead of declsec_list.
671 (ExternAssembly.IDeclSecurityTarget): Implement new interface methods.
672 * MethodDef.cs (MethodDef.declsecurity_list): Remove.
673 (MethodDef.decl_sec): New.
674 (MethodDef.IDeclSecurityTarget): Implement new interface methods.
675 (MethodDef.WriteCode): Use new decl_sec instead of declsecurity_list.
676 * ExternTypeRef.cs (ExternTypeRef.GetReflectedType): New.
678 2005-09-08 Ankit Jain <jankit@novell.com>
680 * CodeGen.cs (CodeGen.stack_reserve): New.
681 (CodeGen.SetStackReserve): New.
682 (CodeGen.Write): SetStackReserve on the pefile.
684 2005-09-06 Ankit Jain <jankit@novell.com>
686 * ExternTable.cs (ExternRef.is_resolved): New.
687 (ExternModule.Resolve, ExternAssembly.Resolve,
688 ExternTable.Resolve): Return if is_resolved. Set to true at the end.
690 2005-08-29 Ankit Jain <jankit@novell.com>
692 * InstrTable.cs (inst_table): Comment out stelem and ldelem opcodes.
694 2005-08-26 Ankit Jain <jankit@novell.com>
696 * ExternTable.cs (IScope): New. Interface for ResolutionScope.
697 (ExternRef): Implement IScope.
698 (ExternRef.GetTypeRef): Handle references to nested classes.
699 (ExternRef.GetValueType): Remove. Logic combined with GetType.
700 (ExternRef.GetType): Add param 'is_valuetype' and handle accordingly.
701 * ExternTypeRef.cs (ExternTypeRef): Implement IScope.
702 (ExternTypeRef.extern_ref),
703 (ExternTypeRef.ctor),
704 (ExternTypeRef.ExternRef): Change extern_ref type from ExternRef to IScope.
705 (ExternTypeRef.nestedtypes_table),
706 (ExternTypeRef.nestedclass_table): New. Hashtables for nested classes.
707 (ExternTypeRef.Resolve): Resolve parent if it is ExternTypeRef type.
708 (ExternTypeRef.GetTypeRef): New.
709 (ExternTypeRef.GetExternTypeRef): New. Returns the resolve PEAPI type.
710 (ExternTypeRef.GetType): New.
712 2005-08-23 Ankit Jain <jankit@novell.com>
714 * ExternTable.cs (ExternTable.ctor): Remove. Move the initialization code
715 to the new method AddCorlib.
716 (ExternTable.AddCorlib): New.
717 (ExternTable.Resolve): Assembly_table can be null so check before using it.
718 (ExternTable.GetTypeRef): AddCorlib if mscorlib is being referenced but
719 assembly_table is still null.
720 * CodeGen.cs (CodeGen.SetAssemblyName): Call AddCorlib if name is not mscorlib.
721 (CodeGen.Write): Pass null for new outputDir param for PEFile ctor.
722 * (PrimitiveTypeRef.Name): New. Returns the full_name.
724 2005-08-18 Ankit Jain <jankit@novell.com>
726 * IMethodRef.cs (IMethodRef.Owner): New. Returns owner of the method.
727 * GlobalMethodRef.cs (GlobalMethodRef),
728 MethodRef.cs (MethodRef),
729 ExternMethodRef.cs (ExternMethodRef),
730 GenericMethodRef.cs (GenericMethodRef),
731 TypeSpecMethodRef.cs (TypeSpecMethodRef): Implement IMethodRef.Owner.
732 * CustomAttr.cs (CustomAttr.IsSuppressUnmanaged): New. Checks if the
733 it is a "System.Security.SuppressUnmanagedCodeSecurityAttribute" and
734 is from "mscorlib" or the current assembly is mscorlib itself.
735 * TypeDef.cs (TypeDef.DefineContents),
736 MethodDef.cs (MethodDef.WriteCode): Set HasSecurity attribute if
737 SuppressUnmanagedCodeSecurity custom attribute is present.
738 * ExternTable.cs (ExternRef.Name): New.
739 * ExternTypeRef.cs (ExternTypeRef.ExternRef): New. Returns the corresponding
742 2005-08-18 Ankit Jain <jankit@novell.com>
744 * MethodDef.cs (MethodDef.WriteCode): Process custom attributes and decl security
745 lists even for abstract methods.
747 2005-08-16 Ankit Jain <jankit@novell.com>
749 * CodeGen.cs (CodeGen.current_field_native_type): New.
750 (CodeGen.AddFieldMarshalInfo): New. Add marshal info for the current field.
751 (CodeGen.AddFieldDef): Add marshal info for the field.
752 * FieldDef.cs (FieldDef.native_type): New. Native type for marshalling.
753 (FieldDef.AddMarshalInfo): New. Set native_type.
754 (FieldDef.Resolve): Set MarshalInfo for field_def.
755 * MethodDef.cs (MethodDef.ret_native_type): New. Native type for return type.
756 (MethodDef.AddRetTypeMarshalInfo): New.
757 (MethodDef.EntryPoint): Throw exception is the method is not static.
758 (MethodDef.Resolve): Call overload with class_def=null.
759 (MethodDef.Resolve): Add global methods to code_gen.PEFile.
760 Add marshal info for return type.
761 * ParamDef.cs (ParamDef.native_type): New. Native type for marshalling.
762 (ParamDef.AddMarshalInfo): New.
763 (ParamDef.Define): Add marshal info to peapi_param.
765 2005-08-08 Ankit Jain <jankit@novell.com>
767 * ExternTypeRef.cs (ExternTypeRef.Clone): Use full_name instead of FullName
768 to avoid cloning modifiers (like []).
770 2005-08-08 Ankit Jain <jankit@novell.com>
772 * CodeGen.cs (CodeGen.entry_point): New bool field.
773 (CodeGen.HasEntryPoint): New. Property to mark that the assembly
775 (CodeGen.Write): Throw Exception if an EXE has been requested but the
776 source file has no entrypoint defined.
778 2005-08-05 Ankit Jain <jankit@novell.com>
780 * DeclSecurity.cs: New File.
781 (DeclSecurity): New class.
782 (IDeclSecurityTarget): New interface.
783 * TypeDef.cs (TypeDef): Implement IDeclSecurityTarget.
784 (TypeDef.DefineContents): Add DeclSecurity info.
785 * CodeGen.cs (CurrentDeclSecurityTarget): New. Property for current
787 (BeginTypeDef, BeginMethodDef, BeginAssemblyRef): Set current DeclSecurity
789 (AddAssemblyDeclSecurity): New. Add DeclSecurity info to assembly.
790 * ExternTable.cs (ExternAssembly): Implement IDeclSecurityTarget.
791 (Resolve): Add DeclSecurity info to AssemblyRef.
792 * MethodDef.cs (MethodDef): Implement IDeclSecurityTarget.
793 (WriteCode): Add DeclSecurity info to MethodDef.
795 2005-08-03 Ankit Jain <jankit@novell.com>
797 * GlobalMethodRef.cs (GlobalMethodRef.Resolve): Use CreateVarargSignature
798 to create method's signature for a vararg method.
800 2005-08-02 Ankit Jain <ankit@corewars.org>
803 * TypeDef.cs (TypeDef.Define): Use default values for pack and size if only
804 one of them is unspecified.
806 2005-05-10 Ankit Jain <ankit@corewars.org>
809 * ExternTable.cs (ExternRef.GetTypeRef): Make ValueClass if requested.
812 2005-05-06 Ankit Jain <ankit@corewars.org>
814 * MethodDef.cs (MethodDef.GetNamedParamPos): Param num starts from 1 for instance
816 * CodeGen.cs (CodeGen.BeginTypeDef): Set current_customattrtarget when reopening a
819 2005-04-27 Ankit Jain <ankit@corewars.org>
821 * ExternTypeRefInst.cs (ExternTypeRefInst.GetMethodRef): Use method_table to avoid
823 * PrimitiveTypeRef.cs (PrimitiveTypeRef.GetMethodRef): Use method_table to avoid
825 * PeapiTypeRef.cs (Pair): New class. Tuple of PEAPI.Type and string.
826 (PeapiTypeRef.type_table): New.
827 (PeapiTypeRef.MakeArray, MakeBoundArray, MakeManagedPointer, MakeUnmanagedPointer,
828 MakeCustomModified): Use type_table to avoid creating duplicates.
830 2005-04-22 Atsushi Enomoto <atsushi@ximian.com>
833 ble.un.s and blt.un.s were incorrectly added to the table.
835 2005-04-22 Ankit Jain <ankit@corewars.org>
837 * TypeSpecMethodRef.cs (TypeSpecMethodRef.Resolve): Set is_resolved
840 2005-04-18 Ankit Jain <ankit@corewars.org>
842 * CodeGen.cs (CodeGen.AddManifestResource): Add a
843 ManifestResource to manifestResources ArrayList.
844 (CodeGen.Write): Add all resources to the pefile.
846 2005-04-12 Ankit Jain <ankit@corewars.org>
848 * CustomAttr.cs (ICustomAttrTarget): New interface.
849 * TypeDef.cs: Implement ICustomAttrTarget.
850 * FieldDef.cs, PropertyDef.cs, ParamDef.cs, EventDef.cs
851 (AddCustomAttribute): Implement ICustomAttrTarget
852 (.Resolve): Add custom attributes.
853 * CodeGen.cs (CurrentCustomAttrTarget): New. Property for
854 current CustomAttr target.
855 (BeginTypeDef, BeginMethodDef, BeginAssemblyRef): Set
856 current_customattrtarget accordingly.
857 * ExternTable.cs (ExternRef): Implement ICustomAttrTarget.
858 (ExternModule.Resolve): Add custom attributes to ModuleRef.
859 (ExternAssembly.Resolve): Add custom attributes to AssemblyRef.
860 * MethodDef.cs: Implement ICustomAttrTarget and add custom
862 (GetParam): New. Get ParamDef by index.
864 2005-04-08 Ankit Jain <radical@corewars.org>
866 * MethodDef.cs (named_param_table, CreateNamedParamTable): Remove.
867 (GetNamedParamPos): Implement using a linear scan.
869 * TypeDef.cs (TypeDef): Initialize 'is_enum_class'.
870 (Define): Set 'is_value_class' or 'is_enum_class' depending on
871 whether the parent is System.ValueType or System.Enum. Update to
874 2005-03-17 Ankit Jain <radical@corewars.org>
876 * MethodDef.cs: Added method AddParamDefaultValue for adding DefaultValue
877 to a method parameter.
878 * ParamDef.cs: Added method AddDefaultValue and handling of default value.
880 2005-02-07 Jackson Harper <jackson@ximian.com>
882 * MethodDef.cs: Don't die on duplicate local symbols. Fixes bug
883 72149. Patch by Sohail Somani.
885 2004-12-14 Raja R Harinath <rharinath@novell.com>
887 * MethodDef.cs (CreateSignature): Add a space in generated signature.
889 2004-12-02 Jackson Harper <jackson@ximian.com>
891 * ExternTypeRefInst.cs: When converting to arrays we loose our valuetypedness.
893 2004-12-02 Jackson Harper <jackson@ximian.com>
895 * MethodDef.cs: Abstract methods don't get bodies. Even if there
898 2004-12-02 Jackson Harper <jackson@ximian.com>
900 * MethodDef.cs: If the type is an interface auto set fields to
901 static (and give a warning if they are not static), and set
902 methods to abstract virtual (and give warning if they were not already).
904 * TypeDef.cs: Accessors and convience properties for getting and
905 setting the method/field attributes.
908 2004-12-02 Jackson Harper <jackson@ximian.com>
910 * FieldDef.cs: Set the underlying type for bytearray data constants. This
911 fixes bug #70153 and #70154 which my previous fix caused.
913 2004-08-01 Atsushi Enomoto <atsushi@ximian.com>
915 * DebuggingInfo.cs : csc build fix (see bug #62230).
917 2004-07-27 Martin Baulig <martin@ximian.com>
919 * IInstr.cs (IInstr): Made this an abstract class and not an
920 interface, added a .ctor which takes a Location.
921 (IInstr.Location): New public readonly field.
923 * CodeGen.cs (CodeGen.SymbolWriter): New public property.
924 (CodeGen.BeginSourceFile, EndSourceFile): New public methods.
925 (CodeGen.EndMethodDef): Take a `Location' argument.
926 (CodeGen.Write): Create debugging info if the user requested it.
928 * MethodDef.cs (MethodDef.ctor): Added `CodeGen codegen' and
929 `Location start' arguments. If the user requested debugging
930 information, register ourselves with the symbol writer.
931 (MethodDef.WriteCode): Emit debugging information.
933 * DebuggingInfo.cs: New file.
935 2004-07-23 Jackson Harper <jackson@ximian.com>
937 * MethodDef.cs: Params are 1 based if the method is instance
938 because of the 'this' arg.
940 2004-07-21 Jackson Harper <jackson@ximian.com>
942 * ExternTypeRefInst.cs: Use the PeapiType so that modified types
943 will actually work. Add a Clone method so that type ref insts
944 aren't duplicated making them modified multiple times.
946 2004-07-12 Jackson Harper <jackson@ximian.com>
948 * MethodDef.cs: Local lists are not lazyily allocated so they were
949 getting added to every method. This is legal but wastes space.
951 2004-07-08 Jackson Harper <jackson@ximian.com>
953 * CodeGen.cs: Add assembly custom attributes to the pe file.
954 * CustomAttr.cs: Custom attributes are now added through the
955 pefile, this ensures that they get emitted properly.
956 * ExternTable.cs: Allow adding custom attributes to assembly
959 2004-06-26 Jackson Harper <jackson@ximian.com>
961 * TypeDef.cs: Preserve the order of fields in a class. Then after
962 all the fields have been defined reset the order in PEAPI to the
963 correct order. This is done so sequential layouts actually
964 work. The order needs to be reset because it can be lost during
965 the recursive definition phase.
966 * MethodDef.cs: Use and ExternModule for pinvoke data's module
967 refs. This way we don't get duplicate module refs.
969 2004-06-24 Jackson Harper <jackson@ximian.com>
971 * MethodDef.cs: Report when defining methods just like MS.
972 * TypeDef.cs: Error message when we can't find a locla method.
974 2004-06-23 Jackson Harper <jackson@ximian.com>
976 * MethodDef.cs: sigh, another varargs fix that probably breaks
977 other varargs tets. Someday I will get this right, I don't think
978 today is that day though. This fix basically just makes sure to
979 trim the sentinel off of signatures. Also eliminated some code
981 * ParamDef.cs: Make IsSentinel work for both cases of generating a
984 2004-06-20 Jackson Harper <jackson@ximian.com>
986 * SwitchInstr.cs: Allow switches with no labels.
988 2004-06-20 Jackson Harper <jackson@ximian.com>
990 * InstrTable.cs: Add .u8 opcodes for ldind and ldelem these are
991 just aliases to their .i8 equivelents.
993 2004-06-19 Jackson Harper <jackson@ximian.com>
995 * MethodPointerTypeRef.cs: New File - represents a method pointer
996 that is being treated as a typeref. For example method void*() in
997 the statement castclass method void*().
999 2004-06-19 Jackson Harper <jackson@ximian.com>
1001 * InstrTable.cs: Add undocumented brnull opcode. This is really
1002 just an alias for brfalse.
1004 2004-06-19 Jackson Harper <jackson@ximian.com>
1006 * MethodDef.cs: Add a method to create vararg signatures from a
1007 list of typerefs that matches the algorithm for creating vararg
1008 signatures from paramdefs. This is used when creating methodref
1010 * MethodRef.cs: Use the new CreateVarargSignature method to create
1011 the methods signature if it is a vararg method.
1013 2004-06-14 Jackson Harper <jackson@ximian.com>
1015 * CodeGen.cs: Allow file refs to be added.
1016 * FileRef.cs: New file - represents a file ref.
1018 2004-06-14 Jackson Harper <jackson@ximian.com>
1020 * CodeGen.cs: Allow adding module refs.
1021 * ExternTable.cs: Add ExternModule refs.
1022 * ExternTypeRef.cs: Take an ExternRef which can be either an
1023 assmebly ref or a module ref.
1025 2004-06-14 Jackson Harper <jackson@ximian.com>
1027 * CodeGen.cs: Implement setting module names.
1029 2004-05-23 Jackson Harper <jackson@ximian.com>
1031 * MethodDef.cs: Cache vararg signatures so a new memberref is not
1032 created for each vararg pattern.
1034 2004-05-22 Jackson Harper <jackson@ximian.com>
1036 * InstrTable.cs: ldc.i4.M1 is aliased to ldc.i4.m1. Fixes bug #58524.
1038 2004-05-22 Jackson Harper <jackson@ximian.com>
1040 * GlobalMethodRef.cs: Check for sentinel properly.
1042 2004-04-03 Jackson Harper <jackson@ximian.com>
1046 2004-04-02 Jackson Harper <jackson@ximian.com>
1048 * CodeGen.cs: Allow setting assembly info.
1050 2004-04-01 Jackson Harper <jackson@ximian.com>
1052 * CodeGen.cs: Add a current assembly ref and methods to create/end
1053 it so we can set assembly ref attributes.
1054 * ExternTable.cs: Make the ExternAssembly public so that its
1055 attributes can be set.
1057 2004-03-28 Jackson Harper <jackson@ximian.com>
1059 * PeapiTypeRef.cs: Check for null bounds in bound arrays. Patch by
1061 * ModifiablyType.cs: Set names properly for bound arrays.
1063 2004-02-18 Jackson Harper <jackson@ximian.com>
1065 * ExternTypeRefInst.cs: New file - represents an instance of an
1066 extern type ref, used for making value type tokens.
1067 * TypeDef.cs: Add implementing classes.
1069 2003-12-10 Jackson Harper <jackson@ximian.com>
1071 * ModifiableType.cs: Allow the conversion list to be got/set.
1072 * ExternTypeRef.cs: Add a Clone method. Remove table modification.
1074 2003-12-10 Jackson Harper <jackson@ximian.com>
1076 * ExternTable.cs: Add methods to update a types name.
1077 * ExternTypeRef.cs: When a types name is modified update it in the
1080 2003-12-08 Jackson Harper <jackson@ximian.com>
1082 * ModifiableType.cs: Put modifier and class in the list in the
1085 2003-11-18 Jackson Harper <jackson@ximian.com>
1087 * MethodDef.cs: Add support for .zeroinit. This is just another
1088 way of initializing locals.
1090 2003-11-17 Jackson Harper <jackson@ximian.com>
1092 * LdstrInstr.cs: Allow strings to be created as bytearrays.
1094 2003-10-28 Jackson Harper <jackson@ximian.com>
1096 * ExternTable.cs: Revert back to resolving value and class types
1097 into the same table. This avoids types being resolved multiple
1098 times when classrefs are used with valuetypes.
1100 2003-10-28 Jackson Harper <jackson@ximian.com>
1102 * ExternTable.cs: This is now used to store ExternTypeRefs so we
1103 only create 1 for each external type.
1104 * ExternTypeRef.cs: Only create one method and field per a
1107 2003-10-18 Jackson Harper <jackson@ximian.com>
1109 * ExternTable.cs: Separate class and value types into diff tables.
1111 2003-10-18 Jackson Harper <jackson@ximian.com>
1113 * InstrTable.cs: Use short branch instructions instead of aliasing them
1114 to the long branch instructions.
1116 2003-10-13 Jackson Harper <jackson@ximian.com>
1118 * MethodDef.cs: Check for null param lists in vararg
1119 methods. Fixes bug #49614.
1121 2003-10-11 Jackson Harper <jackson@ximian.com>
1123 * GenericTypeRef.cs: Allow Mvars to be a base type.
1124 * GenericMethodRef.cs: Basically just a wrapper around an existing
1125 method making it into a generic method.
1126 * GenericMethodSig.cs: Signature for a generic method.
1128 2003-10-08 Jackson Harper <jackson@ximian.com>
1130 * PeapiTypeRef.cs: Remove old hackery for adding methods to
1131 arrays, use typespecs now.
1133 2003-10-08 Jackson Harper <jackson@ximian.com>
1135 * InstrTable.cs: Add unbox.any instruction.
1136 * MethodDef.cs: Allow generic parameters to be added to methods.
1138 2003-10-06 Jackson Harper <jackson@latitudegeo.com>
1140 * MethodInfo.cs: Use report to display no label error message.
1142 2003-10-01 Jackson Harper <jackson@latitudegeo.com>
1144 * LabelInfo.cs: Fix tabbing, add ToString so labels are printed
1145 properly in error messages.
1147 2003-09-27 Jackson Harper <jackson@latitudegeo.com>
1149 * MethodDef.cs: Allow PInvoke info to be added.
1151 2003-09-21 Jackson Harper <jackson@latitudegeo.com>
1153 * CodeGen.cs: Add methods for adding data. CodeGen now takes a
1154 report object for giving users errors/warnings/info.
1155 * FieldDef.cs: When a data constant is assigned to a field the
1156 constant might not exist yet. So just take the constants name and
1157 look it up when writting code.
1158 * Local.cs: Starting to add some error handling. Still playing
1159 with diff ways to do this.
1160 * MethodDef.cs: Add some error handling for local var lookups
1161 * TypeDef.cs: Data is allways global so it should never be added
1163 * TypeRef.cs: Error message for lookups.
1165 2003-09-20 Jackson Harper <jackson@latitudegeo.com>
1167 * TypeDef.cs: Rework so multiple constraints can be added to a
1170 2003-09-16 Jackson Harper <jackson@latitudegeo.com>
1172 * InstrTable.cs: endfault instruction (which is just endfinally
1175 2003-09-15 Jackson Harper <jackson@latitudegeo.com>
1177 * FinallyBlock.cs: The sad thing is how long it took me to realize
1178 what was going on here...
1180 2003-09-13 Jackson Harper <jackson@latitudegeo.com>
1182 * MethodInstr.cs: callvirt operation is implicitly instance.
1184 2003-09-12 Jackson Harper <jackson@latitudegeo.com>
1186 * TypeRef.cs: Remove unused enum, this has been moved to the
1187 ModifiableType base class.
1189 2003-09-08 Jackson Harper <jackson@latitudegeo.com>
1191 * TypeDef.cs: By default types will have System.Object as their
1192 parent type if no parent type is specified (this is what PEAPI
1193 does) however if we are assembling corlib the System.Object type
1194 will not have System.Object as its parent type.
1196 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
1198 * DataDef.cs: Make name public so data names can be looked up
1199 * FieldDef.cs: Stub method for adding data values
1200 * TypeDef.cs: Implement long form overrides, fix some backwords
1201 variable naming, add a method to lookup data definitions.
1203 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
1205 * IClassRef.cs: Removed methods that have been moved into ITypeRef
1206 * MethodDef.cs: Make some properties public, Add method to get a
1207 list of parameter types. This is used to build signatures. Alow
1208 sentinels in signatures and in param lists. Fix some tabbing.
1209 * ParamDef.cs: Expose the parameters type so they can be used when
1210 building signatures.
1211 * TypeDef.cs: Add and emit overrides.
1213 2003-08-10 Jackson Harper <jackson@latitudegeo.com>
1215 * CodeGen.cs: Fix tabbing
1216 * ModifiableType.cs: Modify a types signature when the type is
1217 modified instead of waiting untill the end. Signatures need to be
1218 modified immediatly because they are used in method signatures and
1219 would fail for overloaded operations if sigs weren't modified
1221 * ExternTypeRef.cs: Add signature modifications, fix some tabbing
1222 * GenericTypeInst.cs: Use ModifiableType as a base
1223 * GenericTypeRef.cs: Use ModifiableType as a base
1224 * PeapiTypeRef.cs: No longer take or modify type names.
1225 * PrimitiveTypeRef.cs: Add signature modifications, fix some tabbing.
1226 * Sentinel.cs: Add signature modifications, fix some tabbing.
1227 * TypeRef.cs: Add signature modifications, fix some tabbing.
1229 2003-08-05 Nick Drochak <ndrochak@gol.com>
1231 * IClassRef.cs: Fix build on .NET
1233 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1235 * IClassRef.cs: Add method for making types into value types
1236 * ExternTypeRef.cs: Add functionality for valuetypes
1237 * MethodDef.cs: Handle Vararg signatures individually. Fixes for
1238 new Sentinel type in vararg signatures
1239 * MethodRef.cs: Use new SentinelTypeRef instead of Sentinel type
1241 * ParamDef.cs: New method to check if this parameter is the sentinel
1242 * TypeRef.cs: Add some functionality for creating valuetypes
1243 * Sentinel.cs: New type represents the sentinel
1245 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1247 * TypeDef.cs: Make types into value types if specified. Also
1248 add the functionality to make types into Enums.
1249 TODO: Value types of nested classes.
1251 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
1253 * LabelInfo.cs: Move this type outside of MethodDef, because other
1254 types use LabelInfos for label references now.
1255 * BranchInstr.cs: Take a LabelInfo instead of information on a label.
1256 * HandlerBlock.cs: Take a LabelInfo instead of information on a label.
1257 * MethodDef.cs: Return LabelInfo from AddLabel methods. New method for
1258 adding a reference to a label.
1260 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
1262 * ExternMethodRef.cs: Remove top secret debugging code.
1263 * MethodDef.cs: Less elegant but more bugfree method of doing explicit
1264 offsets for labels. Just put the offset labels in another list and
1265 define them in another loop.
1267 2003-08-02 Jackson Harper <jackson@latitudegeo.com>
1269 * IMethodRef.cs: Method refs should expose their call conv. This is
1270 needed so the call conv can be modified for the newobj operation which
1271 is implicitly instance.
1272 * ExternMethodRef.cs: Expose call conv. Don't resolve vararg methods
1274 * GlobalMethodRef.cs: Expose call conv
1275 * TypeSpecMethodRef.cs: Expose call conv
1276 * MethodInstr.cs: For newobj operations set the call conv to instance
1278 2003-07-31 Jackson Harper <jackson@latitudegeo.com>
1280 * MethodDef.cs: Allow 0 offsets for labels, and make sure to only
1281 use offsets when we are supposed to.
1283 2003-07-30 Jackson Harper <jackson@latitudegeo.com>
1285 * BranchInstr.cs: Allow explicit offsets for labels
1287 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
1289 * FilterBlock.cs: Use a handler block for the this block. This
1290 makes it easier to create filters using braces, labels, or offsets
1291 * HandlerBlock.cs: Allow handler blocks to be created using positions,
1292 offsets, and labels.
1293 * MethodDef.cs: Add methods to create labels all 3 ways, and emit
1294 labels created by each of the methods.
1295 * TryBlock.cs: Use a handler block instead of label strings. This
1296 allows all three methods of label creation to be used.
1298 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
1300 * IInstr.cs: Instructions now get their parent method when being
1302 * *Instr.cs: Adjust emit method to accept a methoddef
1304 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1306 * CodeGen.cs: Set the assembly name when creating the PEFile.
1308 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1310 * CodeGen.cs: Do not create the PEFile untill the resolve phase. This
1311 fixes the problem with ilasm creating blank files if their is a
1312 failure in the parsing phase and not being able to set the assembly
1314 * ExternTable.cs: Do not reference the assemblies untill after the
1315 PEFile untill the Resolve phase.
1317 2003-07-27 Jackson Harper <jackson@latitudegeo.com>
1319 * ExternFieldRef.cs: Resolve as a typespec field if neccasary, make
1320 sure to not resolve more then once.
1321 * ExternMethodRef.cs: Resolve as a typespec method if neccasary
1322 * ExternTypeRef.cs: Use modifiable type as base class
1323 * FieldRef.cs: Make sure to not resolve more then once.
1324 * GlobalFieldRef.cs: Make sure to not resolve more then once.
1325 * GlobalMethodRef.cs: Make sure to not resolve more then once.
1326 * ITypeRef.cs: Types no longer need the AsClassRef method
1327 * MethodDef.cs: Only decriment param count for vararg methods if there
1328 is an ellipsis on the end of the param list.
1329 Fix little bug so return types allways get resolved.
1330 * PeapiTypeRef.cs: Use TypeRef.Ellipsis for a place holder in bound
1331 arrays instead of null
1332 * PrimitiveTypeRef.cs: Use modifiable type as a base
1333 * TypeRef.cs: Use modifable type as base, and let it do all the
1335 * TypeSpecFieldRef.cs: Make sure to not resolve more then once.
1336 * ModifiableType.cs: New base class for all types. This class will
1337 handle all of the typemodification and determine whether methods
1338 should be added to the type or the types typespec.
1340 2003-07-25 Jackson Harper <jackson@latitudegeo.com>
1342 * MethodDef.cs: If methods do not have the static attribute give
1343 them the instance calling convention.
1345 2003-07-21 Jackson Harper <jackson@latitudegeo.com>
1347 * MethodDef.cs: Do not decremint param count for vararg methods,
1348 the ellipsis is needed later
1350 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
1352 * GenericTypeInst.cs: New File - A type reference to an instance
1353 of a generic type. ie Set<int32>
1354 * TypeSpecFieldRef.cs: New File - A field ref that is attached to
1355 a typespec. This can be used with modified types, and generic types.
1356 * TypeSpecMethodRef.cs: New File - A method ref that is attached
1357 to a typespec. This can be used with modified types, and generic types.
1358 * GenericTypeRef.cs: Create method refs and field refs using the
1359 new typespec classes.
1360 * ITypeRef.cs: Types should now be able to have methods and fields
1362 * PeapiTypeRef.cs: Set UseTypeSpec to true if the type is modified
1363 * PrimitiveTypeRef.cs: Add methods to attach fields and
1364 methods. This just uses the TypeSpec* classes so I don't need to
1366 * TypeRef.cs: Set UseTypeSpec to true if a type is modified.
1368 2003-07-17 Jackson Harper <jackson@latitudegeo.com>
1370 * GenericTypeRef.cs: New File - A reference to a generic type
1372 * InstrTable.cs: Add the stelem and ldelem opcodes.
1374 2003-07-15 Jackson Harper <jackson@latitudegeo.com>
1376 * TypeDef.cs: Allow adding and emitting generic type constraints.
1378 2003-07-14 Jackson Harper <jackson@latitudegeo.com>
1380 * TypeDef.cs: Emit generic parameters.
1382 2003-06-15 Jackson Harper <jackson@latitudegeo.com>
1384 * CodeGen.cs: Fix buglet in cache name creating (I will claim this
1387 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1389 * CodeGen.cs: When creating nested types cache their names using
1390 the parent/type method but emit their short name.
1392 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1394 * CodeGen.cs: Add methods for setting corflags, subsystem, and corflags.
1396 2003-06-14 Jackson Harper <jackson@latitudegeo.com>
1398 * ITypeRef.cs, PeapiTypeRef.cs, TypeRef.cs: Quick hack for custom
1401 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1403 * EventDef.cs: Only add one method for addon, fire, other, and
1406 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1408 * TypeDef.cs: Add properties to types.
1409 * PropertyDef.cs: New file - Implementation of a type property feature
1411 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1413 * TypeDef.cs: Fix silly null reference bug.
1415 2003-06-08 Jackson Harper <jackson@latitudegeo.com>
1417 * EventDef.cs: New file - An event definition.
1418 * FeatureAttr.cs: New file - Attributes for features (events and
1420 * MethodRef.cs: Only resolve methods once.
1421 * TypeDef.cs: Allow Events to be added to types. Also add
1422 functionality to add generic type parameters to types. The
1423 actually emission of these type parameters is commented out untill
1424 I commit my patches to PEAPI and work out the syntax of constraints.
1426 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
1428 * CodeGen.cs: Allow this assembly name to be set.
1429 * HandlerBlock.cs: Make label fields public so they can be
1430 accessed in a TryBlocks constructor.
1431 * MethodDef.cs: Allow random labels to be inserted at the current
1432 position. These are use for scope blocks.
1433 * TryBlock.cs: New constructor takes from and to labels as a HandlerBlock
1435 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
1437 * CustomAttr.cs: New file - Custom attributes
1438 * InstrTable.cs: Add stelem.r4 and stelem.r8 instructions. Add
1439 . tail to unaligned modifier.
1440 * LdtokenInstr.cs: Add type tokens.
1441 * MethodDef.cs: Fix IsVararg, add method to add custom attributes,
1442 emitting custom attributes when writing code, allow for Ellipsises
1443 in param lists, add coma between args in signatures.
1444 * ParamDef.cs: Add the Ellipsis pseudo param
1445 * PrimitiveTypeRef.cs: System.String and System.Object can be
1446 referenced without an [mscorlib] assembly prefix.
1447 * TypeDef.cs: Add Custom attributes.
1449 2003-05-25 Jackson Harper <jackson@latitudegeo.com>
1451 * CodeGen.cs: Add method to resolve global vararg methods.
1452 * ExternMethodRef.cs: Resolve vararg methods
1453 * GlobalMethodRef.cs: Set calling conventions, add vararg methods
1454 * MethodDef.cs: Set calling conventions, add vararg methods
1455 * MethodRef.cs: Set calling conventions, add vararg methods
1456 * TypeDef.cs: Resolve vararg methods
1457 * TypeRef.cs: Add Ellipsis pseudo type, this should never really
1458 be used as a type, but is stored in arrays with other types. Pass
1459 call convs to methodref constructor.
1461 2003-05-24 Jackson Harper <jackson@latitudegeo.com>
1463 * CatchBlock.cs: Remove typo causing to labels to be the same as
1465 * FaultBlock.cs: Remove typo causing to labels to be the same as
1467 * FilterBlock.cs: Remove typo causing to labels to be the same as
1469 * MethodDef.cs: Allow for multiple labels to point to the same
1475 2003-05-23 Jackson Harper <jackson@latitudegeo.com>
1477 * CatchBlock.cs: New file - Initial implementation of a catch
1479 * FaultBlock.cs: New file - Initial implementation of a fault
1481 * FilterBlock.cs: New file - Initial implementation of a filter
1483 * FinallyBlock.cs: New file - Initial implementation of a finally
1485 * HandlerBlock.cs: New file - A handler block is the block
1486 assosciated with a SEH clause
1487 * ISehClause: New file - Interface that structured exception
1488 handling clauses must implement.
1489 * TryBlock.cs: New file - Initial implementation only supports
1490 label form SEH. This TryBlock is added to a method as an
1491 instruction out of convenience, tryblock is not an instruction.
1493 2003-05-22 Jackson Harper <jackson@latitudegeo.com>
1495 * InstrTable.cs: Add unsigned conversion instructions.
1497 2003-05-21 Jackson Harper <jackson@latitudegeo.com>
1499 * CalliInstr.cs: New file - The calli instruction
1500 * Ldtoken.cs: New file - The ldtoken instruction
1501 * InstrTable.cs: ldc.i8 is a TOKEN_I8 and should be given the
1502 MiscToken.ldc_i8 value.
1504 2003-05-18 Jackson Harper <jackson@latitudegeo.com>
1506 * ExternMethodRef.cs: Accept and add calling conventions. Add
1507 methods using array methods if owners are arrays, resolve methods
1508 named <init> as .ctor.
1509 * ExternTable.cs: Add method to get value classes.
1510 * ExternTypeRef.cs: Add AsClassRef method, GetMethodRef now takes
1511 calling conventions.
1512 * IClassRef.cs: GetMethodRef now takes calling conventions
1513 * ITypeRef.cs: Add IsArray IsRef and AsClassRef methods
1514 * MethodRef.cs: Change <init> to .ctor
1515 * PeapiTypeRef.cs: This class is no longer an ITypeRef because it
1516 cannot be converted to a IClassRef. Add IsArray and IsRef, use new
1517 Class::GetArray* methods to convert to arrays.
1518 * PrimitiveTypeRef.cs: Add method to convert to an IClassRef
1519 * TypeRef.cs: Add IsArray and IsRef, add method to convert to
1520 IClassRef. GetMethodRef now takes calling conventions
1522 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
1524 * MethodDef.cs: Add named param table and methods to get named param
1525 positions. Add method to get named local variables slot
1526 number. Make sure param_lists aren't null when defining them. Add
1527 specialname and rtspecialname attributes if the method being
1528 defined is named '.ctor' or '.cctor'. Add new method for creating
1529 signatures using a list of typerefs.
1530 * GlobalMethodRef.cs: Use new CreateSignature method that takes an
1532 * MethodRef.cs: Use new CreateSignature method
1533 * InstrTable.cs: Use INSTR_LOCAL and INSTR_PARAM tokens for
1534 instructions that take local and param operands.
1536 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
1538 * TypeDef.cs: Add size and packing information
1540 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1542 * IFieldRef.cs: New file - interface field references must implement
1543 * ExternFieldRef.cs: New file - Reference to a field in another
1545 * FieldRef.cs: New file - Reference to a field in this assembly
1546 * GlobalFieldRef.cs: New file - Reference to a global field
1547 * FieldInstr.cs: New file - Instruction that takes a field
1549 * CodeGen.cs: Add method to resolve global methods
1550 * ExternTypeRef.cs: Add method to get method references
1551 * FieldDef.cs: Allow methods to be resolved before being defined
1552 * IClassRef.cs: Add method to get field references.
1553 * TypeDef.cs: Add method to resolve member fields.
1554 * TypeRef.cs: Add method to get field references
1556 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1558 * GlobalMethodRef.cs: New file - A reference to a global method
1559 * CodeGen.cs: Store global methods and fields in hashtables to
1560 make lookup easier. Add method to resolve global methods.
1562 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1564 * MethodDef.cs: Allways set max stack
1566 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1568 * ExternTable.cs: Alias corlib to mscorlib since these seem to get
1571 2003-05-10 Jackson Harper <jackson@latitudegeo.com>
1573 * IMethodRef.cs: New file - Interface that method references must
1575 * ExternMethodRef.cs: New file - Reference to a method in another
1577 * Local.cs: New file - A Local variable
1578 * MethodInstr.cs: New file - an instruction that takes a method
1580 * IClassRef.cs: Add method to get a method reference from a class
1582 * MethodDef.cs: Add ability to resolve methods before defining
1583 them, add max stack, locals, and entry point. Make CreateSignature
1584 method public and static so other classes can use it.
1585 * TypeDef.cs: Store methods and fields in hashtables so they can
1586 be easily retrieved, add method to resolve member methods.
1587 * TypeRef.cs: Add method for resolving member methods.
1588 * ExternTypeRef.cs: Add methods to get classref and methodrefs
1589 * MethodRef.cs: New file - Reference to a method in this assembly.
1592 2003-05-07 Jackson Harper <jackson@latitudegeo.com>
1594 * TypeInstr.cs: New file - implementation of instructions that
1595 take a single type instruction.
1597 2003-05-06 Jackson Harper <jackson@latitudegeo.com>
1599 * SwitchInstr.cs: New file - implementation of switch instructions
1601 2003-05-05 Jackson Harper <jackson@lattidegeo.com>
1603 * MethodDef.cs: Add ability to add and emit labels
1604 * BranchInstr.cs: New file - Branch instructions
1606 2003-05-04 Jackson Harper <jackson@latitudegeo.com>
1608 * LdcInstr.cs: New file - lcd* instructions
1609 * MiscInstr.cs: New file - Just an enum that gives me constant
1610 values for instructions PEAPI does not define in an enum
1611 * InstrTable.cs: Use new MiscInstr constants instead of string values.
1613 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1615 * CodeGen.cs: Define the contents of types after all types have
1616 been resolved, this avoids the infinite loop that would occur if a
1617 type was a member of its base type.
1618 * TypeDef.cs: Method to define contents after being defined.
1620 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1622 * TypeManager.cs: Check if type is defined before defining it.
1624 2003-05-01 Jackson Harper <jackson@latitudegeo.com>
1626 * CodeGen.cs: Add outer classes to typedefs if necesary
1627 * InstrTable.cs: ldtoken instruction is a INSTR_TOK token
1628 * TypeDef.cs: Add outer class property
1630 2003-04-30 Jackson Harper <jackson@latitudegeo.com>
1632 * MethodDef.cs: Accept and emit instructions.
1633 * CodeGen.cs: Fix typo
1634 * IInstr.cs: New file - Interface for instructions that are added to methods
1635 * IntInstr.cs: New file - Instruction that takes a single int
1637 * LdstrInstr.cs: New file - ldstr instruction (the only
1638 instruction that takes a string parameter)
1640 2003-04-28 Jackson Harper <jackson@latitudegeo.com>
1642 * InstrTable.cs: Much simpler system. All tokens go into one
1643 hashtable now. There is no reason to have them seperated out.
1645 2003-04-20 Jackson Harper <jackson@latitudegeo.com>
1647 * CodeGen.cs: Add method to add data
1648 * FieldDef.cs: Add method to set a fields value
1649 * TypeDef.cs: Add method to add data
1650 * DataDef.cs: New file - Definition of a data constant
1652 2003-04-18 Jackson Harper <jackson@latitudegeo.com>
1654 * FieldDef.cs: Change peapi fielddef name.
1655 * MethodDef.cs: Change peapi methoddef name.
1657 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1659 * MethodDef.cs: New file - definition of a method.
1660 * ParamDef.cs: New file - definition of a parameter to a method
1661 * TypeDef.cs: Add method definitions, set intransit flag to false
1662 before defining members, so a false circular reference is not
1664 * CodeGen.cs: Add methods to add method definitions
1666 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1668 * ExternTypeRef.cs: external types are classrefs
1670 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1672 * PeapiTypeRef.cs: New file - base wrapper for type refs that are
1674 * PrimitiveTypeRef.cs: New file - A primitive type (char, int, string)
1676 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1678 * TypeRef.cs: Rewrite - Typerefs are now resolved after parsing.
1679 * TypeManager.cs: Rewrite - Just a simple table for looking up
1681 * ExternTable.cs: Create ClassRef's instead of Classes
1682 * Location.cs: Make compile
1683 * CodeGen.cs: Use new tree system
1685 2003-04-17 Jackson Harper <jackson@latitudegeo.com>
1687 * ExternTypeRef.cs: New file - Represents a reference to a type in
1688 an external assembly
1689 * FieldDef.cs: New file - Represents a field definition
1690 * IClassRef.cs: New file - Interface that classrefs must
1691 implement. This needs some more thought though because once a
1692 classref has been modified it is no longer a classref.
1693 * ITypeRef.cs: New file - Interface that references to types must
1695 * TypeDef.cs: New file - Represents the a class definition, and
1696 will hold all of the classes members.
1698 2003-04-07 Jackson Harper <jackson@latitudegeo.com>
1700 * TypeRef.cs: Return FieldDef when adding a field def to a class
1702 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1704 * TypeRef.cs: Add flag for making types pinned
1706 2003-04-01 Jackson Harper <jackson@latitudegeo.com>
1708 * ClassTable.cs: Do not append a . to names that are not in a
1710 * CodeGen.cs: Handle nested classes
1712 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1714 * ExternTable.cs: Remove some unsed fields.
1716 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1718 * ExternTable.cs: Add method to lookup classes with a full name,
1719 instead of having to have namespace and name seperate.
1720 * ClassTable.cs: Make method that seprates full names into
1721 name/namespaces public.
1723 2003-03-30 Jackson Harper <jackson@latitudegeo.com>
1725 * InstrTable.cs: Add Calli, detabify
1727 2003-03-29 Jackson Harper <jackson@latitudegeo.com>
1729 * InstrTable.cs: Add branch ops switch, and lc.r*, also fix some
1730 typos for other ops.
1732 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1734 * ClassTable.cs: Set defined flag and type attributes for referenced
1735 classes when they are defined.
1737 2003-03-17 Jackson Harper <jackson@latitudegeo.com>
1739 * MethodTable.cs: Add method to Check if all methods have been defined, set referenced methods properties
1741 * FieldTable.cs: Add method to check if all fields have been defined, set referenced fields properties
1743 * ClassTable.cs: Make sure all methods and fields are defined.
1745 2003-03-16 Jackson Harper <jackson@latitudegeo.com>
1747 * MethodTable.cs: Fire events when methods are defined and referenced
1749 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1751 * ClassTable.cs: Classes now store field tables
1752 * CodeGen.cs: Add methods to add fields and get field references
1754 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1756 * FieldTable.cs: New file, holds a classes fields
1758 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1760 * InstrTable.cs: Add FieldOp instructions
1762 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1764 * InstrTable.cs: Add ldstr instruction
1766 2003-03-15 Jackson Harper <jackson@latitudegeo.com>
1768 * CodeGen.cs: Add method to get method references.
1769 * MethodTable.cs: Complete GetReference method
1770 * InstrTable.cs: Add MethodOps (instructions that take a method ref param)
1772 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1774 * InstrTable.cs: Add TypeOps (instructions that take a type param)
1776 2003-03-14 Jackson Harper <jackson@latitudegeo.com>
1778 * InstrTable.cs: Add IntOps (instructions that take an integer param)
1780 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1782 * InstrTable.cs: Fix instructions that have dots in their name
1784 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1786 * CodeGen.cs: Add code buffer for il instructions when a new method is added.
1787 * InstrTable.cs: New file, this is a table of all the instructions (just simple
1788 instructions right now)
1790 2003-03-13 Jackson Harper <jackson@latitudegeo.com>
1792 * CodeGen.cs: Set current method when a new method is added.
1794 2003-03-12 Jackson Harper <jackson@latitudegeo.com>
1796 * ClassTable.cs: Add Method tables to Class tables, add method to get a
1797 class's method table.
1798 * CodeGen.cs: Add Method to add methods :p
1799 * MethodTable.cs: Add file, this class is used to add methods to a class.
1801 2003-03-11 Jackson Harper <jackson@latitudegeo.com>
1803 * TypeRef.cs: New file, used for pairing types and their names.
1805 2003-03-09 Jackson Harper <jackson@latitudegeo.com>
1807 * ExternTable.cs: Do not verify the existence of external types
1809 2003-03-08: Jackson Harper <jackson@latitudegeo.com>
1811 * CodeGen.cs: Add ExternTable property
1812 * ExternTable.cs: New file, this will is used for pulling
1813 types and methods from external assemblies.
1815 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1817 * ClassTable.cs, CodeGen.cs: Add methods to allow types to inherit from another type.
1819 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1821 * ClassTable.cs: Add method to check for undefined types
1823 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1825 * CodeGen.cs: Use class table for adding type definitions
1826 * ClassTable.cs: Return ClassDef when defining types
1828 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
1830 * ClassTable.cs: Add method for adding class definitions to the
1833 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
1835 * CodeGen.cs: Reconfigure to work with new PEAPI emission system
1837 2003-03-6 Jackson Harper <jackson@latitudegeo.com>
1839 * ClassTable.cs: Add file, this is a 'table' for storing classes
1840 * Location.cs: Add file, this will eventually be used for marking
1841 locations in IL files
1843 2003-02-10 Jackson Harper <jackson@latitudegeo.com>
1845 * Method.cs: Add method to set parameters,
1846 set parameters when defining type
1847 * Class.cs: Fix very silly bug in GetMethod method
1850 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
1852 * Class.cs: Resolve Methods before emiting
1853 * InstrBase.cs: Take a Class instead of CodeGen when emiting
1854 * Method.cs: Replace MethodInfo property with MethodBuilder property,
1856 * Instructions.cs: Take Class instead of CodeGen when emitting,
1857 get member methods from Class.
1858 * TypeManager.cs: Add set indexer
1860 2003-02-09 Jackson Harper <jackson@latitudegeo.com>
1862 * Instructions.cs: Use TypeManager to lookup types
1864 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1866 * TypeManager.cs: Fix error parsing type names
1867 * Method.cs: Display the name of types that can't be found
1869 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1871 * TypeManager.cs: Add file
1872 * CodeGen.cs: Add TypeManager attribute
1873 * InstrBase.cs: Take a CodeGen in Emit method
1874 * Instructions.cs: Take a CodeGen in Emit method, handle arg lists better
1875 * Method.cs: Handle local variables better
1878 2003-02-08 Jackson Harper <jackson@latitudegeo.com>
1880 * Method.cs: Add functionality to define local variables
1881 * Instructions.cs: Add newobj instruction, cleanup call instruction
1883 2003-02-03 Jackson Harper <jackson@latitudegeo.com>
1885 * AssemblyNameStore.cs: Added file
1887 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
1889 * Instructions.cs: Resolve parameters types in a more proper manner.
1891 2003-02-02 Jackson Harper <jackson@latitudegeo.com>
1893 * Class.cs: Don't try to emit methods if we don't have any
1894 * Class.cs: Test for entry point of methods, and set Assembly entrypoint
1895 * CodeGen.cs: Add method to set an Assemblys entry point
1896 * Method.cs: Add IsEntryPoint property
1897 * Method.cs Add MethodInfo property, and set this while Emiting
1898 * Instructions.cs: Add new InstrCall instruction