|
|
@ -129,9 +129,11 @@ public class ExprProcessor implements CodeConstants { |
|
|
|
FlattenStatementsHelper flatthelper = new FlattenStatementsHelper(); |
|
|
|
FlattenStatementsHelper flatthelper = new FlattenStatementsHelper(); |
|
|
|
DirectGraph dgraph = flatthelper.buildDirectGraph(root); |
|
|
|
DirectGraph dgraph = flatthelper.buildDirectGraph(root); |
|
|
|
|
|
|
|
|
|
|
|
// try {
|
|
|
|
// try {
|
|
|
|
// DotExporter.toDotFile(dgraph, new File("c:\\Temp\\gr12_my.dot"));
|
|
|
|
// DotExporter.toDotFile(dgraph, new File("c:\\Temp\\gr12_my.dot"));
|
|
|
|
// } catch(Exception ex) {ex.printStackTrace();}
|
|
|
|
// } catch (Exception ex) {
|
|
|
|
|
|
|
|
// ex.printStackTrace();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// collect finally entry points
|
|
|
|
// collect finally entry points
|
|
|
|
Set<String> setFinallyShortRangeEntryPoints = new HashSet<String>(); |
|
|
|
Set<String> setFinallyShortRangeEntryPoints = new HashSet<String>(); |
|
|
@ -212,6 +214,14 @@ public class ExprProcessor implements CodeConstants { |
|
|
|
// not be null at this point
|
|
|
|
// not be null at this point
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// handling of entry point loops
|
|
|
|
|
|
|
|
int succ_entry_index = ndentrypoints.indexOf(nd.id); |
|
|
|
|
|
|
|
if(succ_entry_index >= 0) { // we are in a loop (e.g. continue in a finally block), drop all entry points in the list beginning with succ_entry_index
|
|
|
|
|
|
|
|
for(int elements_to_remove = ndentrypoints.size() - succ_entry_index; elements_to_remove > 0; elements_to_remove--) { |
|
|
|
|
|
|
|
ndentrypoints.removeLast(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String ndentrykey = buildEntryPointKey(ndentrypoints); |
|
|
|
String ndentrykey = buildEntryPointKey(ndentrypoints); |
|
|
|
if (!mapSucc.containsKey(ndentrykey)) { |
|
|
|
if (!mapSucc.containsKey(ndentrykey)) { |
|
|
|
|
|
|
|
|
|
|
|