protected void PostTrace(TraceLog traceLog) { if (!traceLog.Active) { return; } CompilerTrace.PostTraceLog(traceLog); }
//public LoadBinary(string filename) //{ //} #endregion Methods #region Helper Methods public void PostTrace(TraceLog traceLog) { if (traceLog == null) { return; } CompilerTrace.PostTraceLog(traceLog); }
public MosaCompiler(CompilerOptions compilerOptions = null, List <BaseCompilerExtension> compilerExtensions = null, int maxThreads = 0) { MaxThreads = (maxThreads == 0) ? Environment.ProcessorCount * 2 : maxThreads; CompilerOptions = compilerOptions ?? new CompilerOptions(); CompilerTrace = new CompilerTrace(CompilerOptions); if (compilerExtensions != null) { CompilerExtensions.AddRange(compilerExtensions); } }
public MosaMethod CompileMethod(MosaMethod method, int threadID = 0) { lock (method) { CompileMethod(method, null, threadID); } CompilerTrace.UpdatedCompilerProgress( CompilationScheduler.TotalMethods, CompilationScheduler.TotalMethods - CompilationScheduler.TotalQueuedMethods); return(method); }
/// <summary> /// Compiles the method. /// </summary> /// <param name="method">The method.</param> /// <param name="basicBlocks">The basic blocks.</param> /// <param name="threadID">The thread identifier.</param> public void CompileMethod(MosaMethod method, BasicBlocks basicBlocks, int threadID = 0) { PostCompilerTraceEvent(CompilerEvent.CompilingMethod, method.FullName, threadID); var pipeline = GetOrCreateMethodStagePipeline(threadID); var methodCompiler = new MethodCompiler(this, method, basicBlocks, threadID) { Pipeline = pipeline }; methodCompiler.Compile(); PostCompilerTraceEvent(CompilerEvent.CompiledMethod, method.FullName, threadID); CompilerTrace.PostMethodCompiled(method); }
private MosaMethod CompileMethod(MosaMethod method, int threadID) { if (method.IsCompilerGenerated) { return(method); } lock (method) { CompileMethod(method, null, threadID); } CompilerTrace.UpdatedCompilerProgress( MethodScheduler.TotalMethods, MethodScheduler.TotalMethods - MethodScheduler.TotalQueuedMethods); return(method); }
private void ExecuteCompilePass() { while (true) { var method = CompilationScheduler.GetMethodToCompile(); if (method == null) { return; } CompileMethod(method, null, 0); CompilerTrace.UpdatedCompilerProgress( CompilationScheduler.TotalMethods, CompilationScheduler.TotalMethods - CompilationScheduler.TotalQueuedMethods ); } }
private void CompileWorker(int threadID) { while (true) { var method = CompilationScheduler.GetMethodToCompile(); if (method == null) { return; } // only one method can be compiled at a time lock (method) { CompileMethod(method, null, threadID); } CompilerTrace.UpdatedCompilerProgress(CompilationScheduler.TotalMethods, CompilationScheduler.TotalMethods - CompilationScheduler.TotalQueuedMethods); } }
/// <summary> /// Traces the specified compiler event. /// </summary> /// <param name="compilerEvent">The compiler event.</param> /// <param name="message">The message.</param> /// <param name="threadID">The thread identifier.</param> private void NewCompilerTraceEvent(CompilerEvent compilerEvent, string message, int threadID) { CompilerTrace.NewCompilerTraceEvent(compilerEvent, message, threadID); }
/// <summary> /// Traces the specified compiler event. /// </summary> /// <param name="compilerEvent">The compiler event.</param> /// <param name="message">The message.</param> private void NewCompilerTraceEvent(CompilerEvent compilerEvent, string message) { CompilerTrace.NewCompilerTraceEvent(compilerEvent, message, 0); }
/// <summary> /// Traces the specified compiler event. /// </summary> /// <param name="compilerEvent">The compiler event.</param> /// <param name="message">The message.</param> protected void NewCompilerTraceEvent(CompilerEvent compilerEvent, string message) { CompilerTrace.NewCompilerTraceEvent(compilerEvent, message, 0); }
/// <summary> /// Traces the specified compiler event. /// </summary> /// <param name="compilerEvent">The compiler event.</param> /// <param name="message">The message.</param> /// <param name="threadID">The thread identifier.</param> public void PostCompilerTraceEvent(CompilerEvent compilerEvent, string message, int threadID) { CompilerTrace.PostCompilerTraceEvent(compilerEvent, message, threadID); }
/// <summary> /// Traces the specified compiler event. /// </summary> /// <param name="compilerEvent">The compiler event.</param> /// <param name="message">The message.</param> public void PostCompilerTraceEvent(CompilerEvent compilerEvent, string message) { CompilerTrace.PostCompilerTraceEvent(compilerEvent, message, 0); }
public MosaCompiler() { CompilerOptions = new CompilerOptions(); CompilerTrace = new CompilerTrace(); ModuleLoader = new MosaModuleLoader(); }
public void PostCompilerTraceEvent(CompilerEvent compilerEvent) { CompilerTrace.PostCompilerTraceEvent(compilerEvent, string.Empty, 0); }