/// <summary> /// Compiles the method referenced by this method compiler. /// </summary> public void Compile() { MethodData.HasCode = false; if (Method.IsCompilerGenerated) { IsCILDecodeRequired = false; IsStackFrameRequired = false; } //Debug.WriteLine($"{MethodScheduler.GetTimestamp()} - Compiling: [{MethodData.Version}] {Method}"); //DEBUGREMOVE PlugMethod(); PatchDelegate(); ExternalMethod(); InternalMethod(); ExecutePipeline(); //Debug.WriteLine($"{MethodScheduler.GetTimestamp()} - Compiled: [{MethodData.Version}] {Method}"); //DEBUGREMOVE Symbol.SetReplacementStatus(MethodData.Inlined); if (Statistics) { var log = new TraceLog(TraceType.MethodCounters, Method, string.Empty, MethodData.Version); log.Log(MethodData.Counters.Export()); Compiler.PostTraceLog(log); } }
public void Complete() { if (!IsEnabled) { return; } if (!Compiler.Statistics) { return; } MoreLogInfo(); Debug.WriteLine(trace?.ToString()); // REMOVE int totalTypes = 0; int totalMethods = 0; foreach (var type in TypeSystem.AllTypes) { if (type.IsModule) { continue; } totalTypes++; foreach (var method in type.Methods) { if ((!(!method.HasImplementation && method.IsAbstract)) && !method.HasOpenGenericParams && !method.DeclaringType.HasOpenGenericParams) { totalMethods++; } } } Compiler.GlobalCounters.Update("MethodScanner.TotalTypes", totalTypes); Compiler.GlobalCounters.Update("MethodScanner.TotalMethods", totalMethods); Compiler.GlobalCounters.Update("MethodScanner.AllocatedTypes", allocatedTypes.Count); Compiler.GlobalCounters.Update("MethodScanner.InvokedMethods", invokedMethods.Count); Compiler.GlobalCounters.Update("MethodScanner.ScheduledMethods", scheduledMethods.Count); Compiler.GlobalCounters.Update("MethodScanner.AccessedFields", accessedFields.Count); Compiler.GlobalCounters.Update("MethodScanner.InvokedInterfaceType", invokedInteraceTypes.Count); Compiler.PostTraceLog(trace); }
/// <summary> /// Compiles the method referenced by this method compiler. /// </summary> public void Compile() { PlugMethod(); PatchDelegate(); ExternalMethod(); InternalMethod(); ExecutePipeline(); Symbol.SetReplacementStatus(MethodData.Inlined); if (Statistics) { var log = new TraceLog(TraceType.MethodCounters, Method, string.Empty, MethodData.Version); log.Log(MethodData.Counters.Export()); Compiler.PostTraceLog(log); } }
private void PostTraceLog(TraceLog traceLog) { Compiler.PostTraceLog(traceLog); }
protected void PostTraceLog(TraceLog traceLog) { Compiler.PostTraceLog(traceLog); }