From 7c799c6f3536e873327213d74d01e7f1235b3ca8 Mon Sep 17 00:00:00 2001 From: Mike Barnett Date: Mon, 31 Oct 2011 15:09:08 -0700 Subject: Major changes to the translator traversers because they now are based on the new traversers. (The old ones have been marked as obsolete.) All types are now encoded as "datatypes" in Boogie. So non-generic types are nullary functions and generic types just have at least one type argument. Lots of other fixes: string encoding of names is now done by negating Boogie's regular expression for identifiers, etc. --- .../Phone/PhoneMethodInliningTraverser.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'BCT/BytecodeTranslator/Phone/PhoneMethodInliningTraverser.cs') diff --git a/BCT/BytecodeTranslator/Phone/PhoneMethodInliningTraverser.cs b/BCT/BytecodeTranslator/Phone/PhoneMethodInliningTraverser.cs index 97935721..1957c2fa 100644 --- a/BCT/BytecodeTranslator/Phone/PhoneMethodInliningTraverser.cs +++ b/BCT/BytecodeTranslator/Phone/PhoneMethodInliningTraverser.cs @@ -5,7 +5,7 @@ using System.Text; using Microsoft.Cci; namespace BytecodeTranslator.Phone { - public class PhoneMethodInliningMetadataTraverser : BaseMetadataTraverser { + public class PhoneMethodInliningMetadataTraverser : MetadataTraverser { private HashSet methodsToInline; private HashSet iterMethodsToInline; private PhoneCodeHelper phoneHelper; @@ -23,21 +23,21 @@ namespace BytecodeTranslator.Phone { TotalMethodsCount = 0; } - public override void Visit(IEnumerable modules) { - foreach (IModule module in modules) { - assemblyBeingTranslated= module.ContainingAssembly; - this.Visit(module); + public override void TraverseChildren(IAssembly assembly) { + foreach (IModule module in assembly.MemberModules) { + assemblyBeingTranslated = module.ContainingAssembly; + this.Traverse(module); } firstPassDone = true; } - public override void Visit(IMethodDefinition method) { + public override void TraverseChildren(IMethodDefinition method) { if (!firstPassDone) TotalMethodsCount++; if (iterMethodsToInline.Contains(method) || (!firstPassDone && phoneHelper.mustInlineMethod(method))) { PhoneMethodInliningCodeTraverser codeTraverser= new PhoneMethodInliningCodeTraverser(); - codeTraverser.Visit(method); + codeTraverser.TraverseChildren(method); foreach (IMethodDefinition newMethodDef in codeTraverser.getMethodsFound()) { bool isExtern = this.assemblyBeingTranslated != null && !TypeHelper.GetDefiningUnitReference(newMethodDef.ContainingType).UnitIdentity.Equals(this.assemblyBeingTranslated.UnitIdentity); @@ -62,15 +62,15 @@ namespace BytecodeTranslator.Phone { public void findAllMethodsToInline(List modules) { while (!isFinished()) { changedOnLastPass = false; - Visit(modules); + this.Traverse(modules); } } } - class PhoneMethodInliningCodeTraverser : BaseCodeTraverser { + class PhoneMethodInliningCodeTraverser : CodeTraverser { private HashSet foundMethods = new HashSet(); - public override void Visit(IMethodCall methodCall) { + public override void TraverseChildren(IMethodCall methodCall) { foundMethods.Add(methodCall.MethodToCall.ResolvedMethod); } -- cgit v1.2.3