Beispiel #1
0
 public TryBasicBlock(int id, TryBasicBlock parent, MachineState initialState)
     : base(id, new Instructions(initialState))
 {
     Parent       = parent;
     Handlers     = new Seq <TBBHandler>();
     targetsCache = null;
 }
Beispiel #2
0
 public LeaveTryBasicBlock(int id, Instructions block, TryBasicBlock tryblock, int handlerPopCount, int stackPopCount)
     : base(id, block)
 {
     Try             = tryblock;
     HandlerPopCount = handlerPopCount;
     StackPopCount   = stackPopCount;
 }
Beispiel #3
0
        public override BasicBlock CloneWithInstructions(int id, Instructions block)
        {
            if (block != null && block.Body.Count > 0)
            {
                throw new InvalidOperationException("try basic block cannot contain instructions itself");
            }
            var res = new TryBasicBlock(id, Parent, Block.BeforeState)
            {
                Body = Body
            };

            foreach (var h in Handlers)
            {
                res.Handlers.Add(h);
            }
            return(res);
        }
Beispiel #4
0
 public TBBFinallyHandler(TryBasicBlock trybb) : base(trybb)
 {
 }
Beispiel #5
0
 public TBBFaultHandler(TryBasicBlock trybb) : base(trybb)
 {
 }
Beispiel #6
0
 public TBBCatchHandler(TryBasicBlock trybb, TypeRef type) : base(trybb)
 {
     Type = type;
 }
Beispiel #7
0
        public BasicBlock Body; // Scoped in handler up to LeaveCatch, EndFault, EndFinally, Throw or Rethrow

        protected TBBHandler(TryBasicBlock trybb)
        {
            Try = trybb;
        }