diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2011-01-08 20:59:10 +0000 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2011-01-08 20:59:10 +0000 |
commit | 21c16d3cc1fbc77501433dd1ea04f114b6a56ff2 (patch) | |
tree | bd9089c01724acec1fe3c25526748f27f31e9f68 /org.jacoco.core/src/org/jacoco/core/internal/analysis | |
parent | d620fbe772969e4ecf214cc65eb1bf5aa424f6e1 (diff) | |
download | jacoco-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.java | 14 |
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(); |