Allow imported members cache to be setup in 2 phases as compiled one is to deal with...
[mono.git] / mcs / mcs / symbolwriter.cs
index acdaff64e7c6b286082178617bebf8183885ffd9..38e69963a3f75eaa7e0a8d6b98d1f9e3f7bbc68e 100644 (file)
@@ -27,10 +27,10 @@ namespace Mono.CSharp {
 #if !NET_4_0
                        delegate int GetILOffsetFunc (ILGenerator ig);
                        GetILOffsetFunc get_il_offset_func;
-#endif
-                       delegate Guid GetGuidFunc (ModuleBuilder mb);
 
+                       delegate Guid GetGuidFunc (ModuleBuilder mb);
                        GetGuidFunc get_guid_func;
+#endif
 
                        ModuleBuilder module_builder;
 
@@ -51,14 +51,20 @@ namespace Mono.CSharp {
 
                        public void WriteSymbolFile ()
                        {
-                               Guid guid = get_guid_func (module_builder);
+                               Guid guid;
+#if NET_4_0
+                               guid = module_builder.ModuleVersionId;
+#else
+                               guid = get_guid_func (module_builder);
+#endif
                                WriteSymbolFile (guid);
                        }
 
                        public bool Initialize ()
                        {
-                               MethodInfo mi;
 #if !NET_4_0
+                               MethodInfo mi;
+
                                mi = typeof (ILGenerator).GetMethod (
                                        "Mono_GetCurrentOffset",
                                        BindingFlags.Static | BindingFlags.NonPublic);
@@ -67,7 +73,6 @@ namespace Mono.CSharp {
 
                                get_il_offset_func = (GetILOffsetFunc) System.Delegate.CreateDelegate (
                                        typeof (GetILOffsetFunc), mi);
-#endif
 
                                mi = typeof (ModuleBuilder).GetMethod (
                                        "Mono_GetGuid",
@@ -77,9 +82,9 @@ namespace Mono.CSharp {
 
                                get_guid_func = (GetGuidFunc) System.Delegate.CreateDelegate (
                                        typeof (GetGuidFunc), mi);
+#endif
 
                                Location.DefineSymbolDocuments (this);
-
                                return true;
                        }
                }
@@ -181,50 +186,50 @@ namespace Mono.CSharp {
                                symwriter.DefineCapturedScope (scope_id, id, captured_name);
                }
 
-               public static void OpenCompilerGeneratedBlock (ILGenerator ig)
+               public static void OpenCompilerGeneratedBlock (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.OpenCompilerGeneratedBlock (offset);
                        }
                }
 
-               public static void CloseCompilerGeneratedBlock (ILGenerator ig)
+               public static void CloseCompilerGeneratedBlock (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.CloseCompilerGeneratedBlock (offset);
                        }
                }
 
-               public static void StartIteratorBody (ILGenerator ig)
+               public static void StartIteratorBody (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.StartIteratorBody (offset);
                        }
                }
 
-               public static void EndIteratorBody (ILGenerator ig)
+               public static void EndIteratorBody (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.EndIteratorBody (offset);
                        }
                }
 
-               public static void StartIteratorDispatcher (ILGenerator ig)
+               public static void StartIteratorDispatcher (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.StartIteratorDispatcher (offset);
                        }
                }
 
-               public static void EndIteratorDispatcher (ILGenerator ig)
+               public static void EndIteratorDispatcher (EmitContext ec)
                {
                        if (symwriter != null) {
-                               int offset = symwriter.GetILOffset (ig);
+                               int offset = symwriter.GetILOffset (ec.ig);
                                symwriter.EndIteratorDispatcher (offset);
                        }
                }