コード例 #1
0
        private void OrderBlocks()
        {
            var blockOrderAnalysis = new SimpleTraceBlockOrder();

            blockOrderAnalysis.Analyze(BasicBlocks);

            var newBlockOrder = blockOrderAnalysis.NewBlockOrder;

            newBlockOrder = AddMissingBlocksIfRequired(newBlockOrder);

            BasicBlocks.ReorderBlocks(newBlockOrder);
        }
コード例 #2
0
        private void OrderBlocks()
        {
            //var blockOrderAnalysis = new LoopAwareBlockOrder();
            var blockOrderAnalysis = new SimpleTraceBlockOrder();               // faster than others

            blockOrderAnalysis.Analyze(BasicBlocks);

            var newBlockOrder = blockOrderAnalysis.NewBlockOrder;

            if (newBlockOrder.Count != BasicBlocks.Count && HasProtectedRegions)
            {
                newBlockOrder = AddMissingBlocksIfRequired(newBlockOrder);
            }

            BasicBlocks.ReorderBlocks(newBlockOrder);
        }