예제 #1
0
        private void OrderBlocks()
        {
            // don't remove any blocks when the flow control is unusual
            if (HasProtectedRegions)
                return;

            var blockOrderAnalysis = new LoopAwareBlockOrder();

            blockOrderAnalysis.PerformAnalysis(BasicBlocks);

            BasicBlocks.ReorderBlocks(blockOrderAnalysis.NewBlockOrder);
        }
예제 #2
0
        private void OrderBlocks()
        {
            // don't remove any blocks when the flow control is unusual
            if (HasProtectedRegions)
            {
                return;
            }

            var blockOrderAnalysis = new LoopAwareBlockOrder();

            blockOrderAnalysis.PerformAnalysis(BasicBlocks);

            BasicBlocks.ReorderBlocks(blockOrderAnalysis.NewBlockOrder);
        }
예제 #3
0
        private void OrderBlocks()
        {
            //var blockOrderAnalysis = new SimpleTraceBlockOrder();   // faster than others
            var blockOrderAnalysis = new LoopAwareBlockOrder();

            blockOrderAnalysis.PerformAnalysis(BasicBlocks);

            var newBlockOrder = blockOrderAnalysis.NewBlockOrder;

            if (HasProtectedRegions)
            {
                newBlockOrder = AddMissingBlocks(newBlockOrder, true);
            }

            BasicBlocks.ReorderBlocks(newBlockOrder);
        }
예제 #4
0
        private void OrderBlocks()
        {
            //var blockOrderAnalysis = new SimpleTraceBlockOrder();   // faster than others
            var blockOrderAnalysis = new LoopAwareBlockOrder();

            blockOrderAnalysis.PerformAnalysis(BasicBlocks);

            var newBlockOrder = blockOrderAnalysis.NewBlockOrder;

            if (HasProtectedRegions)
            {
                newBlockOrder = AddMissingBlocks(newBlockOrder, true);
            }

            BasicBlocks.ReorderBlocks(newBlockOrder);
        }