Example #1
0
        protected void PostTrace(TraceLog traceLog)
        {
            if (!traceLog.Active)
            {
                return;
            }

            CompilerTrace.PostTraceLog(traceLog);
        }
Example #2
0
        //public LoadBinary(string filename)
        //{
        //}

        #endregion Methods

        #region Helper Methods

        public void PostTrace(TraceLog traceLog)
        {
            if (traceLog == null)
            {
                return;
            }

            CompilerTrace.PostTraceLog(traceLog);
        }
Example #3
0
        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);
            }
        }
Example #4
0
        public MosaMethod CompileMethod(MosaMethod method, int threadID = 0)
        {
            lock (method)
            {
                CompileMethod(method, null, threadID);
            }

            CompilerTrace.UpdatedCompilerProgress(
                CompilationScheduler.TotalMethods,
                CompilationScheduler.TotalMethods - CompilationScheduler.TotalQueuedMethods);

            return(method);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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);
        }
Example #7
0
        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
                    );
            }
        }
Example #8
0
        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);
            }
        }
Example #9
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>
 private void NewCompilerTraceEvent(CompilerEvent compilerEvent, string message, int threadID)
 {
     CompilerTrace.NewCompilerTraceEvent(compilerEvent, message, threadID);
 }
Example #10
0
 /// <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);
 }
Example #11
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);
 }
Example #12
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);
 }
Example #13
0
 /// <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);
 }
Example #14
0
 public MosaCompiler()
 {
     CompilerOptions = new CompilerOptions();
     CompilerTrace   = new CompilerTrace();
     ModuleLoader    = new MosaModuleLoader();
 }
Example #15
0
 public void PostCompilerTraceEvent(CompilerEvent compilerEvent)
 {
     CompilerTrace.PostCompilerTraceEvent(compilerEvent, string.Empty, 0);
 }