aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core/src/org/jacoco/core/internal/analysis
diff options
context:
space:
mode:
authorMarc R. Hoffmann <hoffmann@mountainminds.com>2011-01-08 20:59:10 +0000
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2011-01-08 20:59:10 +0000
commit21c16d3cc1fbc77501433dd1ea04f114b6a56ff2 (patch)
treebd9089c01724acec1fe3c25526748f27f31e9f68 /org.jacoco.core/src/org/jacoco/core/internal/analysis
parentd620fbe772969e4ecf214cc65eb1bf5aa424f6e1 (diff)
downloadjacoco-21c16d3cc1fbc77501433dd1ea04f114b6a56ff2.tar.gz
Trac #130: Pre-allocate lines buffer for method (performance).
Diffstat (limited to 'org.jacoco.core/src/org/jacoco/core/internal/analysis')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java
index 3cf0ce24..eabe1243 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/MethodAnalyzer.java
@@ -16,6 +16,7 @@ import java.util.List;
import org.jacoco.core.analysis.CounterImpl;
import org.jacoco.core.analysis.ICounter;
+import org.jacoco.core.analysis.ISourceNode;
import org.jacoco.core.analysis.MethodCoverage;
import org.jacoco.core.internal.flow.IMethodProbesVisitor;
import org.jacoco.core.internal.flow.Instruction;
@@ -37,7 +38,11 @@ public class MethodAnalyzer implements IMethodProbesVisitor {
private final MethodCoverage coverage;
- private int currentLine = MethodCoverage.UNKNOWN_LINE;
+ private int currentLine = ISourceNode.UNKNOWN_LINE;
+
+ private int firstLine = ISourceNode.UNKNOWN_LINE;
+
+ private int lastLine = ISourceNode.UNKNOWN_LINE;
private Label currentLabel = null;
@@ -92,6 +97,12 @@ public class MethodAnalyzer implements IMethodProbesVisitor {
public void visitLineNumber(final int line, final Label start) {
currentLine = line;
+ if (firstLine > line) {
+ firstLine = line;
+ }
+ if (lastLine < line || lastLine == ISourceNode.UNKNOWN_LINE) {
+ lastLine = line;
+ }
}
private void visitInsn() {
@@ -237,6 +248,7 @@ public class MethodAnalyzer implements IMethodProbesVisitor {
p.setCovered();
}
// Report result:
+ coverage.ensureCapacity(firstLine, lastLine);
for (final Instruction i : instructions) {
final int total = i.getBranches();
final int covered = i.getCoveredBranches();