|
From: <ac...@us...> - 2010-03-31 21:15:35
|
Revision: 29
http://clibinutils.svn.sourceforge.net/clibinutils/?rev=29&view=rev
Author: aco
Date: 2010-03-31 21:15:28 +0000 (Wed, 31 Mar 2010)
Log Message:
-----------
improve traicing of ReferenceGetters
Modified Paths:
--------------
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/IReferenceGetters.cs
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGetters.cs
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersCached.cs
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersTracer.cs
Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/IReferenceGetters.cs
===================================================================
--- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/IReferenceGetters.cs 2010-03-31 21:08:23 UTC (rev 28)
+++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/IReferenceGetters.cs 2010-03-31 21:15:28 UTC (rev 29)
@@ -6,6 +6,8 @@
public interface IReferenceGetters {
+ IReferenceGetters RGRecursiveCalls { set; }
+
void MapTypeReferences (ICollection types, TypeReference new_type);
ModuleReference GetModuleReference (ModuleReference module);
Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGetters.cs
===================================================================
--- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGetters.cs 2010-03-31 21:08:23 UTC (rev 28)
+++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGetters.cs 2010-03-31 21:15:28 UTC (rev 29)
@@ -15,6 +15,8 @@
ModuleDefinition m_module;
+ internal IReferenceGetters rf;
+
bool m_aea; // allowExternalAssembly
readonly string ExternalAssemblyName = CFile.ExternalAssemblyName;
@@ -25,6 +27,7 @@
m_cfile = cfile;
m_module = module;
m_aea = allowExternalAssembly;
+ rf = this;
}
public ReferenceGetters (CFileModifier cfile, bool allowExternalAssembly)
@@ -42,6 +45,10 @@
{
}
+ public IReferenceGetters RGRecursiveCalls {
+ set { rf = value; }
+ }
+
Hashtable mapped_types = new Hashtable (); //Dictionary<string,TypeReference>
public void MapTypeReferences (ICollection types, TypeReference new_type)
@@ -70,20 +77,20 @@
if (type is FunctionPointerType) {
FunctionPointerType fpt = type as FunctionPointerType;
- fpt.ElementType = GetTypeReference (fpt.ElementType);
- fpt.ReturnType.ReturnType = GetTypeReference (fpt.ReturnType.ReturnType);
+ fpt.ElementType = rf.GetTypeReference (fpt.ElementType);
+ fpt.ReturnType.ReturnType = rf.GetTypeReference (fpt.ReturnType.ReturnType);
for (int i = 0; i < fpt.Parameters.Count ; ++i) {
- fpt.Parameters[i].ParameterType = GetTypeReference (fpt.Parameters[i].ParameterType);
+ fpt.Parameters[i].ParameterType = rf.GetTypeReference (fpt.Parameters[i].ParameterType);
}
result = fpt;
} else if (type is ModType) {
ModType spec = type as ModType;
- spec.ElementType = GetTypeReference (spec.ElementType);
- spec.ModifierType = GetTypeReference (spec.ModifierType);
+ spec.ElementType = rf.GetTypeReference (spec.ElementType);
+ spec.ModifierType = rf.GetTypeReference (spec.ModifierType);
result = spec;
} else if (type is TypeSpecification) {
TypeSpecification spec = type as TypeSpecification;
- spec.ElementType = GetTypeReference (spec.ElementType);
+ spec.ElementType = rf.GetTypeReference (spec.ElementType);
result = spec;
} else {
string fullname = type.FullName;
@@ -137,8 +144,8 @@
MethodReference duplicate_VarargMethodReference (MethodReference m_sig, MethodReference base_method)
{
MethodReference result = new MethodReference (base_method.Name,
- GetTypeReference (base_method.DeclaringType),
- GetTypeReference (base_method.ReturnType.ReturnType),
+ rf.GetTypeReference (base_method.DeclaringType),
+ rf.GetTypeReference (base_method.ReturnType.ReturnType),
base_method.HasThis,
base_method.ExplicitThis,
base_method.CallingConvention);
@@ -148,18 +155,18 @@
int i = 0;
for (; i<bm_argsNum ; ++i) {
- TypeReference param_type = GetTypeReference (base_method.Parameters[i].ParameterType);
+ TypeReference param_type = rf.GetTypeReference (base_method.Parameters[i].ParameterType);
ParameterDefinition p = new ParameterDefinition (param_type);
result.Parameters.Add (p);
}
if (i<m_argsNum) {
- TypeReference param_type = GetTypeReference (m_sig.Parameters[i].ParameterType);
+ TypeReference param_type = rf.GetTypeReference (m_sig.Parameters[i].ParameterType);
ParameterDefinition p = new ParameterDefinition (new SentinelType (param_type));
result.Parameters.Add (p);
++i;
for (; i<m_argsNum ; ++i) {
- param_type = GetTypeReference (m_sig.Parameters[i].ParameterType);
+ param_type = rf.GetTypeReference (m_sig.Parameters[i].ParameterType);
p = new ParameterDefinition (param_type);
result.Parameters.Add (p);
}
@@ -172,7 +179,7 @@
{
MethodReference result = null;
- TypeReference type = GetTypeReference (method.DeclaringType);
+ TypeReference type = rf.GetTypeReference (method.DeclaringType);
if (type is TypeDefinition) {
TypeDefinition td = type as TypeDefinition;
@@ -225,7 +232,7 @@
MethodReference result = null;
if (m_cfile != null
- && GetTypeReference (method.DeclaringType) == m_cfile.MainType) {
+ && rf.GetTypeReference (method.DeclaringType) == m_cfile.MainType) {
string name = method.Name;
MethodReference base_method = null;
@@ -246,11 +253,11 @@
}
if (result != null) {
- result.DeclaringType = GetTypeReference (result.DeclaringType);
- result.ReturnType.ReturnType = GetTypeReference (result.ReturnType.ReturnType);
+ result.DeclaringType = rf.GetTypeReference (result.DeclaringType);
+ result.ReturnType.ReturnType = rf.GetTypeReference (result.ReturnType.ReturnType);
foreach (ParameterDefinition parameter in result.Parameters) {
TypeReference tp = parameter.ParameterType;
- parameter.ParameterType = GetTypeReference (parameter.ParameterType);
+ parameter.ParameterType = rf.GetTypeReference (parameter.ParameterType);
if (tp is SentinelType)
parameter.ParameterType = new SentinelType (parameter.ParameterType);
}
@@ -261,13 +268,13 @@
&& method.DeclaringType.Name == ExternalTypeName) {
result = new MethodReference (method.Name,
GetExternalTypeDef (),
- GetTypeReference (method.ReturnType.ReturnType),
+ rf.GetTypeReference (method.ReturnType.ReturnType),
method.HasThis,
method.ExplicitThis,
method.CallingConvention);
foreach (ParameterDefinition param in method.Parameters) {
- TypeReference tp = GetTypeReference (param.ParameterType);
+ TypeReference tp = rf.GetTypeReference (param.ParameterType);
if (param.ParameterType is SentinelType)
tp = new SentinelType (tp);
result.Parameters.Add (new ParameterDefinition (tp));
@@ -286,7 +293,7 @@
{
FieldReference result = null;
- TypeReference type = GetTypeReference (field.DeclaringType);
+ TypeReference type = rf.GetTypeReference (field.DeclaringType);
if (type is TypeDefinition) {
TypeDefinition td = type as TypeDefinition;
result = td.Fields.GetField (field.Name);
@@ -319,7 +326,7 @@
&& field.DeclaringType.Name == ExternalTypeName) {
result = new FieldReference (field.Name,
GetExternalTypeDef (),
- GetTypeReference (field.FieldType));
+ rf.GetTypeReference (field.FieldType));
m_module.MemberReferences.Add (result);
}
@@ -332,9 +339,9 @@
public virtual CallSite GetCallSite (CallSite cs)
{
- cs.ReturnType.ReturnType = GetTypeReference (cs.ReturnType.ReturnType);
+ cs.ReturnType.ReturnType = rf.GetTypeReference (cs.ReturnType.ReturnType);
for (int i = 0; i < cs.Parameters.Count ; ++i) {
- cs.Parameters[i].ParameterType = GetTypeReference (cs.Parameters[i].ParameterType);
+ cs.Parameters[i].ParameterType = rf.GetTypeReference (cs.Parameters[i].ParameterType);
}
return cs;
}
Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersCached.cs
===================================================================
--- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersCached.cs 2010-03-31 21:08:23 UTC (rev 28)
+++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersCached.cs 2010-03-31 21:15:28 UTC (rev 29)
@@ -20,6 +20,7 @@
public ReferenceGettersCached (IReferenceGetters _wrapped)
{
wrapped = _wrapped;
+ wrapped.RGRecursiveCalls = this;
}
public void MapTypeReferences (ICollection types, TypeReference new_type)
@@ -32,6 +33,10 @@
return wrapped.GetModuleReference (module);
}
+ public IReferenceGetters RGRecursiveCalls {
+ set { wrapped.RGRecursiveCalls = value; }
+ }
+
void Add (string name, TypeReference type)
{
types_cache[name] = type;
Modified: mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersTracer.cs
===================================================================
--- mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersTracer.cs 2010-03-31 21:08:23 UTC (rev 28)
+++ mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ReferenceGettersTracer.cs 2010-03-31 21:15:28 UTC (rev 29)
@@ -19,6 +19,7 @@
wrapped = _wrapped;
level = _level;
header = _header;
+ wrapped.RGRecursiveCalls = this;
}
public ReferenceGettersTracer (IReferenceGetters _wrapped)
@@ -26,6 +27,10 @@
{
}
+ public IReferenceGetters RGRecursiveCalls {
+ set { wrapped.RGRecursiveCalls = value; }
+ }
+
public void MapTypeReferences (ICollection types, TypeReference new_type)
{
wrapped.MapTypeReferences (types, new_type);
@@ -34,45 +39,45 @@
public ModuleReference GetModuleReference (ModuleReference module)
{
ModuleReference result = null;
- Tracer.Trace (level, header + "Searching: " + module.ToString ());
+ Tracer.Trace (level, header + "Searching Module: " + module.ToString ());
result = wrapped.GetModuleReference (module);
- Tracer.Trace (level, header + "Returning: " + result.ToString ());
+ Tracer.Trace (level, header + "Returning Module: " + result.ToString ());
return result;
}
public TypeReference GetTypeReference (TypeReference type)
{
TypeReference result = null;
- Tracer.Trace (level, header + "Searching: " + type.FullName);
+ Tracer.Trace (level, header + "Searching Type: " + type.FullName);
result = wrapped.GetTypeReference (type);
- Tracer.Trace (level, header + "Returning: " + result.ToString ());
+ Tracer.Trace (level, header + "Returning Type: " + result.ToString ());
return result;
}
public MethodReference GetMethodReference (MethodReference method)
{
MethodReference result = null;
- Tracer.Trace(level, header + "Searching: " + method.ToString ());
+ Tracer.Trace (level, header + "Searching Method: " + method.ToString ());
result = wrapped.GetMethodReference (method);
- Tracer.Trace(level, header + "Returning: " + result.ToString());
+ Tracer.Trace (level, header + "Returning Method: " + result.ToString());
return result;
}
public FieldReference GetFieldReference (FieldReference field)
{
FieldReference result = null;
- Tracer.Trace(level, header + "Searching: " + field.ToString ());
+ Tracer.Trace (level, header + "Searching Field: " + field.ToString ());
result = wrapped.GetFieldReference (field);
- Tracer.Trace(level, header + "Returning: " + result.ToString());
+ Tracer.Trace (level, header + "Returning Field: " + result.ToString());
return result;
}
public CallSite GetCallSite (CallSite sig)
{
CallSite result = null;
- Tracer.Trace(level, header + "Searching: " + sig.ToString ());
+ Tracer.Trace (level, header + "Searching CallSite: " + sig.ToString ());
result = wrapped.GetCallSite (sig);
- Tracer.Trace(level, header + "Returning: " + result.ToString());
+ Tracer.Trace (level, header + "Returning CallSite: " + result.ToString());
return result;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ac...@us...> - 2010-04-25 17:38:41
|
Revision: 40
http://clibinutils.svn.sourceforge.net/clibinutils/?rev=40&view=rev
Author: aco
Date: 2010-04-25 17:38:34 +0000 (Sun, 25 Apr 2010)
Log Message:
-----------
move rename methods used in CObject to CFileModifier
Modified Paths:
--------------
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CFileModifier.cs
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/CObject.cs
mono-based-binutils/branches/aco-dev/tools/gcc4cli/utils/ICFileModifier.cs
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|