示例#1
0
 public MethodCallBlock(Method calledMethod, SubroutineBase <Label> subroutine, ref int idGen, int parametersCount, bool isVirtual)
     : base(subroutine, ref idGen)
 {
     CalledMethod   = calledMethod;
     ParameterCount = parametersCount;
     IsVirtual      = isVirtual;
 }
示例#2
0
        public static BlockWithLabels <Label> BuildBlocks(Label entry, SubroutineBuilder <Label> subroutineBuilder)
        {
            var blockBuilder = new BlockBuilder <Label> (subroutineBuilder);

            blockBuilder.TraceAggregateSequentally(entry);
            if (blockBuilder.current_block == null)
            {
                return(null);
            }

            SubroutineBase <Label> subroutine = blockBuilder.CurrentSubroutine;

            subroutine.AddSuccessor(blockBuilder.current_block, EdgeTag.FallThroughReturn, subroutine.Exit);
            subroutine.AddReturnBlock(blockBuilder.current_block);

            return(blockBuilder.current_block);
        }
示例#3
0
        public BlockWithLabels <Label> BuildBlocks(Label entry, SubroutineBase <Label> subroutine)
        {
            this.current_subroutine = subroutine;

            return(base.BuildBlocks(entry));
        }
示例#4
0
 public EnsuresBlock(SubroutineBase <Label> subroutine, ref int idGen)
     : base(subroutine, ref idGen)
 {
 }
示例#5
0
 public NewObjCallBlock(Method calledMethod, int parametersCount, SubroutineBase <Label> subroutine, ref int idGen)
     : base(calledMethod, subroutine, ref idGen, parametersCount, false)
 {
 }
示例#6
0
 public AssumeBlock(SubroutineBase <Label> subroutine, Label label, EdgeTag tag, ref int idGen)
     : base(subroutine, ref idGen)
 {
     this.BranchLabel = label;
     this.Tag         = tag;
 }
示例#7
0
 public EntryExitBlock(SubroutineBase <Label> subroutine, ref int idGen)
     : base(subroutine, ref idGen)
 {
 }
示例#8
0
 public CatchFilterEntryBlock(SubroutineBase <Label> subroutine, ref int idGen)
     : base(subroutine, ref idGen)
 {
 }
示例#9
0
 public BlockWithLabels(SubroutineBase <Label> subroutine, ref int idGen)
     : base(subroutine, ref idGen)
 {
     this.labels = new List <Label> ();
 }