Use a conventional for loop in nextQuotedValue() to make hotspot's job easier.

This commit is contained in:
Jesse Wilson 2012-08-27 04:42:39 +00:00
parent bdf2cac6d4
commit 980796005f

View File

@ -949,28 +949,29 @@ public class JsonReader implements Closeable {
int l = limit; int l = limit;
/* the index of the first character not yet appended to the builder. */ /* the index of the first character not yet appended to the builder. */
int start = p; int start = p;
while (p < l) { for (; p < l; p++) {
int c = buffer[p++]; int c = buffer[p];
if (c == quote) { if (c == quote) {
pos = p; pos = p + 1;
if (builder == null) { if (builder == null) {
return new String(buffer, start, p - start - 1); return new String(buffer, start, p - start);
} else { } else {
builder.append(buffer, start, p - start - 1); builder.append(buffer, start, p - start);
return builder.toString(); return builder.toString();
} }
} else if (c == '\\') { } else if (c == '\\') {
pos = p; pos = p + 1;
if (builder == null) { if (builder == null) {
builder = new StringBuilder(); builder = new StringBuilder();
} }
builder.append(buffer, start, p - start - 1); builder.append(buffer, start, p - start);
builder.append(readEscapeCharacter()); builder.append(readEscapeCharacter());
p = pos; p = pos;
l = limit; l = limit;
start = p; start = p;
p--; // Prevent double-increment.
} }
} }