2010-05-16 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Sun, 16 May 2010 01:55:10 +0000 (01:55 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Sun, 16 May 2010 01:55:10 +0000 (01:55 -0000)
* BuildManager.cs: do not cache referenced assemblies until it's
safe.

2010-05-16  Marek Habersack  <mhabersack@novell.com>

* HttpApplicationFactory.cs: let BuildManager know when it's safe
to cache referenced assemblies.

svn path=/trunk/mcs/; revision=157391

mcs/class/System.Web/System.Web.Compilation/BuildManager.cs
mcs/class/System.Web/System.Web.Compilation/ChangeLog
mcs/class/System.Web/System.Web/ChangeLog
mcs/class/System.Web/System.Web/HttpApplicationFactory.cs

index 61edaff140f33eb7103cdaee2e376ab08c8778fe..91b3d85e10e44e9e971ec396f94a7bb8996a828a 100644 (file)
@@ -80,7 +80,7 @@ namespace System.Web.Compilation
                
                static int buildCount;
                static bool is_precompiled;
-               static bool toplevelsCompiled;
+               static bool allowReferencedAssembliesCaching;
 #if NET_4_0
                static bool? batchCompilationEnabled;
                static FrameworkName targetFramework;
@@ -99,6 +99,11 @@ namespace System.Web.Compilation
 #endif
                static ulong recursionDepth;
 
+               internal static bool AllowReferencedAssembliesCaching {
+                       get { return allowReferencedAssembliesCaching; }
+                       set { allowReferencedAssembliesCaching = value; }
+               }
+               
                internal static bool IsPrecompiled {
                        get { return is_precompiled; }
                }
@@ -1054,9 +1059,13 @@ namespace System.Web.Compilation
                        if (getReferencedAssembliesInvoked)
                                return configReferencedAssemblies;
 
-                       getReferencedAssembliesInvoked = true;
+                       if (allowReferencedAssembliesCaching)
+                               getReferencedAssembliesInvoked = true;
+                       
                        if (configReferencedAssemblies == null)
                                configReferencedAssemblies = new List <Assembly> ();
+                       else if (getReferencedAssembliesInvoked)
+                               configReferencedAssemblies.Clear ();
                        
                        CompilationSection compConfig = WebConfigurationManager.GetWebApplicationSection ("system.web/compilation") as CompilationSection;
                         if (compConfig == null)
index 3b0c9301126ea7f4e071c4671c9826f4bbc4b337..09a3f61a5424b5fb2bbee47a8c466b2e65949364 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-16  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: do not cache referenced assemblies until it's
+       safe.
+
 2010-05-15  Marek Habersack  <mhabersack@novell.com>
 
        * RouteValueExpressionBuilder.cs: added
index e21fe7a840a7ac188c6600eb404a6c00a7349ced..a2686d3c5a79f466b1ad8110bed5cea6cff67369 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-16  Marek Habersack  <mhabersack@novell.com>
+
+       * HttpApplicationFactory.cs: let BuildManager know when it's safe
+       to cache referenced assemblies.
+
 2010-05-15  Marek Habersack  <mhabersack@novell.com>
 
        * HttpResponse.cs: added internal Context property
index 8deea76af25eeb38058b92324fd4378f75109fd5..92cbfc609d79589d2aebada16b8217e4749bcf84 100644 (file)
@@ -416,6 +416,8 @@ namespace System.Web
                                
                                        AppCodeCompiler acc = new AppCodeCompiler ();
                                        acc.Compile ();
+
+                                       BuildManager.AllowReferencedAssembliesCaching = true;
 #if NET_4_0
                                        BuildManager.CallPreStartMethods ();
 #endif