2004-03-09 Jackson Harper * CustomAttributeBuilder.cs: Add some argument checking. Handle default arguments properly. 2004-03-09 Sebastien Pouliot * AssemblyBuilder.cs: The strong name key file existance will now be checked in the current compilation directory AND in the assembly output directory. Fix bugzilla entry #55320. 2004-02-23 Martin Baulig * MethodBuilder.cs (MethodBuilder.SetGenericMethodSignature): Added MethodAttributes and CallingConventions arguments. 2004-02-02 Zoltan Varga * TypeBuilder.cs: Implement DefineUninitializedData and AddDeclarativeSecurity. 2004-01-27 Zoltan Varga * AssemblyBuilder.cs (SetCustomAttribute): Move the reading of the keyfile to the Save () method. 2004-01-26 Sebastien Pouliot * AssemblyBuilder.cs: Save will now strongname the assembly is (a) a StrongName is present and (b) the signature isn't delayed. 2004-01-24 David Sheldon * AssemblyBuilder.cs: Added override for GetFiles() that throws NotSupportedException. 2004-01-15 Zoltan Varga * AssemblyBuilder.cs (Save): Handle entry points with an int return type as well. * AssemblyBuilder.cs (Save): If the entry point is in a module, create a new entry point which calls the real one, since the entry point must be in the module which contains the manifest. * ModuleBuilder.cs (Save): Create the global type automatically if not already done. 2004-01-13 Zoltan Varga * AssemblyBuilder.cs (DefineVersionInfoResource): Set more version info properties. 2004-01-08 Zoltan Varga * CustomAttributeBuilder.cs (string_arg): New helper method. * AssemblyBuilder.cs (DefineVersionInfoResource): Implement. * AssemblyBuilder.cs (SetCustomAttribute): Use the new helper method. * AssemblyBuilder.cs (DefineUnmanagedResource): Implement. * AssemblyBuilder.cs (DefineIconResource): New internal method to support mcs. * TypeBuilder.cs (IsDefined): Implement this, since some corlib classes make calls to IsDefined. 2004-01-06 Zoltan Varga * AssemblyBuilder.cs: Fix warning. 2004-01-05 Zoltan Varga * AssemblyBuilder.cs (DefineVersionInfoResource): Implement. 2003-12-29 Ben Maurer * MethodBuilder.cs, ConstructorBuilder.cs: Override GetParameterCount. * ILGenerator.cs: Use GetParameterCount. 2003-12-20 Zoltan Varga * AssemblyBuilder.cs (AddModule): New internal method to support /addmodule in mcs. 2003-12-19 Zoltan Varga * AssemblyBuilder.cs: New internal property to support /target:module in mcs. 2003-12-18 Zoltan Varga * ILGenerator.cs: Applied patch from Ben Maurer (bmaurer@users.sourceforge.net). Allocate arrays holding label data lazily and reduce their size. 2003-12-17 Zoltan Varga * AssemblyBuilder.cs (MonoResource): New 'offset' field used by the runtime. * ModuleBuilder: Implement DefineResource. 2003-12-15 Zoltan Varga * AssemblyBuilder.cs (RefEmitPermissionSet): New helper structure. * MethodBuilder.cs (AddDeclarativeSecurity): Implement. * ConstructorBuilder.cs (AddDeclarativeSecurity): Ditto. 2003-12-10 Zoltan Varga * MethodBuilder.cs: Add stubs for missing methods. * TypeBuilder.cs (GetEvents): Add new override. * ModuleBuilder.cs: Implement some missing methods, add stubs for others. * AssemblyBuilder.cs (GetFiles): Get rid of unneccessary override. * AssemblyBuilder.cs (ImageRuntimeVersion): Add override to keep signature compatibility with MS.NET. * TypeBuilder.cs (MemberType): Get rid of unneccessary override. 2003-12-08 Martin Baulig * TypeBuilder.cs (TypeBuilder.MonoGenericParam): Removed; use the new `MonoGenericParam' class instead (in S.R/MonoGenericInst.cs). 2003-12-08 Zoltan Varga * ModuleBuilder.cs: Double the size of the types array during insertion do avoid excessive memory allocation and copying. Track the number of types in a separate variable. * TypeBuilder.cs: Same for the 'fields' and 'methods' arrays. 2003-12-03 Zoltan Varga * ModuleBuilder.cs (DefinePInvokeMethod): Implement. * ModuleBuilder.cs (DefineGlobalMethod): Implement the Net 1.2 variants. 2003-11-28 Dick Porter * ModuleBuilder.cs: Do string compares with the Invariant culture. 2003-11-28 Zoltan Varga * AssemblyBuilder.cs (SetCustomAttribute): Implement automatic generation of build and revision numbers. Fixes #46492. 2003-11-25 Zoltan Varga * TypeBuilder.cs: Implement GetField. 2003-11-24 Zoltan Varga * DynamicMethod.cs: New class. * ILGenerator.cs MethodBuilder.cs ConstructorBuilder.cs: Retrieve tokens from a token generator object instead of from the ModuleBuilder, to support the implementation of DynamicMethod. Also get rid of the unused 'mbuilder' field. * ModuleBuilder.cs: Create a token generator object which can be passed to ILGenerator. * LocalBuilder.cs ILGenerator.cs: Get rid of 'module' field, obtain needed objects from the ilgen object instead. 2003-11-21 Zoltan Varga * TypeBuilder.cs FieldBuilder.cs MethodBuilder.cs ConstructorBuilder.cs: Add support for custom modifiers from NET 1.2. * ILGenerator.cs: Remove unused abuilder member. 2003-11-19 Andreas Nahr * OpCodes.cs: Remove Boxval for v1.1+ 2003-11-19 Andreas Nahr * OpCodes.cs: Small rearrange to fix csc compiler warning about obsolete member used 2003-11-12 Zoltan Varga * AssemblyBuilderAccess.cs PackingSize: Add [Flags]. * AssemblyBuilder.cs (DefineDynamicModule): Make internal method private. * AssemblyBuilder.cs (Save): Write out the main module at the end. 2003-11-06 Zoltan Varga * ConstructorBuilder.cs (.ctor): Automatically add RTSpecialName flag as MS does. 2003-11-06 Martin Baulig * ModuleBuilder.cs (ModuleBuilder.Save): Call `build_metadata' before writing the symbol file. 2003-11-06 Zoltan Varga * AssemblyBuilder.cs (.ctor): Initialize the 'dir' field to something sensible. * AssemblyBuilder.cs (Save): Set 'created' flag. * AssemblyBuilder.cs (get_next_table_index): Moved to ModuleBuilder, since table indexes are per-module. 2003-11-03 Zoltan Varga * TypeBuilder.cs (DefineDefaultConstructor): Pass an array instead of null to DefineConstructor, to avoid NullReferenceExceptions in the binder code. * AssemblyBuilder.cs ModuleBuilder.cs ILGenerator.cs: Move getUSIndex and getToken methods, and the associated icalls to ModuleBuilder, since tokens are per-module. * AssemblyBuilder.cs ModuleBuilder.cs: Partially revert the previous patch, since having the 'is_main' field is useful in the unmanaged code. * AssemblyBuilder.cs ModuleBuilder.cs: Move the metadata creation and file creation logic to ModuleBuilder:Save (), since this needs to be done for every module. Also move the corresponding icalls to ModuleBuilder. 2003-11-03 Zoltan Varga * AssemblyBuilder.cs ModuleBuilder.cs: First steps toward a fix for #48700 (proper module support in Ref.Emit). Remove is_main field from ModuleBuilder and add a mainModule field to AssemblyBuilder instead. This is neccesary, since the main module is determined during the Save () call: the module with the same file name as the assembly is the main module. Also create a default main module, if one is not existing. 2003-11-03 Martin Baulig * OpCodes.cs: Added Ldelem_Any, Stelem_Any and Unbox_Any from .NET 1.2. 2003-10-18 Sebastien Pouliot * AssemblyBuilder.cs (SetCustomAttribute): Changed PK extraction to use Mono.Security.StrongName (#49785). 2003-10-18 Zoltan Varga * AssemblyBuilder.cs (SetCustomAttribute): Extract the public key from the keyfile. 2003-10-17 Zoltan Varga * AssemblyBuilder.cs (SetCustomAttribute): Ignore empty keyfile name. * AssemblyBuilder.cs: Moved loading of the public key file into managed code from reflection.c. * AssemblyBuilder.cs: Set cultureInfo and version from the AssemblyName passed to the constructor. 2003-10-13 Martin Baulig * MethodBuilder.cs (MethodBuilder): Added `TypeBuilder.MonoGenericParam[] generic_params' field. (DefineGenericParameter, SetGenericMethodSignature): New public methods. * TypeBuilder.cs (DefineGenericMethod): New public method. 2003-10-13 Zoltan Varga * OpCode.cs: Fix Value property. Fixes #49328. 2003-10-03 Zoltan Varga * TypeBuilder.cs (CreateType): Fire TypeResolve events for unfinished nested value types. Fixes #47022. 2003-09-29 Zoltan Varga * TypeBuilder.cs: Really fix #48695. Sat Sep 27 16:17:08 CEST 2003 Paolo Molaro * ILGenerator.cs: instance fields are loaded from this. 2003-09-26 Zoltan Varga * TypeBuilder.cs (DefineDefaultConstructor): Make this work on types without a parent. Fixes #48695. 2003-09-17 Martin Baulig * TypeBuilder.cs (TypeBuilder.CreateType): Don't append the type parameters to the type name; ie. use `Stack' instead of `Stack'. 2003-09-06 Martin Baulig * TypeBuilder.cs (TypeBuilder.IsUnboundGenericParameter): Implemented. 2003-09-04 Martin Baulig * TypeBuilder.cs (TypeBuilder.MonoGenericParam): Make this nested class internal, not protected. 2003-08-29 Martin Baulig * TypeBuilder.cs (TypeBuilder.DefineGenericParameter): New public method. We can now create generic types. (TypeBuilder.GetGenericTypeDefinition): Override this; call the `setup_internal_class' interncall before calling our base impl. Sat Aug 2 13:04:55 BST 2003 Malte Hildingson * ILGenerator.cs: Emission of doubles now utilise the Double.AssertEndianity icall to assert double word endianity on ARM. 2003-07-25 Duncan Mak * OpCodes.cs (Boxval): Marked with ObsoleteAttribute. 2003-07-24 Miguel de Icaza * TypeBuilder.cs: Added generics stubs. * EnumBuilder.cs: Added generics stubs, changed bracing style for routines. 2003-07-23 Duncan Mak * SignatureHelper.cs: This class does not have the SerializableAttribute. 2003-07-11 Zoltan Varga * AssemblyBuilder.cs: Added argument checking to all methods according to the MSDN docs. Also marked DefineUnmanagedResource and its friends as not implemented. * ModuleBuilder.cs: Added new property FileName used by AssemblyBuilder. * ModuleBuilder.cs AssemblyBuilder.cs: Implemented IsTransient (). 2003-06-15 Zoltan Varga * EventBuilder.cs: Add argument checking to methods. Thu Jun 5 20:18:55 CEST 2003 Paolo Molaro * AssemblyBuilder.cs: implemented DefineResource (). Thu Jun 5 12:36:34 CEST 2003 Paolo Molaro * OpCode.cs: implemented Equals/GetHashCode. Tue Jun 3 11:14:51 CEST 2003 Paolo Molaro * ILGenerator.cs, OpCode.cs: optimize opcode space usage. Tue Jun 3 11:13:22 CEST 2003 Paolo Molaro * UnmanagedMarshal.cs: add ability to define custom attributes (the MS runtime doesn't support this). 2003-05-30 Zoltan Varga * TypeBuilder.cs: Implement DefineTypeInitializer. 2003-05-21 Zoltan Varga * ModuleBuilder.cs: - Implement DefineInitializedData in terms of DefineUninitializedData - Name the types of global fields $ArrayType$ to cut back on the number of types created - Add argument checking 2003-05-19 Zoltan Varga * AssemblyBuilder.cs: Implement GetDynamicModule. "Implement" various methods not supported under MS.NET. 2003-05-18 Martin Baulig * AssemblyBuilder.cs (corlib_void_type): New internal field. (SetCorlibTypeBuilders): Added overloaded version which takes 4 arguments to set the `corlib_void_type'. * TypeBuilder.cs: Use `pmodule.assemblyb.corlib_void_type' instead of `typeof (void)' to make this work when compiling corlib. Thu May 15 19:16:54 CEST 2003 Paolo Molaro * MethodBuilder.cs: off by one in CreateMethodBody(). * TypeBuilder.cs: if the return type for a method is null, use void. 2003-04-28 Miguel de Icaza * MethodBuilder.cs: Mono allows the parameter position to be zero to indicate the "returns:" attribute. 2003-04-20 Miguel de Icaza * ILGenerator.cs (EmitCall): Implement. Flag a few unimplemented methods with MonoTODO, make coding style for method definitions Mono consistent. 2003-04-17 Zoltan Varga * ILGenerator.cs: Implement EmitWriteLine methods. * TypeBuilder.cs (CreateType): Avoid creating a default constructor for the global type. 2003-04-15 Miguel de Icaza * TypeBuilder.cs (DefineDefaultConstructor): Make it generate code by default for a default constructor. This is what the MS runtime does. The PythonNet code expected this. (TypeBuilder.GetConstructorImpl): Implement this. (TypeBuilder.CreateType): If there are no constructors defined, we create one. Tue Apr 15 13:50:41 CEST 2003 Paolo Molaro * ModuleBuilder.cs, TypeBuilder.cs: set nesting_type before calling setup_internal_class (). 2003-03-27 Zoltan Varga * AssemblyBuilder.cs: Added 'access' member, which is needed by the runtime. 2003-03-26 Zoltan Varga * ILGenerator.cs: Implemented ThrowException. 2003-03-10 Zoltan Varga * ILGenerator.cs: Propagate maxstack info along branches. 2003-03-06 Zoltan Varga * ILGenerator.cs (Emit): Do not pop the arguments off the stack for ldftn etc. Fixes bug #39196. 2003-02-28 Zoltan Varga * ILGenerator.cs (Emit): Add fixup for already created methods and fields. Do not add fixup for types since their table index do not change any more. 2003-02-26 Zoltan Varga * TypeBuilder.cs (DefineInitializedData): Removed unnecessary assignments. * ModuleBuilder.cs (DefineInitializedData): Do not call TypeBuilder::DefineInitializedData since that would mean defining a nested type of the global type, which is wrong. Instead define a new public type as MS does. * ModuleBuilder.cs (DefineUninitializedData): Ditto. Thu Feb 13 18:40:52 CET 2003 Paolo Molaro * ModuleBuilder.cs: add the basic initialization call. 2003-02-13 Zoltan Varga * AssemblyBuilder.cs: Added basic error checking to some methods according to the MSDN docs. 2003-02-10 Zoltan Varga * ConstructorBuilder.cs: - Added basic error checking to all methods according to the MSDN docs. - modified a lot of methods to throw NotSupportedException, to comply with MS.NET. 2003-02-09 Zoltan Varga * TypeBuilder.cs: - Added basic error checking to all methods according to the MSDN docs. - fixed AssemblyQualifiedName. - implemented 'Size'. - modified a lot of methods to throw NotSupportedException, to comply with MS.NET. - changes tested by running a full bootstrap. 2003-02-09 Martin Baulig * AssemblyBuilder.cs (AssemblyBuilder.methods): Removed. This was a hack for the symbol writer which is no longer needed. 2003-02-09 Martin Baulig * IMonoSymbolWriter.cs (DefineNamespace, OpenMethod): New methods. 2003-02-09 Martin Baulig * IMonoSymbolWriter.cs (MarkSequencePoint): New method which takes just the required arguments as scalars, not arrays. * ILGenerator.cs (ILGenerator.MarkSequencePoint): Use that new interface method; unnecessarily creating such a large number of arrays is both slow and too memory consuming. 2003-02-08 Zoltan Varga * MethodBuilder.cs: Added error checking to methods so they conform to MSDN docs. Implemented 'GetModule' and 'CallingConvention' members. Some other tweaks to improve compatibility with MS .NET. * TypeBuilder.cs: Added 'is_created' property which will be used for checking 'type is already created' errors. 2003-02-07 Martin Baulig * ModuleBuilder.cs (.ctor): Added `bool IsMainModule' argument. (Save): New internal method; creates the module's symbol file if we're compiling with debugging information. * AssemblyBuilder.cs (EmbedResource): Added internal overloaded version of this method which takes a `byte[] blob' instead of a file. (DefineDynamicMethod): If this is the first module, tell the ModuleBuilder that this is the main module. (Save): Call a new interncall `build_metadata' to create the final metadata and save all the symbol files before creating the actual output. * IMonoSymbolWriter.cs: New public class; it is in the namespace Mono.CSharp.Debugger. The Mono symbol writer implements this interface. 2003-02-04 Zoltan Varga * AssemblyBuilder.cs: added GetToken (SignatureHelper). * ILGenerator.cs: implemented EmitCalli() methods * SignatureHelper.cs: implemented GetMethoSigHelper() methods. 2003-01-30 Gonzalo Paniagua Javier * MethodBuilder.cs: GetBaseDefinition () returns this. Mon Jan 27 17:07:38 CET 2003 Paolo Molaro * CustomAttributeBuilder.cs, FieldBuilder.cs: applied (reformatted) patch from "Jerome Laban" to fix ByValStr and ByValArray encodings. 2003-01-27 Gonzalo Paniagua Javier * AssemblyBuilder.cs: fixed compilation with csc. 2003-01-26 Miguel de Icaza * AssemblyBuilder.cs (Save): Set the executable bit at the end. This uses a non-official enumeration value to call SetFileAttributes. 2003-01-17 Zoltan Varga * MethodBuilder.cs ConstructorBuilder.cs: modify GetParameters() so it returns information even when the app did not use DefineParameter() to define the parameters. * ConstructorBuilder.cs (ctor): allways define SpecialName attribute for constructors as done by MS. Mon Jan 13 11:37:14 CET 2003 Paolo Molaro * TypeBuilder.cs, ModuleBuilder.cs: better type name cache. 2003-01-10 Zoltan Varga * ILGenerator.cs: Implemented EmitWriteLine(string). * TypeBuilder.cs (DefineInitializedData): Call DefineNestedType() instead of DefineType() so the auxiliary types do not pollute the global namespace. This is consistent with the behaviour of MS .NET. Fri Jan 10 16:03:30 CET 2003 Paolo Molaro * ILGenerator.cs, MethodBuilder.cs, TypeBuilder.cs, ConstructorBuilder.cs: some tweaks to reduce memory usage. Thu Jan 2 18:46:09 CET 2003 Paolo Molaro * ModuleBuilder.cs, TypeBuilder.cs: support global fields and methods. Thu Dec 19 00:06:57 CET 2002 Paolo Molaro * AssemblyBuilder.cs: remove duplicated user string entries. 2002-12-11 Zoltan Varga * FieldBuilder.cs: added 'handle' field which is needed by some new code in reflection.c. 2002-12-04 Gonzalo Paniagua Javier * TypeBuilder.cs: implemented GetInterfaceMap () when the Type has been created. Fri Nov 8 14:53:03 CET 2002 Paolo Molaro * ILGenerator.cs: account for the exception object being passed to the catch handler to calc max_stack. 2002-09-21 Martin Baulig * ModuleBuilder.cs (ModuleBuilder.symbol_writer): Make this field internal, not private. (ModuleBuilder.SymWriter_DefineLocalVariable): Removed. * LocalBuilder.cs (LocalBuilder.SetLocalSymInfo): Use the ISymbolWriter's DefineLocalVariable() method instead of the IMonoSymbolWriter hack. Mon Sep 16 19:02:58 CEST 2002 Paolo Molaro * AssemblyBuilder.c: special case some custom attributes. 2002-09-12 Dick Porter * TypeBuilder.cs: Say _which_ Type has already been created 2002-09-11 Miguel de Icaza * ModuleBuilder.cs (GetTypes): Implement. Tue Sep 10 12:12:51 CEST 2002 Paolo Molaro * ConstructorBuilder.cs: added a field to hold the handle. Mon Sep 9 17:31:12 CEST 2002 Paolo Molaro * TypeBuilder.cs: prepare for the real CreateType implementation. Tue Aug 27 16:57:18 CEST 2002 Paolo Molaro * TypeBuilder.cs: remove duplicate code and fix named field reading in custom attr. 2002-08-24 Gonzalo Paniagua Javier * TypeBuilder.cs: UnspecifiedTypeSize is 0. Wed Aug 14 17:38:41 CEST 2002 Paolo Molaro * TypeBuilder.cs: ReflectedType and CreateType fixes. Thu Aug 8 10:25:51 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: added API to embed managed resources. 2002-08-03 Martin Baulig * TypeBuilder.cs (TypeBuilder.DeclaringType): Implemented. Thu Jul 25 13:57:46 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: support linking external resources. 2002-07-19 Martin Baulig * ILGenerator.cs (Emit (OpCode, LocalBuilder)): Throw an exception when trying to emit a local that was defined in a different ILGenerator. * LocalBuilder.cs (LocalBuilder): Added `ILGenetator' argument to the constructor. Tue Jul 16 19:32:08 CEST 2002 Paolo Molaro * ILGenerator.cs: stack size check fix. Sat Jul 13 17:30:51 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: add also the enum_type for compiling corlib. * TypeBuilder.cs: complete IsValueType. Sat Jul 13 15:08:12 CEST 2002 Paolo Molaro * TypeBuilder.cs: better IsValueType. 2002-07-13 Gonzalo Paniagua Javier * CustomAttributeBuilder.cs: removed compile warning. Fri Jul 12 11:34:58 CEST 2002 Paolo Molaro * ILGenerator.cs: fixup typebuilder tokens as well. Tue Jul 9 19:03:03 CEST 2002 Paolo Molaro * TypeBuilder.cs: special case SerializarionAttribute. Tweaks to get correct code in corlib. 2002-07-06 Miguel de Icaza * ILGenerator.cs (ILGenerator.Emit): For doubles and floats, swap the bytes on big endian systems. 2002-07-03 Martin Baulig * AssemblyBuilder.cs (corlib_object_type, corlib_value_type): Moved these fields up after the last entry in MonoReflectionAssemblyBuilder in reflection.h. * TypeBuilder.cs (IsValueTypeImpl): Use the AssemblyBuilder's `corlib_value_type' instead of `typeof (System.ValueType)'. (DefineNestedType): Use the AssemblyBuilder's `corlib_object_type' instead of `typeof (object)'. 2002-07-02 Martin Baulig * AssemblyBuilder.cs (corlib_object_type, corlib_value_type): New internal fields. When compiling corlib, they point to the newly created System.Object and System.ValueType types. (SetCorlibTypeBuilders): New public function. This will be dynamically called from MCS when compiling corlib. * TypeBuilder.cs (DefineInitializedData): Use the AssemblyBuilder's `corlib_value_type' as parent type instead of `typeof (System.ValueType)' to make it work when compiling corlib. * ModuleBuilder.cs (assemblyb): Made this field internal, not private. Tue Jul 2 18:34:49 CEST 2002 Paolo Molaro * TypeBuilder.cs: implemented AssemblyQualifiedName. * MethodBuilder.cs, ConstructorBuilder.cs: special case custom attr. Mon Jul 1 16:17:29 CEST 2002 Paolo Molaro * TypeBuilder.cs: implemented AddInterfaceImplementation(). 2002-06-28 Martin Baulig * MethodBuilder.cs (GetParameters): Return all parameters, not all but the last one. 2002-06-27 Martin Baulig * ConstructorBuilder.cs (GetParameters): Implemented. Mon Jun 17 14:55:43 CEST 2002 Paolo Molaro * ModuleBuilder.cs, TypeBuilder.cs: fixes for nested types handling. Fri Jun 14 16:21:54 CEST 2002 Paolo Molaro * CustomAttributeBuilder.cs: added custom attribute related internal helper methods. * FieldBuilder.cs, ParameterBuilder.cs: handle MarshalAs attribute. * UnmanagedMarshal.cs: implemented. Mon Jun 10 18:58:18 CEST 2002 Paolo Molaro * PropertyBuilder.cs: implemented ReflectedType and DeclaringType properties. 2002-06-07 Martin Baulig * TypeBuilder.cs (TypeBuilder): Added `PackingSize packing_size' and `int type_size' fields to the constructor. (DefineNestedType): Pass packing_size and type_size to the constructor. * ModuleBuilder.cs (DefineType): Pass the packing_size and type_size fields to the TypeBuilder's constructor. 2002-06-07 Martin Baulig * TypeBuilder.cs (DefineNestedType): There is no overload for this method which takes 5 args in the specs, removed it. Fri Jun 7 17:04:06 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: updates for PE/COFF rewrite. 2002-05-30 Martin Baulig * AssemblyBuilder.cs (methods): Made this internal and don't initialize it. It will be initialized by the ModuleBuilder's GetSymbolWriter() method. (get_next_table_index): Only store the method in the `methods' array if it's not null. * ModuleBuilder.cs (GetSymbolWriter): Initialize the AssemblyBuilder's `methods' field if necessary and pass it as third argument to the symbol writer's constructor. 2002-05-25 Martin Baulig * TypeBuilder.cs (TypeToken): Implemented. 2002-05-24 Martin Baulig * ModuleBuilder.cs (symwriter_define_local): New private variable. (GetSymbolWriter): Look for a custom version of "DefineLocalVariable" and store it in `symwriter_define_local'. (SymWriter_DefineLocalVariable): New internal method to call the symbol writer's custom DefineLocalVariable() method. It is safe to call this method if there's no symbol writer. * LocalBuilder.cs (SetLocalSymInfo): Use the MethodBuilder'snew SymWriter_DefineLocalVariable(). * MethodBuilder.cs (GetParameters): Implemented. 2002-05-22 Martin Baulig * ModuleBuilder.cs (GetSymbolWriter): Pass the this pointer to the symbol writer's constructor. 2002-05-22 Martin Baulig * AssemblyBuilder.cs (methods): New field. (get_next_table_index): Record all methods and constructors (table 0x06) in the `methods' array. This is read by the Mono.CSharp.Debugger.MonoSymbolWriter::get_method interncall to get the MethodBuilder / ConstructorBuilder back from the token. * *Builder.cs (get_next_table_index): Added `object obj' argument. (): pass the this pointer to get_next_table_index (). 2002-05-20 Martin Baulig * TypeBuilder.cs (DefineField): Call the new `create_internal_class' interncall after adding the first field. This is used when creating enum types to set `klass->enum_basetype'. Thu May 16 16:09:51 CEST 2002 Paolo Molaro * TypeBuilder.cs: complete special acse support for CharSet, Size and Pack named args in StructLayout attribute. Tue May 14 17:13:48 CEST 2002 Paolo Molaro * MethodBuilder.cs: revert change in accessibility of GetILGenerator(int). Tue May 14 13:31:17 CEST 2002 Paolo Molaro * FieldBuilder.cs, ParameterBuilder.cs: more special-casing of attributes. Fri May 10 20:57:27 CEST 2002 Paolo Molaro * CustomAttributeBuilder.cs: expose internal data for use in reflection. * FieldBuilder.cs, TypeBuilder.cs: special case FieldOffset and StructLayout attributes. Fri May 10 16:30:57 CEST 2002 Paolo Molaro * MethodBuilder.cs, ConstructorBuilder.cs: implemented InitLocals property. 2002-04-26 Martin Baulig * ModuleBuilder.cs (DefineDocument): Implemented. Tue Apr 16 13:02:28 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: pad output file to file alignment. * FieldBuilder.cs: ReflectedType. * ModuleBuilder.cs: added guid generation and array method creation. * MonoArrayMethod.cs: array method support code. Wed Apr 10 12:57:31 CEST 2002 Paolo Molaro * ILGenerator.cs: use a stack to keep track of exception blocks. Mon Apr 8 06:19:01 2002 Piers Haken * ILGenerator.cs: added LabelField.label_base to allow for arbitrary offsets (for switch statement) Fri Apr 5 15:41:19 CEST 2002 Paolo Molaro * AssemblyBuilder.cs: simpler protocol wih the runtime to get the assembly data. Tue Mar 26 20:10:24 CET 2002 Paolo Molaro * AssemblyBuilder.cs: use FileMode.Create. * ILGenerator.cs: optimize localbuilder related opcodes. Track parameters to adjust maxstack. * LocalBuilder.cS: use unsigned for position. 2002-03-23 Miguel de Icaza * LocalBuilder.cs: Drop the symbol_writer as LocalBuilder fields. Do this lazily in SetLocalSymInfo. 2002-03-24 Martin Baulig * ModuleBuilder.cs (GetSymbolWriter): The MonoSymbolWriter's constructor now takes a `string assembly_filename' argument, pass it our fully qualified assembly name. 2002-03-24 Nick Drochak * ILGenerator.cs: Use #if-#endif instead of if(false){} to disable code. This way there is no compiler warning. * TypeBuilder.cs: Removed the returns that came after the throws. This removes a few more compiler warnings. Also marked with MonoTODO all places where we throw NotImplemented exceptions. 2002-03-23 Martin Baulig * SignatureHelper.cs (GetFieldSignatureHelper, GetLocalSignatureHelper): Implemented. * LocalBuilder.cs (LocalBuilder): This internal constructor now takes a ModuleBuilder argument instead of a ISymbolWriter one. (SetLocalSymInfo): Create and pass type signature to DefineLocalVariable. 2002-03-23 Martin Baulig * ILGenerator.cs (BeginScope, EndScope): Implemented. 2002-03-20 Martin Baulig * ModuleBuilder.cs (GetSymbolWriter): New internal function. Dynamically loads the default symbol writer, catch all possible exceptions and return null on failure. (ModuleBuilder): Added `bool emitSymbolInfo' argument to this internal constructor; if set, call GetSymbolWriter (). (GetSymWriter): Implemented. * LocalBuilder.cs (LocalBuilder): Added ISymbolWriter argument to this internal method. (SetLocalSymInfo): Implemented, call ISymbolWriter.DefineLocalVariable () if the symbol writer is not null. * ILGenerator.cs (ILGenerator): Call ModuleBuilder.GetSymWriter () to get and store the symbol writer. (DeclareLocal): Pass the symbol writer to LocalBuilder's constructor. (MarkSequencePoint): Implemented, call ISymbolWriter.DefineSequencePoints () if the symbol writer is not null. * AssemblyBuilder.cs (DefineDynamicModule): Pass the `bool emitSymbolInfo' to ModuleBuilder's constructor. Sat Mar 16 19:11:47 CET 2002 Paolo Molaro * ModuleBuilder.cs: handle modified types correctly. Thu Mar 7 17:10:42 CET 2002 Paolo Molaro * AssemblyBuilder.cs: allow saving bigger assemblies. * ILGenerator.cs: add fixup table for fields and methods, since at the end of the compile they may end up with a different table index. * ModuleBuilder.cs: add cache for type names to speed up the type lookups from the compiler. * TypeBuilder.cs: GetInterfaces () returns only interfaces in the current type, not in parents (the docs are wrong). Tue Mar 5 18:09:34 CET 2002 Paolo Molaro * EventBuilder.cs: implemented. * TypeBuilder.cs: implemented DefineEvent() method and UnderlyingSystemType property. Mon Mar 4 20:34:52 CET 2002 Paolo Molaro * ILGenerator.cs: make enough room in the byte array for string tokens. * TypeBuilder.cs: fixed GetInterfaces(). Mon Mar 4 11:30:40 CET 2002 Paolo Molaro * TypeBuilder.cs: implemented GetConstructors(), GetFields(), GetMethods(), GetProperties(). Thu Feb 28 19:15:10 CET 2002 Paolo Molaro * AssemblyBuilder.cs: call into the runtime to init some basic assembly stuff. Reserve slot 1 of typedef table for .. * ModuleBuilder.cs: call into the runtime if we need to create a modief type, such as arrays, byref etc. * TypeBuilder.cs: call into the runtime to create the MonoClass representation for the type. Throw exceptions with not implemented stuff. Wed Feb 27 18:48:47 CET 2002 Paolo Molaro * ILGenerator.cs: fix nested exception blocks. Wed Feb 20 22:30:49 CET 2002 Paolo Molaro * AssemblyBuilder.cs: upped compiled assembly size limit. Implemented SetCustomAttribute () methods. * CustomAttributeBuilder.cs: implemented the needed constructor stuff. * Cosntructorbuilder.cs, EnumBuilder.cs, FieldBuilder.cs, MethodBuilder.cs, ModuleBuilder.cs, ParameterBuilder.cs, PropertyBuilder.cs, TypeBuilder.cs: Implemented SetCustomAttribute () methods. Wed Feb 20 14:54:01 CET 2002 Paolo Molaro * AssemblyBuilder.cs: add SetCustomAttribute () to keep the compiler going. Fri Feb 15 18:15:04 CET 2002 Paolo Molaro * ILGenerator.cs: finally block support and fixes. Thu Feb 14 18:55:52 CET 2002 Paolo Molaro * FieldBuilder.cs: Add SetRVAData(). * ILGenerator.cs: speed up code array growth. * TypeBuilder.cs: fix IsValueTypeImpl(). Add class_size member. Implement DefineInitializedData(). Tue Jan 22 23:01:11 CET 2002 Paolo Molaro * EnumBuilder.cs, TypeBuilder.cs: updates for changes in Type.cs. * ModuleBuilder.cs: fix lookup of nested types. Tue Jan 15 22:46:21 CET 2002 Paolo Molaro * ILGenerator.cs: implement some of the exception support methods. Mon Jan 14 17:07:32 CET 2002 Paolo Molaro * ModulerBuilder.cs: search also for subtypes in GetTypes(). * TypeBuilder.cs: bugfix in FullName. Implemented DefineNestedType(). Fri Jan 11 19:00:29 CET 2002 Paolo Molaro * MethodBuilder.cs, ConstructorBuilder.cs: save parameter info. Thu Jan 10 21:07:54 CET 2002 Paolo Molaro * ILGenerator.cs: handle type tokens (used for box opcode). Wed Jan 9 19:37:55 CET 2002 Paolo Molaro * ILGenerator.cs: emit float and doubles. * ModuleBuilder.cs: off-by-one error fix and GetType() implementations. * TypeBuilder.cs: AttributesImpl added. * UnmanagedMarshal.cs: stubbed out class. Sat Jan 5 15:59:05 CET 2002 Paolo Molaro * ILGenerator.cs: fix emission of two-bytes opcodes. Missing slot for locals array. Throw exceptions on unimplemented methods. * OpCode.cs: add a comment: the Value property is useless. * OpCodes.cs: fix name of tail opcode (Tail -> Tailcall). 2002-01-05 Ravi Pratap * ConstructorBuilder.cs : Use the MonoTODO attribute. * ILGenerator.cs, Label.cs, MethodBuilder.cs, ModuleBuilder.cs, ParameterBuilder.cs, TypeBuilder.cs : Ditto. Thu Jan 3 23:26:15 CET 2002 Paolo Molaro * ILGenerator.cs: typo fix. Mon Dec 24 17:21:30 CET 2001 Paolo Molaro * TypeBuilder.cs: added DefineMethodOverride(). * MethodBuilder.cs: add override_method member and setter. Mon Nov 19 13:58:01 CET 2001 Paolo Molaro * AssemblyBuilder.cs: add method to register a string in the "#US" stream. * EnumBuilder.cs, SignatureHelper.cs: added stubs. * ILGenerator.cs: more stuff implemented. * LocalBuilder.cs: keep track of local var index. Thu Nov 15 18:11:23 CET 2001 Paolo Molaro * ConstructorBuilder.cs: implement the interesting methods. * ILGenerator.cs: adapt for use with both a MethodBuilder and a ConstructorBuilder. * MethodBuilder.cs: add ImplAttributes. * ParameterBuilder.cs: adapt for ConstructorBuilder. * TypeBuilder.cs: add constructors handling. Wed Nov 14 17:01:45 CET 2001 Paolo Molaro * ConstructorBuilder.cs: added missing stubs and some implementation. * CustomAttributeBuilder.cs: added. * EventBuilder.cs: added. * FieldBuilder.cs: updates. * MethodBuilder.cs: stuff to implement P/Invoke methods. * ModuleBuilder.cs: added GetArrayMethod() stub. * ParameterBuilder.cs, PropertyBuilder.cs: updates. * TypeBuilder.cs: updates and stubs. 2001-11-10 Sean MacIsaac * TypeBuilder.cs: Added implementation for TypeHandle. Tue Nov 6 09:13:45 CET 2001 Paolo Molaro * AssemblyBuilder.cs: define an internal constructor. 2001-10-07 Miguel de Icaza * AssemblyBuilder.cs: Reformatted. Added override keywords to those that needed them. Removed methods that we do not override, but just inherit Tue Sep 25 16:53:08 CEST 2001 Paolo Molaro * TypeBuilder.cs, ConstructorBuilder.cs, ModuleBuilder.cs: added.