summaryrefslogtreecommitdiff
path: root/BCT/BytecodeTranslator
diff options
context:
space:
mode:
authorGravatar Mike Barnett <mbarnett@microsoft.com>2012-01-15 15:39:56 -0800
committerGravatar Mike Barnett <mbarnett@microsoft.com>2012-01-15 15:39:56 -0800
commit7f38aabcee5b8858dd7f87b6d4f6b14b07481872 (patch)
tree4d883cf0388b577e56ab370abde57fd6bbb8f1ec /BCT/BytecodeTranslator
parent96fdf08d3d67e15069bab10c9031515992bacdd7 (diff)
Mark the procedure translated from the module's entry point
with the attribute {:entrypoint}.
Diffstat (limited to 'BCT/BytecodeTranslator')
-rw-r--r--BCT/BytecodeTranslator/MetadataTraverser.cs8
1 files changed, 8 insertions, 0 deletions
diff --git a/BCT/BytecodeTranslator/MetadataTraverser.cs b/BCT/BytecodeTranslator/MetadataTraverser.cs
index eb8f96e1..e65ef6a9 100644
--- a/BCT/BytecodeTranslator/MetadataTraverser.cs
+++ b/BCT/BytecodeTranslator/MetadataTraverser.cs
@@ -90,6 +90,9 @@ namespace BytecodeTranslator {
public override void TraverseChildren(IModule module) {
this.PdbReaders.TryGetValue(module, out this.PdbReader);
+ if (!(module.EntryPoint is Dummy))
+ this.entryPoint = module.EntryPoint;
+
base.TraverseChildren(module);
}
@@ -323,6 +326,7 @@ namespace BytecodeTranslator {
}
private bool sawCctor = false;
+ private IMethodReference/*?*/ entryPoint = null;
private void CreateStaticConstructor(ITypeDefinition typeDefinition) {
var typename = TypeHelper.GetTypeName(typeDefinition, Microsoft.Cci.NameFormattingOptions.DocumentationId);
@@ -412,6 +416,10 @@ namespace BytecodeTranslator {
var proc = decl as Bpl.Procedure;
var formalMap = procInfo.FormalMap;
+ if (this.entryPoint != null && method.InternedKey == this.entryPoint.InternedKey) {
+ decl.AddAttribute("entrypoint");
+ }
+
// FEEDBACK inline handler methods to avoid more false alarms
if (PhoneCodeHelper.instance().PhoneFeedbackToggled && PhoneCodeHelper.instance().isMethodInputHandlerOrFeedbackOverride(method) &&
!PhoneCodeHelper.instance().isMethodIgnoredForFeedback(method)) {