-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathWordOutput.txt
40 lines (37 loc) · 1.66 KB
/
WordOutput.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public void MarkDominationDeep() {
Queue<NormalBlock> DeepBlocks = new LinkedList<>();
DeepBlocks.add(controlFlowGraph.EntryBlock);
DominationDeep.put(controlFlowGraph.EntryBlock,0);
while(!DeepBlocks.isEmpty()) {
NormalBlock analyzeBlock = DeepBlocks.poll();
VisitOrder.add(analyzeBlock);
int NowDeep = DominationDeep.get(analyzeBlock);
HashSet<NormalBlock> Dom = getBlockDirectDomWhichBlock(analyzeBlock);
Dom.forEach(normalBlock -> DominationDeep.put(normalBlock,NowDeep + 1));
DeepBlocks.addAll(Dom);
}
searchEndBlock();
}
public HashSet<NormalBlock> getBlockDirectDomWhichBlock(NormalBlock normalBlock) {
HashSet<NormalBlock> DirectDom = new HashSet<>();
ssaConvert.DirectDomination.forEach((BeDomBlock, DomBlock) -> {
if (DomBlock == normalBlock) {
DirectDom.add(BeDomBlock);
}
});
return DirectDom;
}
public void MarkDominationDeep() {
Queue<NormalBlock> DeepBlocks = new LinkedList<>();
DeepBlocks.add(controlFlowGraph.EntryBlock);
DominationDeep.put(controlFlowGraph.EntryBlock,0);
while(!DeepBlocks.isEmpty()) {
NormalBlock analyzeBlock = DeepBlocks.poll();
VisitOrder.add(analyzeBlock);
int NowDeep = DominationDeep.get(analyzeBlock);
HashSet<NormalBlock> Dom = ssaConvert.StrictDomination.getOrDefault(analyzeBlock,new HashSet<>());
Dom.forEach(normalBlock -> DominationDeep.put(normalBlock,NowDeep + 1));
DeepBlocks.addAll(Dom);
}
searchEndBlock();
}