+2003-12-30 Ben Maurer <bmaurer@users.sourceforge.net>
+
+ * class.cs, rootcontext.cs, typmanager.cs: do not
+ leak pointers.
+
2003-12-28 Ben Maurer <bmaurer@users.sourceforge.net>
* codegen.cs: remove stack for the ec flow branching.
public override void CloseType ()
{
+ if (Created)
+ return;
+
try {
- if (!Created){
- Created = true;
- TypeBuilder.CreateType ();
- }
+ Created = true;
+ TypeBuilder.CreateType ();
} catch (TypeLoadException){
//
// This is fine, the code still created the type
if (Delegates != null)
foreach (Delegate d in Delegates)
d.CloseType ();
+
+ types = null;
+ properties = null;
+ enums = null;
+ delegates = null;
+ fields = null;
+ initialized_fields = null;
+ initialized_static_fields = null;
+ constants = null;
+ interfaces = null;
+ interface_order = null;
+ methods = null;
+ events = null;
+ indexers = null;
+ operators = null;
+ ec = null;
+ default_constructor = null;
+ default_static_constructor = null;
+ type_bases = null;
+ attributes = null;
+ ifaces = null;
+ parent_container = null;
+ member_cache = null;
}
public string MakeName (string n)
{
MethodData.Emit (container, Block, this);
Block = null;
+ MethodData = null;
}
void IIteratorContainer.SetYields ()
foreach (TypeBuilder type_builder in helper_classes)
type_builder.CreateType ();
}
+
+ attribute_types = null;
+ interface_resolve_order = null;
+ type_container_resolve_order = null;
+ helper_classes = null;
+ tree = null;
+ TypeManager.CleanUp ();
}
/// <summary>
public string name;
public Type [] args;
}
+
+ public static void CleanUp ()
+ {
+ // Lets get everything clean so that we can collect before generating code
+ assemblies = null;
+ modules = null;
+ types = null;
+ typecontainers = null;
+ user_types = null;
+ builder_to_declspace = null;
+ builder_to_ifaces = null;
+ method_arguments = null;
+ indexer_arguments = null;
+ method_internal_params = null;
+ builder_to_attr = null;
+ builder_to_method = null;
+
+ fields = null;
+ references = null;
+ negative_hits = null;
+ attr_to_allowmult = null;
+ builder_to_constant = null;
+ fieldbuilders_to_fields = null;
+ events = null;
+ priv_fields_events = null;
+ properties = null;
+
+ TypeHandle.CleanUp ();
+ }
/// <summary>
/// A filter for Findmembers that uses the Signature object to
type_hash.Add (t, handle);
return handle;
}
+
+ public static void CleanUp ()
+ {
+ type_hash = null;
+ }
/// <summary>
/// Returns the TypeHandle for TypeManager.object_type.