public TraceSchedule(BasicBlocks b) { Blocks = b; for (StmListList l = b.Blocks; l != null; l = l.Tail) { Table[((Tree.LABEL)l.Head.Head).Label] = l.Head; } Stms = GetNext(); Table = null; }
public void MakeBlocks(Tree.StmList l) { if (l == null) return; else if (l.Head is Tree.LABEL) { LastStm = new Tree.StmList(l.Head, null); if (LastBlock == null) LastBlock = Blocks = new StmListList(LastStm, null); else LastBlock = LastBlock.Tail = new StmListList(LastStm, null); DoStms(l.Tail); } else MakeBlocks(new Tree.StmList(new Tree.LABEL(new Temp.Label()), l)); }
public void MakeBlocks(Tree.StmList l) { if (l == null) { return; } else if (l.Head is Tree.LABEL) { LastStm = new Tree.StmList(l.Head, null); if (LastBlock == null) { LastBlock = Blocks = new StmListList(LastStm, null); } else { LastBlock = LastBlock.Tail = new StmListList(LastStm, null); } DoStms(l.Tail); } else { MakeBlocks(new Tree.StmList(new Tree.LABEL(new Temp.Label()), l)); } }
public StmListList(Tree.StmList h, StmListList t) { Head = h; Tail = t; }