summaryrefslogtreecommitdiff
path: root/BCT/BytecodeTranslator
diff options
context:
space:
mode:
authorGravatar t-espave <unknown>2011-08-08 17:21:25 -0700
committerGravatar t-espave <unknown>2011-08-08 17:21:25 -0700
commitcdbb3d595c6f741ef660bab2c093367022830a65 (patch)
tree46b494a64b3205bc4594e8858335d1f1964df3da /BCT/BytecodeTranslator
parent79de464c9866898c04a5443125b6e4feda3b9dc3 (diff)
parent97df6539f15323e9e346a4321d0da83dc3aa39a6 (diff)
Merge
Diffstat (limited to 'BCT/BytecodeTranslator')
-rw-r--r--BCT/BytecodeTranslator/ExpressionTraverser.cs6
-rw-r--r--BCT/BytecodeTranslator/MetadataTraverser.cs3
-rw-r--r--BCT/BytecodeTranslator/Program.cs6
-rw-r--r--BCT/BytecodeTranslator/Sink.cs2
4 files changed, 10 insertions, 7 deletions
diff --git a/BCT/BytecodeTranslator/ExpressionTraverser.cs b/BCT/BytecodeTranslator/ExpressionTraverser.cs
index f2f0dde5..caa2c351 100644
--- a/BCT/BytecodeTranslator/ExpressionTraverser.cs
+++ b/BCT/BytecodeTranslator/ExpressionTraverser.cs
@@ -961,8 +961,10 @@ namespace BytecodeTranslator
Bpl.IToken cloc = creationAST.Token();
var a = this.sink.CreateFreshLocal(creationAST.Type);
- sink.AddDelegate(type.ResolvedType, methodToCall.ResolvedMethod);
- Bpl.Constant constant = sink.FindOrCreateDelegateMethodConstant(methodToCall.ResolvedMethod);
+ ITypeDefinition unspecializedType = Microsoft.Cci.MutableContracts.ContractHelper.Unspecialized(type.ResolvedType).ResolvedType;
+ IMethodDefinition unspecializedMethod = Sink.Unspecialize(methodToCall.ResolvedMethod).ResolvedMethod;
+ sink.AddDelegate(unspecializedType, unspecializedMethod);
+ Bpl.Constant constant = sink.FindOrCreateDelegateMethodConstant(unspecializedMethod);
Bpl.Expr methodExpr = Bpl.Expr.Ident(constant);
Bpl.Expr instanceExpr = TranslatedExpressions.Pop();
diff --git a/BCT/BytecodeTranslator/MetadataTraverser.cs b/BCT/BytecodeTranslator/MetadataTraverser.cs
index 30def4a2..73f76d52 100644
--- a/BCT/BytecodeTranslator/MetadataTraverser.cs
+++ b/BCT/BytecodeTranslator/MetadataTraverser.cs
@@ -83,7 +83,8 @@ namespace BytecodeTranslator {
}
this.sawCctor = savedSawCctor;
} else if (typeDefinition.IsDelegate) {
- sink.AddDelegateType(typeDefinition);
+ ITypeDefinition unspecializedType = Microsoft.Cci.MutableContracts.ContractHelper.Unspecialized(typeDefinition).ResolvedType;
+ sink.AddDelegateType(unspecializedType);
} else if (typeDefinition.IsInterface) {
sink.FindOrCreateType(typeDefinition);
base.Visit(typeDefinition);
diff --git a/BCT/BytecodeTranslator/Program.cs b/BCT/BytecodeTranslator/Program.cs
index abb9a2c2..c138b28a 100644
--- a/BCT/BytecodeTranslator/Program.cs
+++ b/BCT/BytecodeTranslator/Program.cs
@@ -335,7 +335,6 @@ namespace BytecodeTranslator {
foreach (IMethodDefinition def in PhoneNavigationCodeTraverser.NavCallers) {
PhoneCodeHelper.addHandlerStubCaller(sink, def);
}
-
PhoneCodeHelper.instance().createQueriesBatchFile(sink, outputFileName);
}
@@ -393,8 +392,9 @@ namespace BytecodeTranslator {
}
try {
- IMethodDefinition unspecializedInvokeMethod = Sink.Unspecialize(invokeMethod).ResolvedMethod;
- var decl = sink.FindOrCreateProcedure(unspecializedInvokeMethod).Decl;
+ // IMethodDefinition unspecializedInvokeMethod = Sink.Unspecialize(invokeMethod).ResolvedMethod;
+ // var decl = sink.FindOrCreateProcedure(unspecializedInvokeMethod).Decl;
+ var decl = sink.FindOrCreateProcedure(invokeMethod).Decl;
var proc = decl as Bpl.Procedure;
var invars = proc.InParams;
var outvars = proc.OutParams;
diff --git a/BCT/BytecodeTranslator/Sink.cs b/BCT/BytecodeTranslator/Sink.cs
index fc98bb9f..1427b836 100644
--- a/BCT/BytecodeTranslator/Sink.cs
+++ b/BCT/BytecodeTranslator/Sink.cs
@@ -431,7 +431,7 @@ namespace BytecodeTranslator {
string MethodName = TranslationHelper.CreateUniqueMethodName(method);
// The method can be generic (or have a parameter whose type is a type parameter of the method's
// containing class) and then there can be name clashes.
- //MethodName += key.ToString();
+ MethodName += key.ToString();
if (this.initiallyDeclaredProcedures.TryGetValue(MethodName, out procInfo)) return procInfo;