in core/src/main/java/com/jetbrains/sa/jdi/LocationImpl.java [150:184]
LineInfo getLineInfo(SDE.Stratum stratum) {
LineInfo lineInfo;
/* base stratum is done slighly differently */
if (stratum.isJava()) {
return getBaseLineInfo(stratum);
}
/* check if there is cached info to use */
lineInfo = otherLineInfo; // copy because of concurrency
if (lineInfo != null &&
stratum.id().equals(lineInfo.liStratum())) {
return lineInfo;
}
int baseLineNumber = lineNumber(SDE.BASE_STRATUM_NAME);
SDE.LineStratum lineStratum =
stratum.lineStratum(declaringType, baseLineNumber);
if (lineStratum != null && lineStratum.lineNumber() != -1) {
lineInfo = new StratumLineInfo(stratum.id(),
lineStratum.lineNumber(),
lineStratum.sourceName(),
lineStratum.sourcePath());
} else {
/* find best match */
MethodImpl methodImpl = method();
lineInfo = methodImpl.codeIndexToLineInfo(stratum,
codeIndex());
}
/* cache it */
addStratumLineInfo(lineInfo);
return lineInfo;
}