public void LoadCompiledLambda(CompiledLambda compiledLambda) { if (ParsedLambda.ConstantsParameter == null) { throw new InvalidOperationException("There is no constants parameter. Cannot load sublambda"); } Type temp; var delegatesAccessor = ParsedLambda.ConstantsBuilder.MakeAccess(ParsedLambda.ConstantsParameter, ParsedLambda.DelegatesFieldId); ExpressionEmittersCollection.Emit(delegatesAccessor, this, out temp); Il.Ldc_I4(compiledLambda.Index); Il.Ldelem(typeof(Delegate)); }
public void LoadCompiledLambdaPointer(CompiledLambda compiledLambda) { if (TypeBuilder != null) { Il.Ldftn(compiledLambda.Method); } else { var stopwatch = Stopwatch.StartNew(); var pointer = DynamicMethodInvokerBuilder.DynamicMethodPointerExtractor((DynamicMethod)compiledLambda.Method); LambdaCompiler.TotalJITCompilationTime += stopwatch.Elapsed.TotalSeconds; Il.Ldc_IntPtr(pointer); } }