protected virtual MethodBuilder CompileForSave(TypeGen typeGen, Dictionary <SymbolId, FieldBuilder> symbolDict) { var diskRewriter = new ToDiskRewriter(typeGen); var lambda = diskRewriter.RewriteLambda(_code); return(lambda.CompileToMethod(typeGen.TypeBuilder, CompilerHelpers.PublicStatic | MethodAttributes.SpecialName, false)); }
protected override MethodBuilder CompileForSave(TypeGen typeGen, Dictionary <SymbolId, FieldBuilder> symbolDict) { // first, serialize constants and dynamic sites: ToDiskRewriter diskRewriter = new ToDiskRewriter(typeGen); LambdaExpression lambda = diskRewriter.RewriteLambda(Code); // rewrite global variables: var globalRewriter = new GlobalArrayRewriter(symbolDict, typeGen); lambda = globalRewriter.RewriteLambda(lambda); MethodBuilder builder = lambda.CompileToMethod(typeGen.TypeBuilder, CompilerHelpers.PublicStatic | MethodAttributes.SpecialName, false); builder.SetCustomAttribute(new CustomAttributeBuilder( typeof(CachedOptimizedCodeAttribute).GetConstructor(new Type[] { typeof(string[]) }), new object[] { ArrayUtils.ToArray(globalRewriter.Names) } )); return(builder); }
protected override KeyValuePair<MethodBuilder, Type> CompileForSave(TypeGen typeGen, Dictionary<SymbolId, FieldBuilder> symbolDict) { // first, serialize constants and dynamic sites: ToDiskRewriter diskRewriter = new ToDiskRewriter(typeGen); LambdaExpression lambda = diskRewriter.RewriteLambda(Code); // rewrite global variables: var globalRewriter = new GlobalArrayRewriter(symbolDict, typeGen); lambda = globalRewriter.RewriteLambda(lambda); MethodBuilder builder = typeGen.TypeBuilder.DefineMethod(lambda.Name ?? "lambda_method", CompilerHelpers.PublicStatic | MethodAttributes.SpecialName); lambda.CompileToMethod(builder, false); builder.SetCustomAttribute(new CustomAttributeBuilder( typeof(CachedOptimizedCodeAttribute).GetConstructor(new Type[] { typeof(string[]) }), new object[] { ArrayUtils.ToArray(globalRewriter.Names) } )); return new KeyValuePair<MethodBuilder, Type>(builder, typeof(DlrMainCallTarget)); }
protected LambdaExpression RewriteForSave(TypeGen typeGen, LambdaExpression code) { var diskRewriter = new ToDiskRewriter(typeGen); return(diskRewriter.RewriteLambda(code)); }
protected LambdaExpression RewriteForSave(TypeGen typeGen, LambdaExpression code) { var diskRewriter = new ToDiskRewriter(typeGen); return diskRewriter.RewriteLambda(code); }
protected virtual MethodBuilder CompileForSave(TypeGen typeGen, Dictionary<SymbolId, FieldBuilder> symbolDict) { var diskRewriter = new ToDiskRewriter(typeGen); var lambda = diskRewriter.RewriteLambda(_code); MethodBuilder mb = typeGen.TypeBuilder.DefineMethod(lambda.Name ?? "lambda_method", CompilerHelpers.PublicStatic | MethodAttributes.SpecialName); lambda.CompileToMethod(mb, false); return mb; }