Ejemplo n.º 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;
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 3
0
        public BlockWithLabels <Label> BuildBlocks(Label entry, SubroutineBase <Label> subroutine)
        {
            this.current_subroutine = subroutine;

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