sp-04/test-output/all.cfg.dot

806 lines
33 KiB
Plaintext

digraph root {
node [label="\N",
shape=record
];
subgraph privateInstanceCallMethod {
node [label="\N",
shape=record,
xlabel=""
];
"privateInstanceCallMethodbb-1" [label=e,
shape=circle,
xlabel=privateInstanceCallMethod];
privateInstanceCallMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: INVOKESPECIAL ExampleClass.privateInstanceCallTarget ()V|4: // label|\
5: // line number information|6: ICONST_2 |7: IRETURN }"];
"privateInstanceCallMethodbb-1" -> privateInstanceCallMethodbb0;
"privateInstanceCallMethodbb-2" [label=x,
shape=circle];
privateInstanceCallMethodbb0 -> "privateInstanceCallMethodbb-2";
}
subgraph privateInstanceCallTarget {
node [label="\N",
shape=record,
xlabel=""
];
"privateInstanceCallTargetbb-1" [label=e,
shape=circle,
xlabel=privateInstanceCallTarget];
privateInstanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"];
"privateInstanceCallTargetbb-1" -> privateInstanceCallTargetbb0;
"privateInstanceCallTargetbb-2" [label=x,
shape=circle];
privateInstanceCallTargetbb0 -> "privateInstanceCallTargetbb-2";
}
subgraph allocAndInit2dArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocAndInit2dArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocAndInit2dArrayMethod];
allocAndInit2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_1 |3: ANEWARRAY [I|4: DUP |5: ICONST_0 |6: ICONST_1 |7: NEWARRAY T_INT|\
8: DUP |9: ICONST_0 |10: ICONST_1 |11: IASTORE |12: AASTORE |13: ARETURN }"];
"allocAndInit2dArrayMethodbb-1" -> allocAndInit2dArrayMethodbb0;
"allocAndInit2dArrayMethodbb-2" [label=x,
shape=circle];
allocAndInit2dArrayMethodbb0 -> "allocAndInit2dArrayMethodbb-2";
}
subgraph allocAndInitIntArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocAndInitIntArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocAndInitIntArrayMethod];
allocAndInitIntArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: NEWARRAY T_INT|4: DUP |5: ICONST_0 |6: ICONST_1 |7: IASTORE |8: DUP |\
9: ICONST_1 |10: ICONST_2 |11: IASTORE |12: ARETURN }"];
"allocAndInitIntArrayMethodbb-1" -> allocAndInitIntArrayMethodbb0;
"allocAndInitIntArrayMethodbb-2" [label=x,
shape=circle];
allocAndInitIntArrayMethodbb0 -> "allocAndInitIntArrayMethodbb-2";
}
subgraph allocAndInitObjectArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocAndInitObjectArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocAndInitObjectArrayMethod];
allocAndInitObjectArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ANEWARRAY java/lang/Object|4: DUP |5: ICONST_0 |6: LDC 1|7: AASTORE |\
8: DUP |9: ICONST_1 |10: LDC 2|11: AASTORE |12: ARETURN }"];
"allocAndInitObjectArrayMethodbb-1" -> allocAndInitObjectArrayMethodbb0;
"allocAndInitObjectArrayMethodbb-2" [label=x,
shape=circle];
allocAndInitObjectArrayMethodbb0 -> "allocAndInitObjectArrayMethodbb-2";
}
subgraph allocIncomplete2dArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocIncomplete2dArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocIncomplete2dArrayMethod];
allocIncomplete2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ANEWARRAY [I|4: ARETURN }"];
"allocIncomplete2dArrayMethodbb-1" -> allocIncomplete2dArrayMethodbb0;
"allocIncomplete2dArrayMethodbb-2" [label=x,
shape=circle];
allocIncomplete2dArrayMethodbb0 -> "allocIncomplete2dArrayMethodbb-2";
}
subgraph forMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forMethodbb-1" [label=e,
shape=circle,
xlabel=forMethod];
forMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ICONST_0 |\
7: ISTORE 3}"];
"forMethodbb-1" -> forMethodbb0;
"forMethodbb-2" [label=x,
shape=circle];
forMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 23}"];
forMethodbb0 -> forMethodbb8;
forMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 2|16: ILOAD 3|17: IADD |18: ISTORE 2|19: // label|20: // line number \
information|21: IINC 1 1|22: GOTO 8}"];
forMethodbb8 -> forMethodbb13;
forMethodbb23 [label="23|{23: // label|24: // line number information|25: // stack frame map|26: ILOAD 2|27: IRETURN }"];
forMethodbb8 -> forMethodbb23 [label=T];
forMethodbb13 -> forMethodbb8 [label=T];
forMethodbb23 -> "forMethodbb-2";
}
subgraph forWithBreakMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forWithBreakMethodbb-1" [label=e,
shape=circle,
xlabel=forWithBreakMethod];
forWithBreakMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ICONST_0 |\
7: ISTORE 3}"];
"forWithBreakMethodbb-1" -> forWithBreakMethodbb0;
"forWithBreakMethodbb-2" [label=x,
shape=circle];
forWithBreakMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 32}"];
forWithBreakMethodbb0 -> forWithBreakMethodbb8;
forWithBreakMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"];
forWithBreakMethodbb8 -> forWithBreakMethodbb13;
forWithBreakMethodbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: ILOAD 2|36: IRETURN }"];
forWithBreakMethodbb8 -> forWithBreakMethodbb32 [label=T];
forWithBreakMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 32}"];
forWithBreakMethodbb13 -> forWithBreakMethodbb18;
forWithBreakMethodbb21 [label="21|{21: // label|22: // line number information|23: // stack frame map|24: ILOAD 2|25: ILOAD 3|26: IADD |27: ISTORE 2|28: // \
label|29: // line number information|30: IINC 3 1|31: GOTO 8}"];
forWithBreakMethodbb13 -> forWithBreakMethodbb21 [label=T];
forWithBreakMethodbb18 -> forWithBreakMethodbb32 [label=T];
forWithBreakMethodbb21 -> forWithBreakMethodbb8 [label=T];
forWithBreakMethodbb32 -> "forWithBreakMethodbb-2";
}
subgraph forWithContinueMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forWithContinueMethodbb-1" [label=e,
shape=circle,
xlabel=forWithContinueMethod];
forWithContinueMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ICONST_0 |\
7: ISTORE 3}"];
"forWithContinueMethodbb-1" -> forWithContinueMethodbb0;
"forWithContinueMethodbb-2" [label=x,
shape=circle];
forWithContinueMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 33}"];
forWithContinueMethodbb0 -> forWithContinueMethodbb8;
forWithContinueMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"];
forWithContinueMethodbb8 -> forWithContinueMethodbb13;
forWithContinueMethodbb33 [label="33|{33: // label|34: // line number information|35: // stack frame map|36: ILOAD 2|37: IRETURN }"];
forWithContinueMethodbb8 -> forWithContinueMethodbb33 [label=T];
forWithContinueMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 28}"];
forWithContinueMethodbb13 -> forWithContinueMethodbb18;
forWithContinueMethodbb21 [label="21|{21: // label|22: // line number information|23: // stack frame map|24: ILOAD 2|25: ILOAD 3|26: IADD |27: ISTORE 2}"];
forWithContinueMethodbb13 -> forWithContinueMethodbb21 [label=T];
forWithContinueMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: IINC 3 1|32: GOTO 8}"];
forWithContinueMethodbb18 -> forWithContinueMethodbb28 [label=T];
forWithContinueMethodbb21 -> forWithContinueMethodbb28;
forWithContinueMethodbb28 -> forWithContinueMethodbb8 [label=T];
forWithContinueMethodbb33 -> "forWithContinueMethodbb-2";
}
subgraph ifElseMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"ifElseMethodbb-1" [label=e,
shape=circle,
xlabel=ifElseMethod];
ifElseMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ILOAD 1|7: \
IFLE 13}"];
"ifElseMethodbb-1" -> ifElseMethodbb0;
"ifElseMethodbb-2" [label=x,
shape=circle];
ifElseMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_0 |11: ISTORE 2|12: GOTO 18}"];
ifElseMethodbb0 -> ifElseMethodbb8;
ifElseMethodbb13 [label="13|{13: // label|14: // line number information|15: // stack frame map|16: ILOAD 1|17: ISTORE 2}"];
ifElseMethodbb0 -> ifElseMethodbb13 [label=T];
ifElseMethodbb18 [label="18|{18: // label|19: // line number information|20: // stack frame map|21: ILOAD 2|22: IRETURN }"];
ifElseMethodbb8 -> ifElseMethodbb18 [label=T];
ifElseMethodbb13 -> ifElseMethodbb18;
ifElseMethodbb18 -> "ifElseMethodbb-2";
}
subgraph instanceCallMethod {
node [label="\N",
shape=record,
xlabel=""
];
"instanceCallMethodbb-1" [label=e,
shape=circle,
xlabel=instanceCallMethod];
instanceCallMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: INVOKEVIRTUAL ExampleClass.instanceCallTarget ()V|4: // label|5: // \
line number information|6: ICONST_2 |7: IRETURN }"];
"instanceCallMethodbb-1" -> instanceCallMethodbb0;
"instanceCallMethodbb-2" [label=x,
shape=circle];
instanceCallMethodbb0 -> "instanceCallMethodbb-2";
}
subgraph instanceCallTarget {
node [label="\N",
shape=record,
xlabel=""
];
"instanceCallTargetbb-1" [label=e,
shape=circle,
xlabel=instanceCallTarget];
instanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"];
"instanceCallTargetbb-1" -> instanceCallTargetbb0;
"instanceCallTargetbb-2" [label=x,
shape=circle];
instanceCallTargetbb0 -> "instanceCallTargetbb-2";
}
subgraph interfaceCallMethod {
node [label="\N",
shape=record,
xlabel=""
];
"interfaceCallMethodbb-1" [label=e,
shape=circle,
xlabel=interfaceCallMethod];
interfaceCallMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: INVOKEINTERFACE ExampleClass$Interface.interfaceCallTarget ()V|4: // \
label|5: // line number information|6: ICONST_2 |7: IRETURN }"];
"interfaceCallMethodbb-1" -> interfaceCallMethodbb0;
"interfaceCallMethodbb-2" [label=x,
shape=circle];
interfaceCallMethodbb0 -> "interfaceCallMethodbb-2";
}
subgraph nestedFor {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"nestedForbb-1" [label=e,
shape=circle,
xlabel=nestedFor];
nestedForbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ICONST_0 |\
7: ISTORE 3}"];
"nestedForbb-1" -> nestedForbb0;
"nestedForbb-2" [label=x,
shape=circle];
nestedForbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 37}"];
nestedForbb0 -> nestedForbb8;
nestedForbb13 [label="13|{13: // label|14: // line number information|15: ICONST_0 |16: ISTORE 4}"];
nestedForbb8 -> nestedForbb13;
nestedForbb37 [label="37|{37: // label|38: // line number information|39: // stack frame map|40: ILOAD 2|41: IRETURN }"];
nestedForbb8 -> nestedForbb37 [label=T];
nestedForbb17 [label="17|{17: // label|18: // stack frame map|19: ILOAD 4|20: ILOAD 3|21: IF_ICMPGE 32}"];
nestedForbb13 -> nestedForbb17;
nestedForbb22 [label="22|{22: // label|23: // line number information|24: ILOAD 2|25: ILOAD 4|26: IADD |27: ISTORE 2|28: // label|29: // line number \
information|30: IINC 4 1|31: GOTO 17}"];
nestedForbb17 -> nestedForbb22;
nestedForbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: IINC 3 1|36: GOTO 8}"];
nestedForbb17 -> nestedForbb32 [label=T];
nestedForbb22 -> nestedForbb17 [label=T];
nestedForbb32 -> nestedForbb8 [label=T];
nestedForbb37 -> "nestedForbb-2";
}
subgraph nonShortCircuitMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"nonShortCircuitMethodbb-1" [label=e,
shape=circle,
xlabel=nonShortCircuitMethod];
nonShortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"];
"nonShortCircuitMethodbb-1" -> nonShortCircuitMethodbb0;
"nonShortCircuitMethodbb-2" [label=x,
shape=circle];
nonShortCircuitMethodbb5 [label="5|{5: ICONST_1 |6: GOTO 10}"];
nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb5;
nonShortCircuitMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ICONST_0 }"];
nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb7 [label=T];
nonShortCircuitMethodbb10 [label="10|{10: // label|11: // stack frame map|12: ILOAD 1|13: ILOAD 3|14: IF_ICMPGE 17}"];
nonShortCircuitMethodbb5 -> nonShortCircuitMethodbb10 [label=T];
nonShortCircuitMethodbb7 -> nonShortCircuitMethodbb10;
nonShortCircuitMethodbb15 [label="15|{15: ICONST_1 |16: GOTO 20}"];
nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb15;
nonShortCircuitMethodbb17 [label="17|{17: // label|18: // stack frame map|19: ICONST_0 }"];
nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb17 [label=T];
nonShortCircuitMethodbb20 [label="20|{20: // label|21: // stack frame map|22: IAND |23: IFEQ 28}"];
nonShortCircuitMethodbb15 -> nonShortCircuitMethodbb20 [label=T];
nonShortCircuitMethodbb17 -> nonShortCircuitMethodbb20;
nonShortCircuitMethodbb24 [label="24|{24: // label|25: // line number information|26: ICONST_1 |27: IRETURN }"];
nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb24;
nonShortCircuitMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: ICONST_0 |32: IRETURN }"];
nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb28 [label=T];
nonShortCircuitMethodbb24 -> "nonShortCircuitMethodbb-2";
nonShortCircuitMethodbb24 -> nonShortCircuitMethodbb28;
nonShortCircuitMethodbb28 -> "nonShortCircuitMethodbb-2";
}
subgraph shortCircuitMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"shortCircuitMethodbb-1" [label=e,
shape=circle,
xlabel=shortCircuitMethod];
shortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 12}"];
"shortCircuitMethodbb-1" -> shortCircuitMethodbb0;
"shortCircuitMethodbb-2" [label=x,
shape=circle];
shortCircuitMethodbb5 [label="5|{5: ILOAD 1|6: ILOAD 3|7: IF_ICMPGE 12}"];
shortCircuitMethodbb0 -> shortCircuitMethodbb5;
shortCircuitMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ICONST_0 |16: IRETURN }"];
shortCircuitMethodbb0 -> shortCircuitMethodbb12 [label=T];
shortCircuitMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: IRETURN }"];
shortCircuitMethodbb5 -> shortCircuitMethodbb8;
shortCircuitMethodbb5 -> shortCircuitMethodbb12 [label=T];
shortCircuitMethodbb8 -> "shortCircuitMethodbb-2";
shortCircuitMethodbb8 -> shortCircuitMethodbb12;
shortCircuitMethodbb12 -> "shortCircuitMethodbb-2";
}
subgraph staticCallMethod {
node [label="\N",
shape=record,
xlabel=""
];
"staticCallMethodbb-1" [label=e,
shape=circle,
xlabel=staticCallMethod];
staticCallMethodbb0 [label="0|{0: // label|1: // line number information|2: INVOKESTATIC ExampleClass.staticCallTarget ()V|3: // label|4: // line number \
information|5: ICONST_2 |6: IRETURN }"];
"staticCallMethodbb-1" -> staticCallMethodbb0;
"staticCallMethodbb-2" [label=x,
shape=circle];
staticCallMethodbb0 -> "staticCallMethodbb-2";
}
subgraph staticCallTarget {
node [label="\N",
shape=record,
xlabel=""
];
"staticCallTargetbb-1" [label=e,
shape=circle,
xlabel=staticCallTarget];
staticCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"];
"staticCallTargetbb-1" -> staticCallTargetbb0;
"staticCallTargetbb-2" [label=x,
shape=circle];
staticCallTargetbb0 -> "staticCallTargetbb-2";
}
subgraph staticFieldReadMethod {
node [label="\N",
shape=record,
xlabel=""
];
"staticFieldReadMethodbb-1" [label=e,
shape=circle,
xlabel=staticFieldReadMethod];
staticFieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: GETSTATIC ExampleClass.staticField Ljava/lang/String;|3: ARETURN }"];
"staticFieldReadMethodbb-1" -> staticFieldReadMethodbb0;
"staticFieldReadMethodbb-2" [label=x,
shape=circle];
staticFieldReadMethodbb0 -> "staticFieldReadMethodbb-2";
}
subgraph staticFieldWriteMethod {
node [label="\N",
shape=record,
xlabel=""
];
"staticFieldWriteMethodbb-1" [label=e,
shape=circle,
xlabel=staticFieldWriteMethod];
staticFieldWriteMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: PUTSTATIC ExampleClass.staticField Ljava/lang/String;|4: // label|\
5: // line number information|6: RETURN }"];
"staticFieldWriteMethodbb-1" -> staticFieldWriteMethodbb0;
"staticFieldWriteMethodbb-2" [label=x,
shape=circle];
staticFieldWriteMethodbb0 -> "staticFieldWriteMethodbb-2";
}
subgraph switchMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"switchMethodbb-1" [label=e,
shape=circle,
xlabel=switchMethod];
switchMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ILOAD 1|7: \
TABLESWITCH 0: 8, 1: 14, 2: 20, default: 26}"];
"switchMethodbb-1" -> switchMethodbb0;
"switchMethodbb-2" [label=x,
shape=circle];
switchMethodbb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"];
switchMethodbb0 -> switchMethodbb8 [label=0];
switchMethodbb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"];
switchMethodbb0 -> switchMethodbb14 [label=1];
switchMethodbb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"];
switchMethodbb0 -> switchMethodbb20 [label=2];
switchMethodbb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"];
switchMethodbb0 -> switchMethodbb26 [label=default];
switchMethodbb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"];
switchMethodbb8 -> switchMethodbb31 [label=T];
switchMethodbb14 -> switchMethodbb31 [label=T];
switchMethodbb20 -> switchMethodbb31 [label=T];
switchMethodbb26 -> switchMethodbb31;
switchMethodbb31 -> "switchMethodbb-2";
}
subgraph switchMethod2 {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"switchMethod2bb-1" [label=e,
shape=circle,
xlabel=switchMethod2];
switchMethod2bb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ILOAD 1|7: \
LOOKUPSWITCH 0: 8, 1000: 14, 2000: 20, default: 26}"];
"switchMethod2bb-1" -> switchMethod2bb0;
"switchMethod2bb-2" [label=x,
shape=circle];
switchMethod2bb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"];
switchMethod2bb0 -> switchMethod2bb8 [label=0];
switchMethod2bb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"];
switchMethod2bb0 -> switchMethod2bb14 [label=1000];
switchMethod2bb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"];
switchMethod2bb0 -> switchMethod2bb20 [label=2000];
switchMethod2bb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"];
switchMethod2bb0 -> switchMethod2bb26 [label=default];
switchMethod2bb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"];
switchMethod2bb8 -> switchMethod2bb31 [label=T];
switchMethod2bb14 -> switchMethod2bb31 [label=T];
switchMethod2bb20 -> switchMethod2bb31 [label=T];
switchMethod2bb26 -> switchMethod2bb31;
switchMethod2bb31 -> "switchMethod2bb-2";
}
subgraph whileMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"whileMethodbb-1" [label=e,
shape=circle,
xlabel=whileMethod];
whileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"];
"whileMethodbb-1" -> whileMethodbb0;
"whileMethodbb-2" [label=x,
shape=circle];
whileMethodbb4 [label="4|{4: // label|5: // line number information|6: // stack frame map|7: ILOAD 1|8: IFLE 19}"];
whileMethodbb0 -> whileMethodbb4;
whileMethodbb9 [label="9|{9: // label|10: // line number information|11: ILOAD 2|12: ILOAD 1|13: IADD |14: ISTORE 2|15: // label|16: // line number \
information|17: IINC 1 -1|18: GOTO 4}"];
whileMethodbb4 -> whileMethodbb9;
whileMethodbb19 [label="19|{19: // label|20: // line number information|21: // stack frame map|22: ILOAD 2|23: IRETURN }"];
whileMethodbb4 -> whileMethodbb19 [label=T];
whileMethodbb9 -> whileMethodbb4 [label=T];
whileMethodbb19 -> "whileMethodbb-2";
}
subgraph whileTrueMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"whileTrueMethodbb-1" [label=e,
shape=circle,
xlabel=whileTrueMethod];
whileTrueMethodbb0 [label="0|{0: // label|1: // line number information|2: // stack frame map|3: IINC 1 1|4: GOTO 0}"];
"whileTrueMethodbb-1" -> whileTrueMethodbb0;
"whileTrueMethodbb-2" [label=e,
shape=circle,
xlabel=whileTrueMethod];
whileTrueMethodbb0 -> whileTrueMethodbb0 [label=T];
}
subgraph alloc2Of3dArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"alloc2Of3dArrayMethodbb-1" [label=e,
shape=circle,
xlabel=alloc2Of3dArrayMethod];
alloc2Of3dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[[I 2|5: ARETURN }"];
"alloc2Of3dArrayMethodbb-1" -> alloc2Of3dArrayMethodbb0;
"alloc2Of3dArrayMethodbb-2" [label=x,
shape=circle];
alloc2Of3dArrayMethodbb0 -> "alloc2Of3dArrayMethodbb-2";
}
subgraph alloc2dArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"alloc2dArrayMethodbb-1" [label=e,
shape=circle,
xlabel=alloc2dArrayMethod];
alloc2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[I 2|5: ARETURN }"];
"alloc2dArrayMethodbb-1" -> alloc2dArrayMethodbb0;
"alloc2dArrayMethodbb-2" [label=x,
shape=circle];
alloc2dArrayMethodbb0 -> "alloc2dArrayMethodbb-2";
}
subgraph allocIntArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocIntArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocIntArrayMethod];
allocIntArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: NEWARRAY T_INT|4: ARETURN }"];
"allocIntArrayMethodbb-1" -> allocIntArrayMethodbb0;
"allocIntArrayMethodbb-2" [label=x,
shape=circle];
allocIntArrayMethodbb0 -> "allocIntArrayMethodbb-2";
}
subgraph allocObjectArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocObjectArrayMethodbb-1" [label=e,
shape=circle,
xlabel=allocObjectArrayMethod];
allocObjectArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: ANEWARRAY java/lang/Object|4: ARETURN }"];
"allocObjectArrayMethodbb-1" -> allocObjectArrayMethodbb0;
"allocObjectArrayMethodbb-2" [label=x,
shape=circle];
allocObjectArrayMethodbb0 -> "allocObjectArrayMethodbb-2";
}
subgraph allocObjectMethod {
node [label="\N",
shape=record,
xlabel=""
];
"allocObjectMethodbb-1" [label=e,
shape=circle,
xlabel=allocObjectMethod];
allocObjectMethodbb0 [label="0|{0: // label|1: // line number information|2: NEW java/lang/Object|3: DUP |4: INVOKESPECIAL java/lang/Object.<init> ()V|5: ARETURN }"];
"allocObjectMethodbb-1" -> allocObjectMethodbb0;
"allocObjectMethodbb-2" [label=x,
shape=circle];
allocObjectMethodbb0 -> "allocObjectMethodbb-2";
}
subgraph arrayLengthMethod {
node [label="\N",
shape=record,
xlabel=""
];
"arrayLengthMethodbb-1" [label=e,
shape=circle,
xlabel=arrayLengthMethod];
arrayLengthMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ARRAYLENGTH |4: IRETURN }"];
"arrayLengthMethodbb-1" -> arrayLengthMethodbb0;
"arrayLengthMethodbb-2" [label=x,
shape=circle];
arrayLengthMethodbb0 -> "arrayLengthMethodbb-2";
}
subgraph arrayReadMethod {
node [label="\N",
shape=record,
xlabel=""
];
"arrayReadMethodbb-1" [label=e,
shape=circle,
xlabel=arrayReadMethod];
arrayReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ICONST_0 |4: AALOAD |5: ARETURN }"];
"arrayReadMethodbb-1" -> arrayReadMethodbb0;
"arrayReadMethodbb-2" [label=x,
shape=circle];
arrayReadMethodbb0 -> "arrayReadMethodbb-2";
}
subgraph arrayWriteMethod {
node [label="\N",
shape=record,
xlabel=""
];
"arrayWriteMethodbb-1" [label=e,
shape=circle,
xlabel=arrayWriteMethod];
arrayWriteMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ICONST_0 |4: ALOAD 2|5: AASTORE |6: // label|7: // line number information|\
8: RETURN }"];
"arrayWriteMethodbb-1" -> arrayWriteMethodbb0;
"arrayWriteMethodbb-2" [label=x,
shape=circle];
arrayWriteMethodbb0 -> "arrayWriteMethodbb-2";
}
subgraph condMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"condMethodbb-1" [label=e,
shape=circle,
xlabel=condMethod];
condMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"];
"condMethodbb-1" -> condMethodbb0;
"condMethodbb-2" [label=x,
shape=circle];
condMethodbb5 [label="5|{5: ILOAD 1|6: GOTO 10}"];
condMethodbb0 -> condMethodbb5;
condMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ILOAD 2}"];
condMethodbb0 -> condMethodbb7 [label=T];
condMethodbb10 [label="10|{10: // label|11: // stack frame map|12: IRETURN }"];
condMethodbb5 -> condMethodbb10 [label=T];
condMethodbb7 -> condMethodbb10;
condMethodbb10 -> "condMethodbb-2";
}
subgraph doWhileMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"doWhileMethodbb-1" [label=e,
shape=circle,
xlabel=doWhileMethod];
doWhileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"];
"doWhileMethodbb-1" -> doWhileMethodbb0;
"doWhileMethodbb-2" [label=x,
shape=circle];
doWhileMethodbb4 [label="4|{4: // label|5: // line number information|6: // stack frame map|7: ILOAD 2|8: ILOAD 1|9: IADD |10: ISTORE 2|11: // label|\
12: // line number information|13: IINC 1 -1|14: // label|15: // line number information|16: ILOAD 1|17: IFGT 4}"];
doWhileMethodbb0 -> doWhileMethodbb4;
doWhileMethodbb4 -> doWhileMethodbb4 [label=T];
doWhileMethodbb18 [label="18|{18: // label|19: // line number information|20: ILOAD 2|21: IRETURN }"];
doWhileMethodbb4 -> doWhileMethodbb18;
doWhileMethodbb18 -> "doWhileMethodbb-2";
}
subgraph doWhileTrue {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"doWhileTruebb-1" [label=e,
shape=circle,
xlabel=doWhileTrue];
doWhileTruebb0 [label="0|{0: // label|1: // line number information|2: // stack frame map|3: IINC 1 1|4: // label|5: // line number information|6: \
GOTO 0}"];
"doWhileTruebb-1" -> doWhileTruebb0;
"doWhileTruebb-2" [label=e,
shape=circle,
xlabel=doWhileTrue];
doWhileTruebb0 -> doWhileTruebb0 [label=T];
}
subgraph emptyMethod {
node [label="\N",
shape=record,
xlabel=""
];
"emptyMethodbb-1" [label=e,
shape=circle,
xlabel=emptyMethod];
emptyMethodbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"];
"emptyMethodbb-1" -> emptyMethodbb0;
"emptyMethodbb-2" [label=x,
shape=circle];
emptyMethodbb0 -> "emptyMethodbb-2";
}
subgraph fieldReadMethod {
node [label="\N",
shape=record,
xlabel=""
];
"fieldReadMethodbb-1" [label=e,
shape=circle,
xlabel=fieldReadMethod];
fieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: GETFIELD ExampleClass.field Ljava/lang/String;|4: ARETURN }"];
"fieldReadMethodbb-1" -> fieldReadMethodbb0;
"fieldReadMethodbb-2" [label=x,
shape=circle];
fieldReadMethodbb0 -> "fieldReadMethodbb-2";
}
subgraph fieldWriteMethod {
node [label="\N",
shape=record,
xlabel=""
];
"fieldWriteMethodbb-1" [label=e,
shape=circle,
xlabel=fieldWriteMethod];
fieldWriteMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: ALOAD 1|4: PUTFIELD ExampleClass.field Ljava/lang/String;|5: // label|\
6: // line number information|7: RETURN }"];
"fieldWriteMethodbb-1" -> fieldWriteMethodbb0;
"fieldWriteMethodbb-2" [label=x,
shape=circle];
fieldWriteMethodbb0 -> "fieldWriteMethodbb-2";
}
subgraph forEachArrayMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forEachArrayMethodbb-1" [label=e,
shape=circle,
xlabel=forEachArrayMethod];
forEachArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ALOAD 1|7: \
ASTORE 3|8: ALOAD 3|9: ARRAYLENGTH |10: ISTORE 4|11: ICONST_0 |12: ISTORE 5}"];
"forEachArrayMethodbb-1" -> forEachArrayMethodbb0;
"forEachArrayMethodbb-2" [label=x,
shape=circle];
forEachArrayMethodbb13 [label="13|{13: // label|14: // stack frame map|15: ILOAD 5|16: ILOAD 4|17: IF_ICMPGE 29}"];
forEachArrayMethodbb0 -> forEachArrayMethodbb13;
forEachArrayMethodbb18 [label="18|{18: ALOAD 3|19: ILOAD 5|20: AALOAD |21: ASTORE 6|22: // label|23: // line number information|24: IINC 2 1|25: // label|26: // \
line number information|27: IINC 5 1|28: GOTO 13}"];
forEachArrayMethodbb13 -> forEachArrayMethodbb18;
forEachArrayMethodbb29 [label="29|{29: // label|30: // line number information|31: // stack frame map|32: ILOAD 2|33: IRETURN }"];
forEachArrayMethodbb13 -> forEachArrayMethodbb29 [label=T];
forEachArrayMethodbb18 -> forEachArrayMethodbb13 [label=T];
forEachArrayMethodbb29 -> "forEachArrayMethodbb-2";
}
subgraph forEachCollectionMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forEachCollectionMethodbb-1" [label=e,
shape=circle,
xlabel=forEachCollectionMethod];
forEachCollectionMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ALOAD 1|7: \
INVOKEINTERFACE java/util/Set.iterator ()Ljava/util/Iterator;|8: ASTORE 3}"];
"forEachCollectionMethodbb-1" -> forEachCollectionMethodbb0;
"forEachCollectionMethodbb-2" [label=x,
shape=circle];
forEachCollectionMethodbb9 [label="9|{9: // label|10: // stack frame map|11: ALOAD 3|12: INVOKEINTERFACE java/util/Iterator.hasNext ()Z|13: IFEQ 24}"];
forEachCollectionMethodbb0 -> forEachCollectionMethodbb9;
forEachCollectionMethodbb14 [label="14|{14: ALOAD 3|15: INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object;|16: CHECKCAST java/lang/String|17: ASTORE 4|18: // \
label|19: // line number information|20: IINC 2 1|21: // label|22: // line number information|23: GOTO 9}"];
forEachCollectionMethodbb9 -> forEachCollectionMethodbb14;
forEachCollectionMethodbb24 [label="24|{24: // label|25: // line number information|26: // stack frame map|27: ILOAD 2|28: IRETURN }"];
forEachCollectionMethodbb9 -> forEachCollectionMethodbb24 [label=T];
forEachCollectionMethodbb14 -> forEachCollectionMethodbb9 [label=T];
forEachCollectionMethodbb24 -> "forEachCollectionMethodbb-2";
}
subgraph ifMethod {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"ifMethodbb-1" [label=e,
shape=circle,
xlabel=ifMethod];
ifMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2|4: // label|5: // line number information|6: ILOAD 1|7: \
IFGE 12}"];
"ifMethodbb-1" -> ifMethodbb0;
"ifMethodbb-2" [label=x,
shape=circle];
ifMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: ISTORE 2}"];
ifMethodbb0 -> ifMethodbb8;
ifMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ILOAD 2|16: IRETURN }"];
ifMethodbb0 -> ifMethodbb12 [label=T];
ifMethodbb8 -> ifMethodbb12;
ifMethodbb12 -> "ifMethodbb-2";
}
subgraph init {
node [label="\N",
shape=record,
xlabel=""
];
"initbb-1" [label=e,
shape=circle,
xlabel=init];
initbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: INVOKESPECIAL java/lang/Object.<init> ()V|4: RETURN }"];
"initbb-1" -> initbb0;
"initbb-2" [label=x,
shape=circle];
initbb0 -> "initbb-2";
}
subgraph forEver {
node [label="\N",
shape=record,
xlabel=""
];
edge [label=""];
"forEverbb-1" [label=e,
shape=circle,
xlabel=forEver];
forEverbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"];
"forEverbb-1" -> forEverbb0;
"forEverbb-2" [label=e,
shape=circle,
xlabel=forEver];
forEverbb4 [label="4|{4: // label|5: // stack frame map|6: IINC 2 1|7: GOTO 4}"];
forEverbb0 -> forEverbb4;
forEverbb4 -> forEverbb4 [label=T];
}
}