internal static Delegate/*!*/ CompileLambda(LambdaExpression/*!*/ lambda, bool debugMode, bool noAdaptiveCompilation) { if (debugMode) { #if !SILVERLIGHT // try to use PDBs and fallback to CustomGenerator if not allowed to: if (_HasPdbPermissions) { try { return CompilerHelpers.CompileToMethod(lambda, DebugInfoGenerator.CreatePdbGenerator(), true); } catch (SecurityException) { // do not attempt next time in this app-domain: _HasPdbPermissions = false; } } #endif return CompilerHelpers.CompileToMethod(lambda, new CustomGenerator(), false); } else if (noAdaptiveCompilation) { Delegate result = lambda.Compile(); // DLR closures should not be used: Debug.Assert(!(result.Target is Closure) || ((Closure)result.Target).Locals == null); return result; } else { return lambda.LightCompile(false); } }
internal static Delegate/*!*/ CompileLambda(LambdaExpression/*!*/ lambda, bool debugMode, bool noAdaptiveCompilation, int compilationThreshold) { #if FEATURE_REFEMIT if (debugMode) { return CompileDebug(lambda); } #endif if (noAdaptiveCompilation) { Delegate result = lambda.Compile(); // DLR closures should not be used: Debug.Assert(!(result.Target is Closure) || ((Closure)result.Target).Locals == null); return result; } return lambda.LightCompile(compilationThreshold); }
internal static Delegate/*!*/ CompileLambda(LambdaExpression/*!*/ lambda, bool debugMode, bool noAdaptiveCompilation) { if (debugMode) { #if !SILVERLIGHT // try to use PDBs and fallback to CustomGenerator if not allowed to: if (_HasPdbPermissions) { try { return CompilerHelpers.CompileToMethod(lambda, DebugInfoGenerator.CreatePdbGenerator(), true); } catch (SecurityException) { // do not attempt next time in this app-domain: _HasPdbPermissions = false; } } #endif return CompilerHelpers.CompileToMethod(lambda, new CustomGenerator(), false); } else if (noAdaptiveCompilation) { return lambda.Compile(); } else { return lambda.LightCompile(); } }