* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / corlib / System.Runtime.Serialization.Formatters.Binary / CodeGenerator.cs
index 59a47526531643f21c8667952b3b6aea01d71e37..92c956733d3e40e9ef40e4d53f7362f45beb445f 100644 (file)
@@ -44,23 +44,18 @@ namespace System.Runtime.Serialization.Formatters.Binary
                
                static ModuleBuilder _module;
                
-               static public Type GenerateMetadataType (Type type, StreamingContext context)
+               static CodeGenerator ()
                {
-                       if (_module == null)
-                       {
-                               lock (typeof (ObjectWriter))
-                               {
-                                       if (_module == null) {
-                                               AppDomain myDomain = System.Threading.Thread.GetDomain();
-                                               AssemblyName myAsmName = new AssemblyName();
-                                               myAsmName.Name = "__MetadataTypes";
-                                          
-                                               AssemblyBuilder myAsmBuilder = myDomain.DefineInternalDynamicAssembly (myAsmName, AssemblyBuilderAccess.Run);
-                                               _module = myAsmBuilder.DefineDynamicModule("__MetadataTypesModule", true);
-                                       }
-                               }
-                       }
-                       
+                       AppDomain myDomain = System.Threading.Thread.GetDomain();
+                       AssemblyName myAsmName = new AssemblyName();
+                       myAsmName.Name = "__MetadataTypes";
+                  
+                       AssemblyBuilder myAsmBuilder = myDomain.DefineInternalDynamicAssembly (myAsmName, AssemblyBuilderAccess.Run);
+                       _module = myAsmBuilder.DefineDynamicModule("__MetadataTypesModule", false);
+               }
+               
+               static public Type GenerateMetadataType (Type type, StreamingContext context)
+               {               
                        string name = type.Name + "__TypeMetadata";
                        string sufix = "";
                        int n = 0;
@@ -82,7 +77,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        
                        parameters = new Type[0];
 
-               ConstructorBuilder ctor = typeBuilder.DefineConstructor (MethodAttributes.Public, CallingConventions.Standard, parameters);
+                       ConstructorBuilder ctor = typeBuilder.DefineConstructor (MethodAttributes.Public, CallingConventions.Standard, parameters);
                        ConstructorInfo baseCtor = typeof(ClrTypeMetadata).GetConstructor (new Type[] { typeof(Type) });
                        gen = ctor.GetILGenerator();
 
@@ -135,11 +130,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        {
                                // EMIT writer.Write (name);
                                gen.Emit (OpCodes.Ldarg_2);
-                               
-                               if (field.DeclaringType == type)
-                                       gen.Emit (OpCodes.Ldstr, field.Name);
-                               else
-                                       gen.Emit (OpCodes.Ldstr, field.DeclaringType.Name + "+" + field.Name);
+                               gen.Emit (OpCodes.Ldstr, field.Name);
                                EmitWrite (gen, typeof(string));
                        }