예제 #1
0
        /// <summary>
        /// Performs stage specific processing on the compiler context.
        /// </summary>
        void IMethodCompilerStage.Run()
        {
            // Method is empty - must be a plugged method
            if (basicBlocks.HeadBlocks.Count == 0)
                return;

            phiPlacementStage = methodCompiler.Pipeline.FindFirst<PhiPlacementStage>();

            foreach (var headBlock in basicBlocks.HeadBlocks)
                EnterSSA(headBlock);

            ssaOperands = null;
        }
예제 #2
0
        protected override void Run()
        {
            // Method is empty - must be a plugged method
            if (BasicBlocks.HeadBlocks.Count == 0)
                return;

            phiPlacementStage = MethodCompiler.Pipeline.FindFirst<PhiPlacementStage>();

            foreach (var headBlock in BasicBlocks.HeadBlocks)
            {
                EnterSSA(headBlock);
            }

            ssaOperands = null;
        }
예제 #3
0
        protected override void Run()
        {
            // Method is empty - must be a plugged method
            if (BasicBlocks.HeadBlocks.Count == 0)
            {
                return;
            }

            if (HasProtectedRegions)
            {
                return;
            }

            phiPlacementStage = MethodCompiler.Pipeline.FindFirst <PhiPlacementStage>();

            foreach (var headBlock in BasicBlocks.HeadBlocks)
            {
                EnterSSA(headBlock);
            }

            ssaOperands = null;
        }