public TryBasicBlock(int id, TryBasicBlock parent, MachineState initialState) : base(id, new Instructions(initialState)) { Parent = parent; Handlers = new Seq <TBBHandler>(); targetsCache = null; }
public LeaveTryBasicBlock(int id, Instructions block, TryBasicBlock tryblock, int handlerPopCount, int stackPopCount) : base(id, block) { Try = tryblock; HandlerPopCount = handlerPopCount; StackPopCount = stackPopCount; }
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); }
public TBBFinallyHandler(TryBasicBlock trybb) : base(trybb) { }
public TBBFaultHandler(TryBasicBlock trybb) : base(trybb) { }
public TBBCatchHandler(TryBasicBlock trybb, TypeRef type) : base(trybb) { Type = type; }
public BasicBlock Body; // Scoped in handler up to LeaveCatch, EndFault, EndFinally, Throw or Rethrow protected TBBHandler(TryBasicBlock trybb) { Try = trybb; }