in instrumentation/src/com/intellij/rt/coverage/instrumentation/CoverageEnumeratorWithInstructions.java [51:96]
private void saveInstructionsToOwner() {
final LineData lineData = myData.getLineData(myCurrentLine);
if (myInstructionCounter > 0 && lineData != null) {
final Jump jump = myLastJump != null ? myLastJump : (myLastLabel == null ? null : myOriginalLabelToJump.get(myLastLabel));
final Switch aSwitch = myLastLabel == null ? null : myOriginalLabelToSwitch.get(myLastLabel);
boolean applied = false;
if (jump != null) {
final int jumpId = jump.getId();
for (int index = 0; index < lineData.jumpsCount(); index++) {
final JumpData jumpData = lineData.getJumpData(index);
if (jumpData.getId(true) == jumpId) {
myData.addInstructions(jumpId, myInstructionCounter);
applied = true;
break;
}
if (jumpData.getId(false) == jumpId) {
myData.addInstructions(jumpId, myInstructionCounter);
applied = true;
break;
}
}
} else if (aSwitch != null) {
final int switchId = aSwitch.getId();
loop:
for (int index = 0; index < lineData.switchesCount(); index++) {
final SwitchData switchData = lineData.getSwitchData(index);
for (int i = -1; i < switchData.getKeys().length; i++) {
if (switchData.getId(i) == switchId) {
myData.addInstructions(switchId, myInstructionCounter);
applied = true;
break loop;
}
}
}
}
if (!applied) {
myData.addInstructions(lineData.getId(), myInstructionCounter);
}
}
myLastLabel = null;
myLastJump = null;
myInstructionCounter = 0;
}