corrections
This commit is contained in:
parent
ff40dbc7f7
commit
0dd793e2f8
49 changed files with 1056 additions and 420 deletions
|
@ -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
47
all.m4
Normal 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)
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
|
@ -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("}");
|
||||||
|
|
|
@ -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
626
test-output/all.dot
Normal 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.
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue