From 823dada255658917cd01486f2dc87e936dff5c50 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 10 Dec 2008 14:05:46 -0800 Subject: [PATCH] Simplify RawParseUtils.nextLF invocations Most of the time when we call next('\n') or nextLF('\n') we really meant to just say nextLF(), which is logically identical to next() but could be micro-optimized for the LF byte. This refactoring shifts the calls to use the new nextLF wrapper for next('\n'), so we can later chose to make this optimization, or to leave the code as-is. But either way the call sites are now much clearer to read. Signed-off-by: Shawn O. Pearce Signed-off-by: Robin Rosenberg --- .../src/org/spearce/jgit/lib/ObjectChecker.java | 4 ++-- .../src/org/spearce/jgit/revwalk/RevTag.java | 2 +- .../src/org/spearce/jgit/util/RawParseUtils.java | 25 +++++++++++++++++----- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectChecker.java b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectChecker.java index b303d6f2..75e3c77c 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectChecker.java +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectChecker.java @@ -205,11 +205,11 @@ public class ObjectChecker { if ((ptr = match(raw, ptr, type)) < 0) throw new CorruptObjectException("no type header"); - ptr = nextLF(raw, ptr, '\n'); + ptr = nextLF(raw, ptr); if ((ptr = match(raw, ptr, tag)) < 0) throw new CorruptObjectException("no tag header"); - ptr = nextLF(raw, ptr, '\n'); + ptr = nextLF(raw, ptr); if ((ptr = match(raw, ptr, tagger)) < 0) throw new CorruptObjectException("no tagger header"); diff --git a/org.spearce.jgit/src/org/spearce/jgit/revwalk/RevTag.java b/org.spearce.jgit/src/org/spearce/jgit/revwalk/RevTag.java index bbb18eed..77a55cda 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/revwalk/RevTag.java +++ b/org.spearce.jgit/src/org/spearce/jgit/revwalk/RevTag.java @@ -90,7 +90,7 @@ public class RevTag extends RevObject { object = walk.lookupAny(walk.idBuffer, oType); int p = pos.value += 4; // "tag " - final int nameEnd = RawParseUtils.next(rawTag, p, '\n') - 1; + final int nameEnd = RawParseUtils.nextLF(rawTag, p) - 1; name = RawParseUtils.decode(Constants.CHARSET, rawTag, p, nameEnd); buffer = rawTag; flags |= PARSED; diff --git a/org.spearce.jgit/src/org/spearce/jgit/util/RawParseUtils.java b/org.spearce.jgit/src/org/spearce/jgit/util/RawParseUtils.java index 4b96439c..1b2efd9f 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/util/RawParseUtils.java +++ b/org.spearce.jgit/src/org/spearce/jgit/util/RawParseUtils.java @@ -230,6 +230,21 @@ public final class RawParseUtils { } /** + * Locate the first position after the next LF. + *

+ * This method stops on the first '\n' it finds. + * + * @param b + * buffer to scan. + * @param ptr + * position within buffer to start looking for LF at. + * @return new position just after the first LF found. + */ + public static final int nextLF(final byte[] b, int ptr) { + return next(b, ptr, '\n'); + } + + /** * Locate the first position after either the given character or LF. *

* This method stops on the first match it finds from either chrA or '\n'. @@ -296,7 +311,7 @@ public final class RawParseUtils { while (ptr < sz && b[ptr] == 'p') ptr += 48; // skip this parent. if (ptr < sz && b[ptr] == 'a') - ptr = next(b, ptr, '\n'); + ptr = nextLF(b, ptr); return match(b, ptr, committer); } @@ -320,7 +335,7 @@ public final class RawParseUtils { return -1; if (b[ptr] == 'e') break; - ptr = next(b, ptr, '\n'); + ptr = nextLF(b, ptr); } return match(b, ptr, encoding); } @@ -342,7 +357,7 @@ public final class RawParseUtils { final int enc = encoding(b, 0); if (enc < 0) return Constants.CHARSET; - final int lf = next(b, enc, '\n'); + final int lf = nextLF(b, enc); return Charset.forName(decode(Constants.CHARSET, b, enc, lf - 1)); } @@ -505,7 +520,7 @@ public final class RawParseUtils { // header line type is. // while (ptr < sz && b[ptr] != '\n') - ptr = next(b, ptr, '\n'); + ptr = nextLF(b, ptr); if (ptr < sz && b[ptr] == '\n') return ptr + 1; return -1; @@ -529,7 +544,7 @@ public final class RawParseUtils { int ptr = start; final int sz = b.length; while (ptr < sz && b[ptr] != '\n') - ptr = next(b, ptr, '\n'); + ptr = nextLF(b, ptr); while (0 < ptr && start < ptr && b[ptr - 1] == '\n') ptr--; return ptr; -- 2.11.4.GIT