corrections

This commit is contained in:
Claudio Maggioni 2023-10-15 22:24:23 +02:00
parent ff40dbc7f7
commit 0dd793e2f8
49 changed files with 1056 additions and 420 deletions

View file

@ -11,6 +11,10 @@ Go to [this Lab on iCorsi](https://www.icorsi.ch/course/view.php?id=16963).
| First Name | Claudio | | First Name | Claudio |
| Last Name | Maggioni | | Last Name | Maggioni |
**NOTE:** the combined PDF with all CFGs, one per method, can be found in `test-output/all.pdf`. Method CFGs are
laid in side-by-side as I was not able to generate a one-per-page PDF as instructed. I told this to Prof. Hauswirth
on wednesday, and I was told to ask to Mr. Di Lauro if this layout was fine too, but I forgot. So, I'd like to apologize if this causes any inconvenience.
## Submission Checklist ## Submission Checklist
Please complete this checklist (turn [ ] into [X]) before you submit: Please complete this checklist (turn [ ] into [X]) before you submit:

47
all.m4 Normal file
View file

@ -0,0 +1,47 @@
digraph all
{
define(`digraph',`subgraph')
include(test-output/<init>.dot)
include(test-output/alloc2Of3dArrayMethod.dot)
include(test-output/alloc2dArrayMethod.dot)
include(test-output/allocAndInit2dArrayMethod.dot)
include(test-output/allocAndInitIntArrayMethod.dot)
include(test-output/allocAndInitObjectArrayMethod.dot)
include(test-output/allocIncomplete2dArrayMethod.dot)
include(test-output/allocIntArrayMethod.dot)
include(test-output/allocObjectArrayMethod.dot)
include(test-output/allocObjectMethod.dot)
include(test-output/arrayLengthMethod.dot)
include(test-output/arrayReadMethod.dot)
include(test-output/arrayWriteMethod.dot)
include(test-output/condMethod.dot)
include(test-output/doWhileMethod.dot)
include(test-output/doWhileTrue.dot)
include(test-output/emptyMethod.dot)
include(test-output/fieldReadMethod.dot)
include(test-output/fieldWriteMethod.dot)
include(test-output/forEachArrayMethod.dot)
include(test-output/forEachCollectionMethod.dot)
include(test-output/forEver.dot)
include(test-output/forMethod.dot)
include(test-output/forWithBreakMethod.dot)
include(test-output/forWithContinueMethod.dot)
include(test-output/ifElseMethod.dot)
include(test-output/ifMethod.dot)
include(test-output/instanceCallMethod.dot)
include(test-output/instanceCallTarget.dot)
include(test-output/interfaceCallMethod.dot)
include(test-output/nestedFor.dot)
include(test-output/nonShortCircuitMethod.dot)
include(test-output/privateInstanceCallMethod.dot)
include(test-output/privateInstanceCallTarget.dot)
include(test-output/shortCircuitMethod.dot)
include(test-output/staticCallMethod.dot)
include(test-output/staticCallTarget.dot)
include(test-output/staticFieldReadMethod.dot)
include(test-output/staticFieldWriteMethod.dot)
include(test-output/switchMethod.dot)
include(test-output/switchMethod2.dot)
include(test-output/whileMethod.dot)
include(test-output/whileTrueMethod.dot)
}

View file

@ -3,4 +3,5 @@
set -eou pipefail set -eou pipefail
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" cd -- "$( dirname -- "${BASH_SOURCE[0]}" )"
cat test-output/*.dot | gvpack -u | dot -Tpdf > test-output/all.pdf m4 all.m4 > test-output/all.dot
dot -Tpdf test-output/all.dot > test-output/all.pdf

View file

@ -9,19 +9,19 @@ public class ControlFlowGraphRenderer {
private final StringBuilder code = new StringBuilder(); private final StringBuilder code = new StringBuilder();
private int indentationLevel = 0; private int indentationLevel = 0;
private static String nodeIdentifier(final BasicBlock bb) { private static String nodeIdentifier(final BasicBlock bb, final String graphId) {
if (bb.getInEdges().isEmpty()) { if (bb.getInEdges().isEmpty()) {
return "e"; return graphId + "e";
} else if (bb.getOutEdges().isEmpty()) { } else if (bb.getOutEdges().isEmpty()) {
return "x"; return graphId + "x";
} else { } else {
return "bb" + bb.getId(); return graphId + "bb" + bb.getId();
} }
} }
private static String nodeStyle(final BasicBlock bb) { private static String nodeStyle(final BasicBlock bb, final String label) {
if (bb.getInEdges().isEmpty()) { if (bb.getInEdges().isEmpty()) {
return "[shape=circle,label=\"e\"]"; return "[shape=circle,label=\"e\",xlabel=\"" + label + "\"]";
} else if (bb.getOutEdges().isEmpty()) { } else if (bb.getOutEdges().isEmpty()) {
return "[shape=circle,label=\"x\"]"; return "[shape=circle,label=\"x\"]";
} else { } else {
@ -40,15 +40,16 @@ public class ControlFlowGraphRenderer {
code.append(INDENTATION.repeat(indentationLevel)).append(line).append('\n'); code.append(INDENTATION.repeat(indentationLevel)).append(line).append('\n');
} }
private String render(final String label, final ControlFlowGraph graph) { private String render(final String desiredLabel, final ControlFlowGraph graph) {
final String label = desiredLabel.replaceAll("\\W+", "");
line("digraph " + label + " {"); line("digraph " + label + " {");
indentationLevel++;
line("label=\"" + label + "\";");
code.append('\n'); code.append('\n');
indentationLevel++;
line("node [shape=record]"); line("node [shape=record]");
for (final BasicBlock bb : graph.getNodes()) { for (final BasicBlock bb : graph.getNodes()) {
line(nodeIdentifier(bb) + " " + nodeStyle(bb)); line(nodeIdentifier(bb, label) + " " + nodeStyle(bb, label));
} }
code.append('\n'); code.append('\n');
@ -56,7 +57,7 @@ public class ControlFlowGraphRenderer {
final String l = e.getLabel(); final String l = e.getLabel();
final String suffix = l == null || l.isBlank() ? "" : (" [label=\"" + e.getLabel() + "\"]"); final String suffix = l == null || l.isBlank() ? "" : (" [label=\"" + e.getLabel() + "\"]");
line(nodeIdentifier(e.getFrom()) + " -> " + nodeIdentifier(e.getTo()) + suffix); line(nodeIdentifier(e.getFrom(), label) + " -> " + nodeIdentifier(e.getTo(), label) + suffix);
} }
indentationLevel--; indentationLevel--;
line("}"); line("}");

View file

@ -1,11 +1,10 @@
digraph <init> { digraph init {
label="<init>";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] inite [shape=circle,label="e",xlabel="init"]
x [shape=circle,label="x"] initx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: INVOKESPECIAL java/lang/Object.<init> ()V|4: RETURN }"] initbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: INVOKESPECIAL java/lang/Object.<init> ()V|4: RETURN }"]
e -> bb0 inite -> initbb0
bb0 -> x initbb0 -> initx
} }

626
test-output/all.dot Normal file
View file

@ -0,0 +1,626 @@
digraph all
{
subgraph init {
node [shape=record]
inite [shape=circle,label="e",xlabel="init"]
initx [shape=circle,label="x"]
initbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: INVOKESPECIAL java/lang/Object.<init> ()V|4: RETURN }"]
inite -> initbb0
initbb0 -> initx
}
subgraph alloc2Of3dArrayMethod {
node [shape=record]
alloc2Of3dArrayMethode [shape=circle,label="e",xlabel="alloc2Of3dArrayMethod"]
alloc2Of3dArrayMethodx [shape=circle,label="x"]
alloc2Of3dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[[I 2|5: ARETURN }"]
alloc2Of3dArrayMethode -> alloc2Of3dArrayMethodbb0
alloc2Of3dArrayMethodbb0 -> alloc2Of3dArrayMethodx
}
subgraph alloc2dArrayMethod {
node [shape=record]
alloc2dArrayMethode [shape=circle,label="e",xlabel="alloc2dArrayMethod"]
alloc2dArrayMethodx [shape=circle,label="x"]
alloc2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[I 2|5: ARETURN }"]
alloc2dArrayMethode -> alloc2dArrayMethodbb0
alloc2dArrayMethodbb0 -> alloc2dArrayMethodx
}
subgraph allocAndInit2dArrayMethod {
node [shape=record]
allocAndInit2dArrayMethode [shape=circle,label="e",xlabel="allocAndInit2dArrayMethod"]
allocAndInit2dArrayMethodx [shape=circle,label="x"]
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 }"]
allocAndInit2dArrayMethode -> allocAndInit2dArrayMethodbb0
allocAndInit2dArrayMethodbb0 -> allocAndInit2dArrayMethodx
}
subgraph allocAndInitIntArrayMethod {
node [shape=record]
allocAndInitIntArrayMethode [shape=circle,label="e",xlabel="allocAndInitIntArrayMethod"]
allocAndInitIntArrayMethodx [shape=circle,label="x"]
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 }"]
allocAndInitIntArrayMethode -> allocAndInitIntArrayMethodbb0
allocAndInitIntArrayMethodbb0 -> allocAndInitIntArrayMethodx
}
subgraph allocAndInitObjectArrayMethod {
node [shape=record]
allocAndInitObjectArrayMethode [shape=circle,label="e",xlabel="allocAndInitObjectArrayMethod"]
allocAndInitObjectArrayMethodx [shape=circle,label="x"]
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 }"]
allocAndInitObjectArrayMethode -> allocAndInitObjectArrayMethodbb0
allocAndInitObjectArrayMethodbb0 -> allocAndInitObjectArrayMethodx
}
subgraph allocIncomplete2dArrayMethod {
node [shape=record]
allocIncomplete2dArrayMethode [shape=circle,label="e",xlabel="allocIncomplete2dArrayMethod"]
allocIncomplete2dArrayMethodx [shape=circle,label="x"]
allocIncomplete2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ANEWARRAY [I|4: ARETURN }"]
allocIncomplete2dArrayMethode -> allocIncomplete2dArrayMethodbb0
allocIncomplete2dArrayMethodbb0 -> allocIncomplete2dArrayMethodx
}
subgraph allocIntArrayMethod {
node [shape=record]
allocIntArrayMethode [shape=circle,label="e",xlabel="allocIntArrayMethod"]
allocIntArrayMethodx [shape=circle,label="x"]
allocIntArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: NEWARRAY T_INT|4: ARETURN }"]
allocIntArrayMethode -> allocIntArrayMethodbb0
allocIntArrayMethodbb0 -> allocIntArrayMethodx
}
subgraph allocObjectArrayMethod {
node [shape=record]
allocObjectArrayMethode [shape=circle,label="e",xlabel="allocObjectArrayMethod"]
allocObjectArrayMethodx [shape=circle,label="x"]
allocObjectArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: ANEWARRAY java/lang/Object|4: ARETURN }"]
allocObjectArrayMethode -> allocObjectArrayMethodbb0
allocObjectArrayMethodbb0 -> allocObjectArrayMethodx
}
subgraph allocObjectMethod {
node [shape=record]
allocObjectMethode [shape=circle,label="e",xlabel="allocObjectMethod"]
allocObjectMethodx [shape=circle,label="x"]
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 }"]
allocObjectMethode -> allocObjectMethodbb0
allocObjectMethodbb0 -> allocObjectMethodx
}
subgraph arrayLengthMethod {
node [shape=record]
arrayLengthMethode [shape=circle,label="e",xlabel="arrayLengthMethod"]
arrayLengthMethodx [shape=circle,label="x"]
arrayLengthMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ARRAYLENGTH |4: IRETURN }"]
arrayLengthMethode -> arrayLengthMethodbb0
arrayLengthMethodbb0 -> arrayLengthMethodx
}
subgraph arrayReadMethod {
node [shape=record]
arrayReadMethode [shape=circle,label="e",xlabel="arrayReadMethod"]
arrayReadMethodx [shape=circle,label="x"]
arrayReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ICONST_0 |4: AALOAD |5: ARETURN }"]
arrayReadMethode -> arrayReadMethodbb0
arrayReadMethodbb0 -> arrayReadMethodx
}
subgraph arrayWriteMethod {
node [shape=record]
arrayWriteMethode [shape=circle,label="e",xlabel="arrayWriteMethod"]
arrayWriteMethodx [shape=circle,label="x"]
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 }"]
arrayWriteMethode -> arrayWriteMethodbb0
arrayWriteMethodbb0 -> arrayWriteMethodx
}
subgraph condMethod {
node [shape=record]
condMethode [shape=circle,label="e",xlabel="condMethod"]
condMethodx [shape=circle,label="x"]
condMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"]
condMethodbb5 [label="5|{5: ILOAD 1|6: GOTO 10}"]
condMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ILOAD 2}"]
condMethodbb10 [label="10|{10: // label|11: // stack frame map|12: IRETURN }"]
condMethode -> condMethodbb0
condMethodbb0 -> condMethodbb5
condMethodbb7 -> condMethodbb10
condMethodbb10 -> condMethodx
condMethodbb0 -> condMethodbb7 [label="T"]
condMethodbb5 -> condMethodbb10 [label="T"]
}
subgraph doWhileMethod {
node [shape=record]
doWhileMethode [shape=circle,label="e",xlabel="doWhileMethod"]
doWhileMethodx [shape=circle,label="x"]
doWhileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
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}"]
doWhileMethodbb18 [label="18|{18: // label|19: // line number information|20: ILOAD 2|21: IRETURN }"]
doWhileMethode -> doWhileMethodbb0
doWhileMethodbb0 -> doWhileMethodbb4
doWhileMethodbb4 -> doWhileMethodbb18
doWhileMethodbb18 -> doWhileMethodx
doWhileMethodbb4 -> doWhileMethodbb4 [label="T"]
}
subgraph doWhileTrue {
node [shape=record]
doWhileTruee [shape=circle,label="e",xlabel="doWhileTrue"]
doWhileTruee [shape=circle,label="e",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}"]
doWhileTruee -> doWhileTruebb0
doWhileTruebb0 -> doWhileTruebb0 [label="T"]
}
subgraph emptyMethod {
node [shape=record]
emptyMethode [shape=circle,label="e",xlabel="emptyMethod"]
emptyMethodx [shape=circle,label="x"]
emptyMethodbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
emptyMethode -> emptyMethodbb0
emptyMethodbb0 -> emptyMethodx
}
subgraph fieldReadMethod {
node [shape=record]
fieldReadMethode [shape=circle,label="e",xlabel="fieldReadMethod"]
fieldReadMethodx [shape=circle,label="x"]
fieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: GETFIELD ExampleClass.field Ljava/lang/String;|4: ARETURN }"]
fieldReadMethode -> fieldReadMethodbb0
fieldReadMethodbb0 -> fieldReadMethodx
}
subgraph fieldWriteMethod {
node [shape=record]
fieldWriteMethode [shape=circle,label="e",xlabel="fieldWriteMethod"]
fieldWriteMethodx [shape=circle,label="x"]
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 }"]
fieldWriteMethode -> fieldWriteMethodbb0
fieldWriteMethodbb0 -> fieldWriteMethodx
}
subgraph forEachArrayMethod {
node [shape=record]
forEachArrayMethode [shape=circle,label="e",xlabel="forEachArrayMethod"]
forEachArrayMethodx [shape=circle,label="x"]
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}"]
forEachArrayMethodbb13 [label="13|{13: // label|14: // stack frame map|15: ILOAD 5|16: ILOAD 4|17: IF_ICMPGE 29}"]
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}"]
forEachArrayMethodbb29 [label="29|{29: // label|30: // line number information|31: // stack frame map|32: ILOAD 2|33: IRETURN }"]
forEachArrayMethode -> forEachArrayMethodbb0
forEachArrayMethodbb0 -> forEachArrayMethodbb13
forEachArrayMethodbb13 -> forEachArrayMethodbb18
forEachArrayMethodbb29 -> forEachArrayMethodx
forEachArrayMethodbb18 -> forEachArrayMethodbb13 [label="T"]
forEachArrayMethodbb13 -> forEachArrayMethodbb29 [label="T"]
}
subgraph forEachCollectionMethod {
node [shape=record]
forEachCollectionMethode [shape=circle,label="e",xlabel="forEachCollectionMethod"]
forEachCollectionMethodx [shape=circle,label="x"]
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}"]
forEachCollectionMethodbb9 [label="9|{9: // label|10: // stack frame map|11: ALOAD 3|12: INVOKEINTERFACE java/util/Iterator.hasNext ()Z|13: IFEQ 24}"]
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}"]
forEachCollectionMethodbb24 [label="24|{24: // label|25: // line number information|26: // stack frame map|27: ILOAD 2|28: IRETURN }"]
forEachCollectionMethode -> forEachCollectionMethodbb0
forEachCollectionMethodbb0 -> forEachCollectionMethodbb9
forEachCollectionMethodbb9 -> forEachCollectionMethodbb14
forEachCollectionMethodbb24 -> forEachCollectionMethodx
forEachCollectionMethodbb14 -> forEachCollectionMethodbb9 [label="T"]
forEachCollectionMethodbb9 -> forEachCollectionMethodbb24 [label="T"]
}
subgraph forEver {
node [shape=record]
forEvere [shape=circle,label="e",xlabel="forEver"]
forEvere [shape=circle,label="e",xlabel="forEver"]
forEverbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
forEverbb4 [label="4|{4: // label|5: // stack frame map|6: IINC 2 1|7: GOTO 4}"]
forEvere -> forEverbb0
forEverbb0 -> forEverbb4
forEverbb4 -> forEverbb4 [label="T"]
}
subgraph forMethod {
node [shape=record]
forMethode [shape=circle,label="e",xlabel="forMethod"]
forMethodx [shape=circle,label="x"]
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}"]
forMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 23}"]
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}"]
forMethodbb23 [label="23|{23: // label|24: // line number information|25: // stack frame map|26: ILOAD 2|27: IRETURN }"]
forMethode -> forMethodbb0
forMethodbb0 -> forMethodbb8
forMethodbb8 -> forMethodbb13
forMethodbb23 -> forMethodx
forMethodbb13 -> forMethodbb8 [label="T"]
forMethodbb8 -> forMethodbb23 [label="T"]
}
subgraph forWithBreakMethod {
node [shape=record]
forWithBreakMethode [shape=circle,label="e",xlabel="forWithBreakMethod"]
forWithBreakMethodx [shape=circle,label="x"]
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}"]
forWithBreakMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 32}"]
forWithBreakMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"]
forWithBreakMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 32}"]
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}"]
forWithBreakMethodbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: ILOAD 2|36: IRETURN }"]
forWithBreakMethode -> forWithBreakMethodbb0
forWithBreakMethodbb0 -> forWithBreakMethodbb8
forWithBreakMethodbb8 -> forWithBreakMethodbb13
forWithBreakMethodbb13 -> forWithBreakMethodbb18
forWithBreakMethodbb32 -> forWithBreakMethodx
forWithBreakMethodbb21 -> forWithBreakMethodbb8 [label="T"]
forWithBreakMethodbb13 -> forWithBreakMethodbb21 [label="T"]
forWithBreakMethodbb8 -> forWithBreakMethodbb32 [label="T"]
forWithBreakMethodbb18 -> forWithBreakMethodbb32 [label="T"]
}
subgraph forWithContinueMethod {
node [shape=record]
forWithContinueMethode [shape=circle,label="e",xlabel="forWithContinueMethod"]
forWithContinueMethodx [shape=circle,label="x"]
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}"]
forWithContinueMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 33}"]
forWithContinueMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"]
forWithContinueMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 28}"]
forWithContinueMethodbb21 [label="21|{21: // label|22: // line number information|23: // stack frame map|24: ILOAD 2|25: ILOAD 3|26: IADD |27: ISTORE 2}"]
forWithContinueMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: IINC 3 1|32: GOTO 8}"]
forWithContinueMethodbb33 [label="33|{33: // label|34: // line number information|35: // stack frame map|36: ILOAD 2|37: IRETURN }"]
forWithContinueMethode -> forWithContinueMethodbb0
forWithContinueMethodbb0 -> forWithContinueMethodbb8
forWithContinueMethodbb8 -> forWithContinueMethodbb13
forWithContinueMethodbb13 -> forWithContinueMethodbb18
forWithContinueMethodbb21 -> forWithContinueMethodbb28
forWithContinueMethodbb33 -> forWithContinueMethodx
forWithContinueMethodbb28 -> forWithContinueMethodbb8 [label="T"]
forWithContinueMethodbb13 -> forWithContinueMethodbb21 [label="T"]
forWithContinueMethodbb18 -> forWithContinueMethodbb28 [label="T"]
forWithContinueMethodbb8 -> forWithContinueMethodbb33 [label="T"]
}
subgraph ifElseMethod {
node [shape=record]
ifElseMethode [shape=circle,label="e",xlabel="ifElseMethod"]
ifElseMethodx [shape=circle,label="x"]
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}"]
ifElseMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_0 |11: ISTORE 2|12: GOTO 18}"]
ifElseMethodbb13 [label="13|{13: // label|14: // line number information|15: // stack frame map|16: ILOAD 1|17: ISTORE 2}"]
ifElseMethodbb18 [label="18|{18: // label|19: // line number information|20: // stack frame map|21: ILOAD 2|22: IRETURN }"]
ifElseMethode -> ifElseMethodbb0
ifElseMethodbb0 -> ifElseMethodbb8
ifElseMethodbb13 -> ifElseMethodbb18
ifElseMethodbb18 -> ifElseMethodx
ifElseMethodbb0 -> ifElseMethodbb13 [label="T"]
ifElseMethodbb8 -> ifElseMethodbb18 [label="T"]
}
subgraph ifMethod {
node [shape=record]
ifMethode [shape=circle,label="e",xlabel="ifMethod"]
ifMethodx [shape=circle,label="x"]
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}"]
ifMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: ISTORE 2}"]
ifMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ILOAD 2|16: IRETURN }"]
ifMethode -> ifMethodbb0
ifMethodbb0 -> ifMethodbb8
ifMethodbb8 -> ifMethodbb12
ifMethodbb12 -> ifMethodx
ifMethodbb0 -> ifMethodbb12 [label="T"]
}
subgraph instanceCallMethod {
node [shape=record]
instanceCallMethode [shape=circle,label="e",xlabel="instanceCallMethod"]
instanceCallMethodx [shape=circle,label="x"]
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 }"]
instanceCallMethode -> instanceCallMethodbb0
instanceCallMethodbb0 -> instanceCallMethodx
}
subgraph instanceCallTarget {
node [shape=record]
instanceCallTargete [shape=circle,label="e",xlabel="instanceCallTarget"]
instanceCallTargetx [shape=circle,label="x"]
instanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
instanceCallTargete -> instanceCallTargetbb0
instanceCallTargetbb0 -> instanceCallTargetx
}
subgraph interfaceCallMethod {
node [shape=record]
interfaceCallMethode [shape=circle,label="e",xlabel="interfaceCallMethod"]
interfaceCallMethodx [shape=circle,label="x"]
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 }"]
interfaceCallMethode -> interfaceCallMethodbb0
interfaceCallMethodbb0 -> interfaceCallMethodx
}
subgraph nestedFor {
node [shape=record]
nestedFore [shape=circle,label="e",xlabel="nestedFor"]
nestedForx [shape=circle,label="x"]
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}"]
nestedForbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 37}"]
nestedForbb13 [label="13|{13: // label|14: // line number information|15: ICONST_0 |16: ISTORE 4}"]
nestedForbb17 [label="17|{17: // label|18: // stack frame map|19: ILOAD 4|20: ILOAD 3|21: IF_ICMPGE 32}"]
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}"]
nestedForbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: IINC 3 1|36: GOTO 8}"]
nestedForbb37 [label="37|{37: // label|38: // line number information|39: // stack frame map|40: ILOAD 2|41: IRETURN }"]
nestedFore -> nestedForbb0
nestedForbb0 -> nestedForbb8
nestedForbb8 -> nestedForbb13
nestedForbb13 -> nestedForbb17
nestedForbb17 -> nestedForbb22
nestedForbb37 -> nestedForx
nestedForbb32 -> nestedForbb8 [label="T"]
nestedForbb22 -> nestedForbb17 [label="T"]
nestedForbb17 -> nestedForbb32 [label="T"]
nestedForbb8 -> nestedForbb37 [label="T"]
}
subgraph nonShortCircuitMethod {
node [shape=record]
nonShortCircuitMethode [shape=circle,label="e",xlabel="nonShortCircuitMethod"]
nonShortCircuitMethodx [shape=circle,label="x"]
nonShortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"]
nonShortCircuitMethodbb5 [label="5|{5: ICONST_1 |6: GOTO 10}"]
nonShortCircuitMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ICONST_0 }"]
nonShortCircuitMethodbb10 [label="10|{10: // label|11: // stack frame map|12: ILOAD 1|13: ILOAD 3|14: IF_ICMPGE 17}"]
nonShortCircuitMethodbb15 [label="15|{15: ICONST_1 |16: GOTO 20}"]
nonShortCircuitMethodbb17 [label="17|{17: // label|18: // stack frame map|19: ICONST_0 }"]
nonShortCircuitMethodbb20 [label="20|{20: // label|21: // stack frame map|22: IAND |23: IFEQ 28}"]
nonShortCircuitMethodbb24 [label="24|{24: // label|25: // line number information|26: ICONST_1 |27: IRETURN }"]
nonShortCircuitMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: ICONST_0 |32: IRETURN }"]
nonShortCircuitMethode -> nonShortCircuitMethodbb0
nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb5
nonShortCircuitMethodbb7 -> nonShortCircuitMethodbb10
nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb15
nonShortCircuitMethodbb17 -> nonShortCircuitMethodbb20
nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb24
nonShortCircuitMethodbb24 -> nonShortCircuitMethodx
nonShortCircuitMethodbb24 -> nonShortCircuitMethodbb28
nonShortCircuitMethodbb28 -> nonShortCircuitMethodx
nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb7 [label="T"]
nonShortCircuitMethodbb5 -> nonShortCircuitMethodbb10 [label="T"]
nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb17 [label="T"]
nonShortCircuitMethodbb15 -> nonShortCircuitMethodbb20 [label="T"]
nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb28 [label="T"]
}
subgraph privateInstanceCallMethod {
node [shape=record]
privateInstanceCallMethode [shape=circle,label="e",xlabel="privateInstanceCallMethod"]
privateInstanceCallMethodx [shape=circle,label="x"]
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 }"]
privateInstanceCallMethode -> privateInstanceCallMethodbb0
privateInstanceCallMethodbb0 -> privateInstanceCallMethodx
}
subgraph privateInstanceCallTarget {
node [shape=record]
privateInstanceCallTargete [shape=circle,label="e",xlabel="privateInstanceCallTarget"]
privateInstanceCallTargetx [shape=circle,label="x"]
privateInstanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
privateInstanceCallTargete -> privateInstanceCallTargetbb0
privateInstanceCallTargetbb0 -> privateInstanceCallTargetx
}
subgraph shortCircuitMethod {
node [shape=record]
shortCircuitMethode [shape=circle,label="e",xlabel="shortCircuitMethod"]
shortCircuitMethodx [shape=circle,label="x"]
shortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 12}"]
shortCircuitMethodbb5 [label="5|{5: ILOAD 1|6: ILOAD 3|7: IF_ICMPGE 12}"]
shortCircuitMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: IRETURN }"]
shortCircuitMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ICONST_0 |16: IRETURN }"]
shortCircuitMethode -> shortCircuitMethodbb0
shortCircuitMethodbb0 -> shortCircuitMethodbb5
shortCircuitMethodbb5 -> shortCircuitMethodbb8
shortCircuitMethodbb8 -> shortCircuitMethodx
shortCircuitMethodbb8 -> shortCircuitMethodbb12
shortCircuitMethodbb12 -> shortCircuitMethodx
shortCircuitMethodbb0 -> shortCircuitMethodbb12 [label="T"]
shortCircuitMethodbb5 -> shortCircuitMethodbb12 [label="T"]
}
subgraph staticCallMethod {
node [shape=record]
staticCallMethode [shape=circle,label="e",xlabel="staticCallMethod"]
staticCallMethodx [shape=circle,label="x"]
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 }"]
staticCallMethode -> staticCallMethodbb0
staticCallMethodbb0 -> staticCallMethodx
}
subgraph staticCallTarget {
node [shape=record]
staticCallTargete [shape=circle,label="e",xlabel="staticCallTarget"]
staticCallTargetx [shape=circle,label="x"]
staticCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
staticCallTargete -> staticCallTargetbb0
staticCallTargetbb0 -> staticCallTargetx
}
subgraph staticFieldReadMethod {
node [shape=record]
staticFieldReadMethode [shape=circle,label="e",xlabel="staticFieldReadMethod"]
staticFieldReadMethodx [shape=circle,label="x"]
staticFieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: GETSTATIC ExampleClass.staticField Ljava/lang/String;|3: ARETURN }"]
staticFieldReadMethode -> staticFieldReadMethodbb0
staticFieldReadMethodbb0 -> staticFieldReadMethodx
}
subgraph staticFieldWriteMethod {
node [shape=record]
staticFieldWriteMethode [shape=circle,label="e",xlabel="staticFieldWriteMethod"]
staticFieldWriteMethodx [shape=circle,label="x"]
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 }"]
staticFieldWriteMethode -> staticFieldWriteMethodbb0
staticFieldWriteMethodbb0 -> staticFieldWriteMethodx
}
subgraph switchMethod {
node [shape=record]
switchMethode [shape=circle,label="e",xlabel="switchMethod"]
switchMethodx [shape=circle,label="x"]
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}"]
switchMethodbb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"]
switchMethodbb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"]
switchMethodbb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"]
switchMethodbb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"]
switchMethodbb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"]
switchMethode -> switchMethodbb0
switchMethodbb26 -> switchMethodbb31
switchMethodbb31 -> switchMethodx
switchMethodbb0 -> switchMethodbb8 [label="0"]
switchMethodbb0 -> switchMethodbb14 [label="1"]
switchMethodbb0 -> switchMethodbb20 [label="2"]
switchMethodbb0 -> switchMethodbb26 [label="default"]
switchMethodbb8 -> switchMethodbb31 [label="T"]
switchMethodbb14 -> switchMethodbb31 [label="T"]
switchMethodbb20 -> switchMethodbb31 [label="T"]
}
subgraph switchMethod2 {
node [shape=record]
switchMethod2e [shape=circle,label="e",xlabel="switchMethod2"]
switchMethod2x [shape=circle,label="x"]
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}"]
switchMethod2bb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"]
switchMethod2bb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"]
switchMethod2bb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"]
switchMethod2bb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"]
switchMethod2bb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"]
switchMethod2e -> switchMethod2bb0
switchMethod2bb26 -> switchMethod2bb31
switchMethod2bb31 -> switchMethod2x
switchMethod2bb0 -> switchMethod2bb8 [label="0"]
switchMethod2bb0 -> switchMethod2bb14 [label="1000"]
switchMethod2bb0 -> switchMethod2bb20 [label="2000"]
switchMethod2bb0 -> switchMethod2bb26 [label="default"]
switchMethod2bb8 -> switchMethod2bb31 [label="T"]
switchMethod2bb14 -> switchMethod2bb31 [label="T"]
switchMethod2bb20 -> switchMethod2bb31 [label="T"]
}
subgraph whileMethod {
node [shape=record]
whileMethode [shape=circle,label="e",xlabel="whileMethod"]
whileMethodx [shape=circle,label="x"]
whileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
whileMethodbb4 [label="4|{4: // label|5: // line number information|6: // stack frame map|7: ILOAD 1|8: IFLE 19}"]
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}"]
whileMethodbb19 [label="19|{19: // label|20: // line number information|21: // stack frame map|22: ILOAD 2|23: IRETURN }"]
whileMethode -> whileMethodbb0
whileMethodbb0 -> whileMethodbb4
whileMethodbb4 -> whileMethodbb9
whileMethodbb19 -> whileMethodx
whileMethodbb9 -> whileMethodbb4 [label="T"]
whileMethodbb4 -> whileMethodbb19 [label="T"]
}
subgraph whileTrueMethod {
node [shape=record]
whileTrueMethode [shape=circle,label="e",xlabel="whileTrueMethod"]
whileTrueMethode [shape=circle,label="e",xlabel="whileTrueMethod"]
whileTrueMethodbb0 [label="0|{0: // label|1: // line number information|2: // stack frame map|3: IINC 1 1|4: GOTO 0}"]
whileTrueMethode -> whileTrueMethodbb0
whileTrueMethodbb0 -> whileTrueMethodbb0 [label="T"]
}
}

Binary file not shown.

View file

@ -1,11 +1,10 @@
digraph alloc2Of3dArrayMethod { digraph alloc2Of3dArrayMethod {
label="alloc2Of3dArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] alloc2Of3dArrayMethode [shape=circle,label="e",xlabel="alloc2Of3dArrayMethod"]
x [shape=circle,label="x"] alloc2Of3dArrayMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[[I 2|5: ARETURN }"] alloc2Of3dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[[I 2|5: ARETURN }"]
e -> bb0 alloc2Of3dArrayMethode -> alloc2Of3dArrayMethodbb0
bb0 -> x alloc2Of3dArrayMethodbb0 -> alloc2Of3dArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph alloc2dArrayMethod { digraph alloc2dArrayMethod {
label="alloc2dArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] alloc2dArrayMethode [shape=circle,label="e",xlabel="alloc2dArrayMethod"]
x [shape=circle,label="x"] alloc2dArrayMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[I 2|5: ARETURN }"] alloc2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ICONST_3 |4: MULTIANEWARRAY [[I 2|5: ARETURN }"]
e -> bb0 alloc2dArrayMethode -> alloc2dArrayMethodbb0
bb0 -> x alloc2dArrayMethodbb0 -> alloc2dArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocAndInit2dArrayMethod { digraph allocAndInit2dArrayMethod {
label="allocAndInit2dArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocAndInit2dArrayMethode [shape=circle,label="e",xlabel="allocAndInit2dArrayMethod"]
x [shape=circle,label="x"] allocAndInit2dArrayMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 allocAndInit2dArrayMethode -> allocAndInit2dArrayMethodbb0
bb0 -> x allocAndInit2dArrayMethodbb0 -> allocAndInit2dArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocAndInitIntArrayMethod { digraph allocAndInitIntArrayMethod {
label="allocAndInitIntArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocAndInitIntArrayMethode [shape=circle,label="e",xlabel="allocAndInitIntArrayMethod"]
x [shape=circle,label="x"] allocAndInitIntArrayMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 allocAndInitIntArrayMethode -> allocAndInitIntArrayMethodbb0
bb0 -> x allocAndInitIntArrayMethodbb0 -> allocAndInitIntArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocAndInitObjectArrayMethod { digraph allocAndInitObjectArrayMethod {
label="allocAndInitObjectArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocAndInitObjectArrayMethode [shape=circle,label="e",xlabel="allocAndInitObjectArrayMethod"]
x [shape=circle,label="x"] allocAndInitObjectArrayMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 allocAndInitObjectArrayMethode -> allocAndInitObjectArrayMethodbb0
bb0 -> x allocAndInitObjectArrayMethodbb0 -> allocAndInitObjectArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocIncomplete2dArrayMethod { digraph allocIncomplete2dArrayMethod {
label="allocIncomplete2dArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocIncomplete2dArrayMethode [shape=circle,label="e",xlabel="allocIncomplete2dArrayMethod"]
x [shape=circle,label="x"] allocIncomplete2dArrayMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ANEWARRAY [I|4: ARETURN }"] allocIncomplete2dArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_2 |3: ANEWARRAY [I|4: ARETURN }"]
e -> bb0 allocIncomplete2dArrayMethode -> allocIncomplete2dArrayMethodbb0
bb0 -> x allocIncomplete2dArrayMethodbb0 -> allocIncomplete2dArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocIntArrayMethod { digraph allocIntArrayMethod {
label="allocIntArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocIntArrayMethode [shape=circle,label="e",xlabel="allocIntArrayMethod"]
x [shape=circle,label="x"] allocIntArrayMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: NEWARRAY T_INT|4: ARETURN }"] allocIntArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: NEWARRAY T_INT|4: ARETURN }"]
e -> bb0 allocIntArrayMethode -> allocIntArrayMethodbb0
bb0 -> x allocIntArrayMethodbb0 -> allocIntArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocObjectArrayMethod { digraph allocObjectArrayMethod {
label="allocObjectArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocObjectArrayMethode [shape=circle,label="e",xlabel="allocObjectArrayMethod"]
x [shape=circle,label="x"] allocObjectArrayMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: ANEWARRAY java/lang/Object|4: ARETURN }"] allocObjectArrayMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_3 |3: ANEWARRAY java/lang/Object|4: ARETURN }"]
e -> bb0 allocObjectArrayMethode -> allocObjectArrayMethodbb0
bb0 -> x allocObjectArrayMethodbb0 -> allocObjectArrayMethodx
} }

View file

@ -1,11 +1,10 @@
digraph allocObjectMethod { digraph allocObjectMethod {
label="allocObjectMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] allocObjectMethode [shape=circle,label="e",xlabel="allocObjectMethod"]
x [shape=circle,label="x"] allocObjectMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: NEW java/lang/Object|3: DUP |4: INVOKESPECIAL java/lang/Object.<init> ()V|5: ARETURN }"] 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 }"]
e -> bb0 allocObjectMethode -> allocObjectMethodbb0
bb0 -> x allocObjectMethodbb0 -> allocObjectMethodx
} }

View file

@ -1,11 +1,10 @@
digraph arrayLengthMethod { digraph arrayLengthMethod {
label="arrayLengthMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] arrayLengthMethode [shape=circle,label="e",xlabel="arrayLengthMethod"]
x [shape=circle,label="x"] arrayLengthMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ARRAYLENGTH |4: IRETURN }"] arrayLengthMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ARRAYLENGTH |4: IRETURN }"]
e -> bb0 arrayLengthMethode -> arrayLengthMethodbb0
bb0 -> x arrayLengthMethodbb0 -> arrayLengthMethodx
} }

View file

@ -1,11 +1,10 @@
digraph arrayReadMethod { digraph arrayReadMethod {
label="arrayReadMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] arrayReadMethode [shape=circle,label="e",xlabel="arrayReadMethod"]
x [shape=circle,label="x"] arrayReadMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ICONST_0 |4: AALOAD |5: ARETURN }"] arrayReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 1|3: ICONST_0 |4: AALOAD |5: ARETURN }"]
e -> bb0 arrayReadMethode -> arrayReadMethodbb0
bb0 -> x arrayReadMethodbb0 -> arrayReadMethodx
} }

View file

@ -1,11 +1,10 @@
digraph arrayWriteMethod { digraph arrayWriteMethod {
label="arrayWriteMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] arrayWriteMethode [shape=circle,label="e",xlabel="arrayWriteMethod"]
x [shape=circle,label="x"] arrayWriteMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 arrayWriteMethode -> arrayWriteMethodbb0
bb0 -> x arrayWriteMethodbb0 -> arrayWriteMethodx
} }

View file

@ -1,18 +1,17 @@
digraph condMethod { digraph condMethod {
label="condMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] condMethode [shape=circle,label="e",xlabel="condMethod"]
x [shape=circle,label="x"] condMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"] condMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"]
bb5 [label="5|{5: ILOAD 1|6: GOTO 10}"] condMethodbb5 [label="5|{5: ILOAD 1|6: GOTO 10}"]
bb7 [label="7|{7: // label|8: // stack frame map|9: ILOAD 2}"] condMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ILOAD 2}"]
bb10 [label="10|{10: // label|11: // stack frame map|12: IRETURN }"] condMethodbb10 [label="10|{10: // label|11: // stack frame map|12: IRETURN }"]
e -> bb0 condMethode -> condMethodbb0
bb0 -> bb5 condMethodbb0 -> condMethodbb5
bb7 -> bb10 condMethodbb7 -> condMethodbb10
bb10 -> x condMethodbb10 -> condMethodx
bb0 -> bb7 [label="T"] condMethodbb0 -> condMethodbb7 [label="T"]
bb5 -> bb10 [label="T"] condMethodbb5 -> condMethodbb10 [label="T"]
} }

View file

@ -1,16 +1,15 @@
digraph doWhileMethod { digraph doWhileMethod {
label="doWhileMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] doWhileMethode [shape=circle,label="e",xlabel="doWhileMethod"]
x [shape=circle,label="x"] doWhileMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"] doWhileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
bb4 [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}"] 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}"]
bb18 [label="18|{18: // label|19: // line number information|20: ILOAD 2|21: IRETURN }"] doWhileMethodbb18 [label="18|{18: // label|19: // line number information|20: ILOAD 2|21: IRETURN }"]
e -> bb0 doWhileMethode -> doWhileMethodbb0
bb0 -> bb4 doWhileMethodbb0 -> doWhileMethodbb4
bb4 -> bb18 doWhileMethodbb4 -> doWhileMethodbb18
bb18 -> x doWhileMethodbb18 -> doWhileMethodx
bb4 -> bb4 [label="T"] doWhileMethodbb4 -> doWhileMethodbb4 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph doWhileTrue { digraph doWhileTrue {
label="doWhileTrue";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] doWhileTruee [shape=circle,label="e",xlabel="doWhileTrue"]
e [shape=circle,label="e"] doWhileTruee [shape=circle,label="e",xlabel="doWhileTrue"]
bb0 [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}"] 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}"]
e -> bb0 doWhileTruee -> doWhileTruebb0
bb0 -> bb0 [label="T"] doWhileTruebb0 -> doWhileTruebb0 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph emptyMethod { digraph emptyMethod {
label="emptyMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] emptyMethode [shape=circle,label="e",xlabel="emptyMethod"]
x [shape=circle,label="x"] emptyMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: RETURN }"] emptyMethodbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
e -> bb0 emptyMethode -> emptyMethodbb0
bb0 -> x emptyMethodbb0 -> emptyMethodx
} }

View file

@ -1,11 +1,10 @@
digraph fieldReadMethod { digraph fieldReadMethod {
label="fieldReadMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] fieldReadMethode [shape=circle,label="e",xlabel="fieldReadMethod"]
x [shape=circle,label="x"] fieldReadMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: GETFIELD ExampleClass.field Ljava/lang/String;|4: ARETURN }"] fieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: ALOAD 0|3: GETFIELD ExampleClass.field Ljava/lang/String;|4: ARETURN }"]
e -> bb0 fieldReadMethode -> fieldReadMethodbb0
bb0 -> x fieldReadMethodbb0 -> fieldReadMethodx
} }

View file

@ -1,11 +1,10 @@
digraph fieldWriteMethod { digraph fieldWriteMethod {
label="fieldWriteMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] fieldWriteMethode [shape=circle,label="e",xlabel="fieldWriteMethod"]
x [shape=circle,label="x"] fieldWriteMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 fieldWriteMethode -> fieldWriteMethodbb0
bb0 -> x fieldWriteMethodbb0 -> fieldWriteMethodx
} }

View file

@ -1,18 +1,17 @@
digraph forEachArrayMethod { digraph forEachArrayMethod {
label="forEachArrayMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forEachArrayMethode [shape=circle,label="e",xlabel="forEachArrayMethod"]
x [shape=circle,label="x"] forEachArrayMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb13 [label="13|{13: // label|14: // stack frame map|15: ILOAD 5|16: ILOAD 4|17: IF_ICMPGE 29}"] forEachArrayMethodbb13 [label="13|{13: // label|14: // stack frame map|15: ILOAD 5|16: ILOAD 4|17: IF_ICMPGE 29}"]
bb18 [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}"] 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}"]
bb29 [label="29|{29: // label|30: // line number information|31: // stack frame map|32: ILOAD 2|33: IRETURN }"] forEachArrayMethodbb29 [label="29|{29: // label|30: // line number information|31: // stack frame map|32: ILOAD 2|33: IRETURN }"]
e -> bb0 forEachArrayMethode -> forEachArrayMethodbb0
bb0 -> bb13 forEachArrayMethodbb0 -> forEachArrayMethodbb13
bb13 -> bb18 forEachArrayMethodbb13 -> forEachArrayMethodbb18
bb29 -> x forEachArrayMethodbb29 -> forEachArrayMethodx
bb18 -> bb13 [label="T"] forEachArrayMethodbb18 -> forEachArrayMethodbb13 [label="T"]
bb13 -> bb29 [label="T"] forEachArrayMethodbb13 -> forEachArrayMethodbb29 [label="T"]
} }

View file

@ -1,18 +1,17 @@
digraph forEachCollectionMethod { digraph forEachCollectionMethod {
label="forEachCollectionMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forEachCollectionMethode [shape=circle,label="e",xlabel="forEachCollectionMethod"]
x [shape=circle,label="x"] forEachCollectionMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb9 [label="9|{9: // label|10: // stack frame map|11: ALOAD 3|12: INVOKEINTERFACE java/util/Iterator.hasNext ()Z|13: IFEQ 24}"] forEachCollectionMethodbb9 [label="9|{9: // label|10: // stack frame map|11: ALOAD 3|12: INVOKEINTERFACE java/util/Iterator.hasNext ()Z|13: IFEQ 24}"]
bb14 [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}"] 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}"]
bb24 [label="24|{24: // label|25: // line number information|26: // stack frame map|27: ILOAD 2|28: IRETURN }"] forEachCollectionMethodbb24 [label="24|{24: // label|25: // line number information|26: // stack frame map|27: ILOAD 2|28: IRETURN }"]
e -> bb0 forEachCollectionMethode -> forEachCollectionMethodbb0
bb0 -> bb9 forEachCollectionMethodbb0 -> forEachCollectionMethodbb9
bb9 -> bb14 forEachCollectionMethodbb9 -> forEachCollectionMethodbb14
bb24 -> x forEachCollectionMethodbb24 -> forEachCollectionMethodx
bb14 -> bb9 [label="T"] forEachCollectionMethodbb14 -> forEachCollectionMethodbb9 [label="T"]
bb9 -> bb24 [label="T"] forEachCollectionMethodbb9 -> forEachCollectionMethodbb24 [label="T"]
} }

View file

@ -1,13 +1,12 @@
digraph forEver { digraph forEver {
label="forEver";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forEvere [shape=circle,label="e",xlabel="forEver"]
e [shape=circle,label="e"] forEvere [shape=circle,label="e",xlabel="forEver"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"] forEverbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
bb4 [label="4|{4: // label|5: // stack frame map|6: IINC 2 1|7: GOTO 4}"] forEverbb4 [label="4|{4: // label|5: // stack frame map|6: IINC 2 1|7: GOTO 4}"]
e -> bb0 forEvere -> forEverbb0
bb0 -> bb4 forEverbb0 -> forEverbb4
bb4 -> bb4 [label="T"] forEverbb4 -> forEverbb4 [label="T"]
} }

View file

@ -1,18 +1,17 @@
digraph forMethod { digraph forMethod {
label="forMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forMethode [shape=circle,label="e",xlabel="forMethod"]
x [shape=circle,label="x"] forMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 23}"] forMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 23}"]
bb13 [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}"] 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}"]
bb23 [label="23|{23: // label|24: // line number information|25: // stack frame map|26: ILOAD 2|27: IRETURN }"] forMethodbb23 [label="23|{23: // label|24: // line number information|25: // stack frame map|26: ILOAD 2|27: IRETURN }"]
e -> bb0 forMethode -> forMethodbb0
bb0 -> bb8 forMethodbb0 -> forMethodbb8
bb8 -> bb13 forMethodbb8 -> forMethodbb13
bb23 -> x forMethodbb23 -> forMethodx
bb13 -> bb8 [label="T"] forMethodbb13 -> forMethodbb8 [label="T"]
bb8 -> bb23 [label="T"] forMethodbb8 -> forMethodbb23 [label="T"]
} }

View file

@ -1,23 +1,22 @@
digraph forWithBreakMethod { digraph forWithBreakMethod {
label="forWithBreakMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forWithBreakMethode [shape=circle,label="e",xlabel="forWithBreakMethod"]
x [shape=circle,label="x"] forWithBreakMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 32}"] forWithBreakMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 32}"]
bb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"] forWithBreakMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"]
bb18 [label="18|{18: // label|19: // line number information|20: GOTO 32}"] forWithBreakMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 32}"]
bb21 [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}"] 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}"]
bb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: ILOAD 2|36: IRETURN }"] forWithBreakMethodbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: ILOAD 2|36: IRETURN }"]
e -> bb0 forWithBreakMethode -> forWithBreakMethodbb0
bb0 -> bb8 forWithBreakMethodbb0 -> forWithBreakMethodbb8
bb8 -> bb13 forWithBreakMethodbb8 -> forWithBreakMethodbb13
bb13 -> bb18 forWithBreakMethodbb13 -> forWithBreakMethodbb18
bb32 -> x forWithBreakMethodbb32 -> forWithBreakMethodx
bb21 -> bb8 [label="T"] forWithBreakMethodbb21 -> forWithBreakMethodbb8 [label="T"]
bb13 -> bb21 [label="T"] forWithBreakMethodbb13 -> forWithBreakMethodbb21 [label="T"]
bb8 -> bb32 [label="T"] forWithBreakMethodbb8 -> forWithBreakMethodbb32 [label="T"]
bb18 -> bb32 [label="T"] forWithBreakMethodbb18 -> forWithBreakMethodbb32 [label="T"]
} }

View file

@ -1,25 +1,24 @@
digraph forWithContinueMethod { digraph forWithContinueMethod {
label="forWithContinueMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] forWithContinueMethode [shape=circle,label="e",xlabel="forWithContinueMethod"]
x [shape=circle,label="x"] forWithContinueMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 33}"] forWithContinueMethodbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 33}"]
bb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"] forWithContinueMethodbb13 [label="13|{13: // label|14: // line number information|15: ILOAD 3|16: BIPUSH 10|17: IF_ICMPNE 21}"]
bb18 [label="18|{18: // label|19: // line number information|20: GOTO 28}"] forWithContinueMethodbb18 [label="18|{18: // label|19: // line number information|20: GOTO 28}"]
bb21 [label="21|{21: // label|22: // line number information|23: // stack frame map|24: ILOAD 2|25: ILOAD 3|26: IADD |27: ISTORE 2}"] forWithContinueMethodbb21 [label="21|{21: // label|22: // line number information|23: // stack frame map|24: ILOAD 2|25: ILOAD 3|26: IADD |27: ISTORE 2}"]
bb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: IINC 3 1|32: GOTO 8}"] forWithContinueMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: IINC 3 1|32: GOTO 8}"]
bb33 [label="33|{33: // label|34: // line number information|35: // stack frame map|36: ILOAD 2|37: IRETURN }"] forWithContinueMethodbb33 [label="33|{33: // label|34: // line number information|35: // stack frame map|36: ILOAD 2|37: IRETURN }"]
e -> bb0 forWithContinueMethode -> forWithContinueMethodbb0
bb0 -> bb8 forWithContinueMethodbb0 -> forWithContinueMethodbb8
bb8 -> bb13 forWithContinueMethodbb8 -> forWithContinueMethodbb13
bb13 -> bb18 forWithContinueMethodbb13 -> forWithContinueMethodbb18
bb21 -> bb28 forWithContinueMethodbb21 -> forWithContinueMethodbb28
bb33 -> x forWithContinueMethodbb33 -> forWithContinueMethodx
bb28 -> bb8 [label="T"] forWithContinueMethodbb28 -> forWithContinueMethodbb8 [label="T"]
bb13 -> bb21 [label="T"] forWithContinueMethodbb13 -> forWithContinueMethodbb21 [label="T"]
bb18 -> bb28 [label="T"] forWithContinueMethodbb18 -> forWithContinueMethodbb28 [label="T"]
bb8 -> bb33 [label="T"] forWithContinueMethodbb8 -> forWithContinueMethodbb33 [label="T"]
} }

View file

@ -1,18 +1,17 @@
digraph ifElseMethod { digraph ifElseMethod {
label="ifElseMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] ifElseMethode [shape=circle,label="e",xlabel="ifElseMethod"]
x [shape=circle,label="x"] ifElseMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // line number information|10: ICONST_0 |11: ISTORE 2|12: GOTO 18}"] ifElseMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_0 |11: ISTORE 2|12: GOTO 18}"]
bb13 [label="13|{13: // label|14: // line number information|15: // stack frame map|16: ILOAD 1|17: ISTORE 2}"] ifElseMethodbb13 [label="13|{13: // label|14: // line number information|15: // stack frame map|16: ILOAD 1|17: ISTORE 2}"]
bb18 [label="18|{18: // label|19: // line number information|20: // stack frame map|21: ILOAD 2|22: IRETURN }"] ifElseMethodbb18 [label="18|{18: // label|19: // line number information|20: // stack frame map|21: ILOAD 2|22: IRETURN }"]
e -> bb0 ifElseMethode -> ifElseMethodbb0
bb0 -> bb8 ifElseMethodbb0 -> ifElseMethodbb8
bb13 -> bb18 ifElseMethodbb13 -> ifElseMethodbb18
bb18 -> x ifElseMethodbb18 -> ifElseMethodx
bb0 -> bb13 [label="T"] ifElseMethodbb0 -> ifElseMethodbb13 [label="T"]
bb8 -> bb18 [label="T"] ifElseMethodbb8 -> ifElseMethodbb18 [label="T"]
} }

View file

@ -1,16 +1,15 @@
digraph ifMethod { digraph ifMethod {
label="ifMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] ifMethode [shape=circle,label="e",xlabel="ifMethod"]
x [shape=circle,label="x"] ifMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: ISTORE 2}"] ifMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: ISTORE 2}"]
bb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ILOAD 2|16: IRETURN }"] ifMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ILOAD 2|16: IRETURN }"]
e -> bb0 ifMethode -> ifMethodbb0
bb0 -> bb8 ifMethodbb0 -> ifMethodbb8
bb8 -> bb12 ifMethodbb8 -> ifMethodbb12
bb12 -> x ifMethodbb12 -> ifMethodx
bb0 -> bb12 [label="T"] ifMethodbb0 -> ifMethodbb12 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph instanceCallMethod { digraph instanceCallMethod {
label="instanceCallMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] instanceCallMethode [shape=circle,label="e",xlabel="instanceCallMethod"]
x [shape=circle,label="x"] instanceCallMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 instanceCallMethode -> instanceCallMethodbb0
bb0 -> x instanceCallMethodbb0 -> instanceCallMethodx
} }

View file

@ -1,11 +1,10 @@
digraph instanceCallTarget { digraph instanceCallTarget {
label="instanceCallTarget";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] instanceCallTargete [shape=circle,label="e",xlabel="instanceCallTarget"]
x [shape=circle,label="x"] instanceCallTargetx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: RETURN }"] instanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
e -> bb0 instanceCallTargete -> instanceCallTargetbb0
bb0 -> x instanceCallTargetbb0 -> instanceCallTargetx
} }

View file

@ -1,11 +1,10 @@
digraph interfaceCallMethod { digraph interfaceCallMethod {
label="interfaceCallMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] interfaceCallMethode [shape=circle,label="e",xlabel="interfaceCallMethod"]
x [shape=circle,label="x"] interfaceCallMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 interfaceCallMethode -> interfaceCallMethodbb0
bb0 -> x interfaceCallMethodbb0 -> interfaceCallMethodx
} }

View file

@ -1,25 +1,24 @@
digraph nestedFor { digraph nestedFor {
label="nestedFor";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] nestedFore [shape=circle,label="e",xlabel="nestedFor"]
x [shape=circle,label="x"] nestedForx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 37}"] nestedForbb8 [label="8|{8: // label|9: // stack frame map|10: ILOAD 3|11: ILOAD 1|12: IF_ICMPGE 37}"]
bb13 [label="13|{13: // label|14: // line number information|15: ICONST_0 |16: ISTORE 4}"] nestedForbb13 [label="13|{13: // label|14: // line number information|15: ICONST_0 |16: ISTORE 4}"]
bb17 [label="17|{17: // label|18: // stack frame map|19: ILOAD 4|20: ILOAD 3|21: IF_ICMPGE 32}"] nestedForbb17 [label="17|{17: // label|18: // stack frame map|19: ILOAD 4|20: ILOAD 3|21: IF_ICMPGE 32}"]
bb22 [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}"] 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}"]
bb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: IINC 3 1|36: GOTO 8}"] nestedForbb32 [label="32|{32: // label|33: // line number information|34: // stack frame map|35: IINC 3 1|36: GOTO 8}"]
bb37 [label="37|{37: // label|38: // line number information|39: // stack frame map|40: ILOAD 2|41: IRETURN }"] nestedForbb37 [label="37|{37: // label|38: // line number information|39: // stack frame map|40: ILOAD 2|41: IRETURN }"]
e -> bb0 nestedFore -> nestedForbb0
bb0 -> bb8 nestedForbb0 -> nestedForbb8
bb8 -> bb13 nestedForbb8 -> nestedForbb13
bb13 -> bb17 nestedForbb13 -> nestedForbb17
bb17 -> bb22 nestedForbb17 -> nestedForbb22
bb37 -> x nestedForbb37 -> nestedForx
bb32 -> bb8 [label="T"] nestedForbb32 -> nestedForbb8 [label="T"]
bb22 -> bb17 [label="T"] nestedForbb22 -> nestedForbb17 [label="T"]
bb17 -> bb32 [label="T"] nestedForbb17 -> nestedForbb32 [label="T"]
bb8 -> bb37 [label="T"] nestedForbb8 -> nestedForbb37 [label="T"]
} }

View file

@ -1,31 +1,30 @@
digraph nonShortCircuitMethod { digraph nonShortCircuitMethod {
label="nonShortCircuitMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] nonShortCircuitMethode [shape=circle,label="e",xlabel="nonShortCircuitMethod"]
x [shape=circle,label="x"] nonShortCircuitMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"] nonShortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 7}"]
bb5 [label="5|{5: ICONST_1 |6: GOTO 10}"] nonShortCircuitMethodbb5 [label="5|{5: ICONST_1 |6: GOTO 10}"]
bb7 [label="7|{7: // label|8: // stack frame map|9: ICONST_0 }"] nonShortCircuitMethodbb7 [label="7|{7: // label|8: // stack frame map|9: ICONST_0 }"]
bb10 [label="10|{10: // label|11: // stack frame map|12: ILOAD 1|13: ILOAD 3|14: IF_ICMPGE 17}"] nonShortCircuitMethodbb10 [label="10|{10: // label|11: // stack frame map|12: ILOAD 1|13: ILOAD 3|14: IF_ICMPGE 17}"]
bb15 [label="15|{15: ICONST_1 |16: GOTO 20}"] nonShortCircuitMethodbb15 [label="15|{15: ICONST_1 |16: GOTO 20}"]
bb17 [label="17|{17: // label|18: // stack frame map|19: ICONST_0 }"] nonShortCircuitMethodbb17 [label="17|{17: // label|18: // stack frame map|19: ICONST_0 }"]
bb20 [label="20|{20: // label|21: // stack frame map|22: IAND |23: IFEQ 28}"] nonShortCircuitMethodbb20 [label="20|{20: // label|21: // stack frame map|22: IAND |23: IFEQ 28}"]
bb24 [label="24|{24: // label|25: // line number information|26: ICONST_1 |27: IRETURN }"] nonShortCircuitMethodbb24 [label="24|{24: // label|25: // line number information|26: ICONST_1 |27: IRETURN }"]
bb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: ICONST_0 |32: IRETURN }"] nonShortCircuitMethodbb28 [label="28|{28: // label|29: // line number information|30: // stack frame map|31: ICONST_0 |32: IRETURN }"]
e -> bb0 nonShortCircuitMethode -> nonShortCircuitMethodbb0
bb0 -> bb5 nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb5
bb7 -> bb10 nonShortCircuitMethodbb7 -> nonShortCircuitMethodbb10
bb10 -> bb15 nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb15
bb17 -> bb20 nonShortCircuitMethodbb17 -> nonShortCircuitMethodbb20
bb20 -> bb24 nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb24
bb24 -> x nonShortCircuitMethodbb24 -> nonShortCircuitMethodx
bb24 -> bb28 nonShortCircuitMethodbb24 -> nonShortCircuitMethodbb28
bb28 -> x nonShortCircuitMethodbb28 -> nonShortCircuitMethodx
bb0 -> bb7 [label="T"] nonShortCircuitMethodbb0 -> nonShortCircuitMethodbb7 [label="T"]
bb5 -> bb10 [label="T"] nonShortCircuitMethodbb5 -> nonShortCircuitMethodbb10 [label="T"]
bb10 -> bb17 [label="T"] nonShortCircuitMethodbb10 -> nonShortCircuitMethodbb17 [label="T"]
bb15 -> bb20 [label="T"] nonShortCircuitMethodbb15 -> nonShortCircuitMethodbb20 [label="T"]
bb20 -> bb28 [label="T"] nonShortCircuitMethodbb20 -> nonShortCircuitMethodbb28 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph privateInstanceCallMethod { digraph privateInstanceCallMethod {
label="privateInstanceCallMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] privateInstanceCallMethode [shape=circle,label="e",xlabel="privateInstanceCallMethod"]
x [shape=circle,label="x"] privateInstanceCallMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 privateInstanceCallMethode -> privateInstanceCallMethodbb0
bb0 -> x privateInstanceCallMethodbb0 -> privateInstanceCallMethodx
} }

View file

@ -1,11 +1,10 @@
digraph privateInstanceCallTarget { digraph privateInstanceCallTarget {
label="privateInstanceCallTarget";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] privateInstanceCallTargete [shape=circle,label="e",xlabel="privateInstanceCallTarget"]
x [shape=circle,label="x"] privateInstanceCallTargetx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: RETURN }"] privateInstanceCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
e -> bb0 privateInstanceCallTargete -> privateInstanceCallTargetbb0
bb0 -> x privateInstanceCallTargetbb0 -> privateInstanceCallTargetx
} }

View file

@ -1,20 +1,19 @@
digraph shortCircuitMethod { digraph shortCircuitMethod {
label="shortCircuitMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] shortCircuitMethode [shape=circle,label="e",xlabel="shortCircuitMethod"]
x [shape=circle,label="x"] shortCircuitMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 12}"] shortCircuitMethodbb0 [label="0|{0: // label|1: // line number information|2: ILOAD 1|3: ILOAD 2|4: IF_ICMPLE 12}"]
bb5 [label="5|{5: ILOAD 1|6: ILOAD 3|7: IF_ICMPGE 12}"] shortCircuitMethodbb5 [label="5|{5: ILOAD 1|6: ILOAD 3|7: IF_ICMPGE 12}"]
bb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: IRETURN }"] shortCircuitMethodbb8 [label="8|{8: // label|9: // line number information|10: ICONST_1 |11: IRETURN }"]
bb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ICONST_0 |16: IRETURN }"] shortCircuitMethodbb12 [label="12|{12: // label|13: // line number information|14: // stack frame map|15: ICONST_0 |16: IRETURN }"]
e -> bb0 shortCircuitMethode -> shortCircuitMethodbb0
bb0 -> bb5 shortCircuitMethodbb0 -> shortCircuitMethodbb5
bb5 -> bb8 shortCircuitMethodbb5 -> shortCircuitMethodbb8
bb8 -> x shortCircuitMethodbb8 -> shortCircuitMethodx
bb8 -> bb12 shortCircuitMethodbb8 -> shortCircuitMethodbb12
bb12 -> x shortCircuitMethodbb12 -> shortCircuitMethodx
bb0 -> bb12 [label="T"] shortCircuitMethodbb0 -> shortCircuitMethodbb12 [label="T"]
bb5 -> bb12 [label="T"] shortCircuitMethodbb5 -> shortCircuitMethodbb12 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph staticCallMethod { digraph staticCallMethod {
label="staticCallMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] staticCallMethode [shape=circle,label="e",xlabel="staticCallMethod"]
x [shape=circle,label="x"] staticCallMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: INVOKESTATIC ExampleClass.staticCallTarget ()V|3: // label|4: // line number information|5: ICONST_2 |6: IRETURN }"] 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 }"]
e -> bb0 staticCallMethode -> staticCallMethodbb0
bb0 -> x staticCallMethodbb0 -> staticCallMethodx
} }

View file

@ -1,11 +1,10 @@
digraph staticCallTarget { digraph staticCallTarget {
label="staticCallTarget";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] staticCallTargete [shape=circle,label="e",xlabel="staticCallTarget"]
x [shape=circle,label="x"] staticCallTargetx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: RETURN }"] staticCallTargetbb0 [label="0|{0: // label|1: // line number information|2: RETURN }"]
e -> bb0 staticCallTargete -> staticCallTargetbb0
bb0 -> x staticCallTargetbb0 -> staticCallTargetx
} }

View file

@ -1,11 +1,10 @@
digraph staticFieldReadMethod { digraph staticFieldReadMethod {
label="staticFieldReadMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] staticFieldReadMethode [shape=circle,label="e",xlabel="staticFieldReadMethod"]
x [shape=circle,label="x"] staticFieldReadMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: GETSTATIC ExampleClass.staticField Ljava/lang/String;|3: ARETURN }"] staticFieldReadMethodbb0 [label="0|{0: // label|1: // line number information|2: GETSTATIC ExampleClass.staticField Ljava/lang/String;|3: ARETURN }"]
e -> bb0 staticFieldReadMethode -> staticFieldReadMethodbb0
bb0 -> x staticFieldReadMethodbb0 -> staticFieldReadMethodx
} }

View file

@ -1,11 +1,10 @@
digraph staticFieldWriteMethod { digraph staticFieldWriteMethod {
label="staticFieldWriteMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] staticFieldWriteMethode [shape=circle,label="e",xlabel="staticFieldWriteMethod"]
x [shape=circle,label="x"] staticFieldWriteMethodx [shape=circle,label="x"]
bb0 [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 }"] 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 }"]
e -> bb0 staticFieldWriteMethode -> staticFieldWriteMethodbb0
bb0 -> x staticFieldWriteMethodbb0 -> staticFieldWriteMethodx
} }

View file

@ -1,24 +1,23 @@
digraph switchMethod { digraph switchMethod {
label="switchMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] switchMethode [shape=circle,label="e",xlabel="switchMethod"]
x [shape=circle,label="x"] switchMethodx [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"] switchMethodbb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"]
bb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"] switchMethodbb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"]
bb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"] switchMethodbb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"]
bb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"] switchMethodbb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"]
bb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"] switchMethodbb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"]
e -> bb0 switchMethode -> switchMethodbb0
bb26 -> bb31 switchMethodbb26 -> switchMethodbb31
bb31 -> x switchMethodbb31 -> switchMethodx
bb0 -> bb8 [label="0"] switchMethodbb0 -> switchMethodbb8 [label="0"]
bb0 -> bb14 [label="1"] switchMethodbb0 -> switchMethodbb14 [label="1"]
bb0 -> bb20 [label="2"] switchMethodbb0 -> switchMethodbb20 [label="2"]
bb0 -> bb26 [label="default"] switchMethodbb0 -> switchMethodbb26 [label="default"]
bb8 -> bb31 [label="T"] switchMethodbb8 -> switchMethodbb31 [label="T"]
bb14 -> bb31 [label="T"] switchMethodbb14 -> switchMethodbb31 [label="T"]
bb20 -> bb31 [label="T"] switchMethodbb20 -> switchMethodbb31 [label="T"]
} }

View file

@ -1,24 +1,23 @@
digraph switchMethod2 { digraph switchMethod2 {
label="switchMethod2";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] switchMethod2e [shape=circle,label="e",xlabel="switchMethod2"]
x [shape=circle,label="x"] switchMethod2x [shape=circle,label="x"]
bb0 [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}"] 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}"]
bb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"] switchMethod2bb8 [label="8|{8: // label|9: // line number information|10: // stack frame map|11: ICONST_0 |12: ISTORE 2|13: GOTO 31}"]
bb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"] switchMethod2bb14 [label="14|{14: // label|15: // line number information|16: // stack frame map|17: ICONST_1 |18: ISTORE 2|19: GOTO 31}"]
bb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"] switchMethod2bb20 [label="20|{20: // label|21: // line number information|22: // stack frame map|23: ICONST_2 |24: ISTORE 2|25: GOTO 31}"]
bb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"] switchMethod2bb26 [label="26|{26: // label|27: // line number information|28: // stack frame map|29: ICONST_M1 |30: ISTORE 2}"]
bb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"] switchMethod2bb31 [label="31|{31: // label|32: // line number information|33: // stack frame map|34: ILOAD 2|35: IRETURN }"]
e -> bb0 switchMethod2e -> switchMethod2bb0
bb26 -> bb31 switchMethod2bb26 -> switchMethod2bb31
bb31 -> x switchMethod2bb31 -> switchMethod2x
bb0 -> bb8 [label="0"] switchMethod2bb0 -> switchMethod2bb8 [label="0"]
bb0 -> bb14 [label="1000"] switchMethod2bb0 -> switchMethod2bb14 [label="1000"]
bb0 -> bb20 [label="2000"] switchMethod2bb0 -> switchMethod2bb20 [label="2000"]
bb0 -> bb26 [label="default"] switchMethod2bb0 -> switchMethod2bb26 [label="default"]
bb8 -> bb31 [label="T"] switchMethod2bb8 -> switchMethod2bb31 [label="T"]
bb14 -> bb31 [label="T"] switchMethod2bb14 -> switchMethod2bb31 [label="T"]
bb20 -> bb31 [label="T"] switchMethod2bb20 -> switchMethod2bb31 [label="T"]
} }

View file

@ -1,18 +1,17 @@
digraph whileMethod { digraph whileMethod {
label="whileMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] whileMethode [shape=circle,label="e",xlabel="whileMethod"]
x [shape=circle,label="x"] whileMethodx [shape=circle,label="x"]
bb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"] whileMethodbb0 [label="0|{0: // label|1: // line number information|2: ICONST_0 |3: ISTORE 2}"]
bb4 [label="4|{4: // label|5: // line number information|6: // stack frame map|7: ILOAD 1|8: IFLE 19}"] whileMethodbb4 [label="4|{4: // label|5: // line number information|6: // stack frame map|7: ILOAD 1|8: IFLE 19}"]
bb9 [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}"] 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}"]
bb19 [label="19|{19: // label|20: // line number information|21: // stack frame map|22: ILOAD 2|23: IRETURN }"] whileMethodbb19 [label="19|{19: // label|20: // line number information|21: // stack frame map|22: ILOAD 2|23: IRETURN }"]
e -> bb0 whileMethode -> whileMethodbb0
bb0 -> bb4 whileMethodbb0 -> whileMethodbb4
bb4 -> bb9 whileMethodbb4 -> whileMethodbb9
bb19 -> x whileMethodbb19 -> whileMethodx
bb9 -> bb4 [label="T"] whileMethodbb9 -> whileMethodbb4 [label="T"]
bb4 -> bb19 [label="T"] whileMethodbb4 -> whileMethodbb19 [label="T"]
} }

View file

@ -1,11 +1,10 @@
digraph whileTrueMethod { digraph whileTrueMethod {
label="whileTrueMethod";
node [shape=record] node [shape=record]
e [shape=circle,label="e"] whileTrueMethode [shape=circle,label="e",xlabel="whileTrueMethod"]
e [shape=circle,label="e"] whileTrueMethode [shape=circle,label="e",xlabel="whileTrueMethod"]
bb0 [label="0|{0: // label|1: // line number information|2: // stack frame map|3: IINC 1 1|4: GOTO 0}"] whileTrueMethodbb0 [label="0|{0: // label|1: // line number information|2: // stack frame map|3: IINC 1 1|4: GOTO 0}"]
e -> bb0 whileTrueMethode -> whileTrueMethodbb0
bb0 -> bb0 [label="T"] whileTrueMethodbb0 -> whileTrueMethodbb0 [label="T"]
} }