Differential Revision: https://phabricator.services.mozilla.com/D145571
This commit is contained in:
Henri Sivonen 2022-05-10 07:05:09 +00:00
Родитель 5a10d44c18
Коммит 27e70e0745
2 изменённых файлов: 365 добавлений и 303 удалений

Просмотреть файл

@ -1610,8 +1610,8 @@ public class Tokenizer implements Locator, Locator2 {
flushChars(buf, pos);
state = transition(state, Tokenizer.TAG_OPEN, reconsume, pos);
break dataloop; // FALL THROUGH continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break dataloop;
case '\u0000':
maybeEmitReplacementCharacter(buf, pos);
continue;
@ -1667,8 +1667,8 @@ public class Tokenizer implements Locator, Locator2 {
* (Don't emit the token yet; further details will
* be filled in before it is emitted.)
*/
// `break` optimizes; `continue stateloop;` would be valid
break tagopenloop;
// continue stateloop;
} else if (c >= 'a' && c <= 'z') {
/*
* U+0061 LATIN SMALL LETTER A through to U+007A
@ -1688,8 +1688,8 @@ public class Tokenizer implements Locator, Locator2 {
* (Don't emit the token yet; further details will
* be filled in before it is emitted.)
*/
// `break` optimizes; `continue stateloop;` would be valid
break tagopenloop;
// continue stateloop;
}
switch (c) {
case '!':
@ -1788,8 +1788,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
strBufToElementNameString();
state = transition(state, Tokenizer.BEFORE_ATTRIBUTE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break tagnameloop;
// continue stateloop;
case '/':
/*
* U+002F SOLIDUS (/) Switch to the self-closing
@ -1939,8 +1939,8 @@ public class Tokenizer implements Locator, Locator2 {
* Switch to the attribute name state.
*/
state = transition(state, Tokenizer.ATTRIBUTE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break beforeattributenameloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -1989,8 +1989,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
attributeNameComplete();
state = transition(state, Tokenizer.BEFORE_ATTRIBUTE_VALUE, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break attributenameloop;
// continue stateloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Emit the current
@ -2079,8 +2079,8 @@ public class Tokenizer implements Locator, Locator2 {
// CPPONLY: attributeLine = line;
clearStrBufBeforeUse();
state = transition(state, Tokenizer.ATTRIBUTE_VALUE_DOUBLE_QUOTED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break beforeattributevalueloop;
// continue stateloop;
case '&':
/*
* U+0026 AMPERSAND (&) Switch to the attribute
@ -2176,8 +2176,8 @@ public class Tokenizer implements Locator, Locator2 {
addAttributeWithValue();
state = transition(state, Tokenizer.AFTER_ATTRIBUTE_VALUE_QUOTED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break attributevaluedoublequotedloop;
// continue stateloop;
case '&':
/*
* U+0026 AMPERSAND (&) Switch to the character
@ -2247,8 +2247,8 @@ public class Tokenizer implements Locator, Locator2 {
* start tag state.
*/
state = transition(state, Tokenizer.SELF_CLOSING_START_TAG, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterattributevaluequotedloop;
// continue stateloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Emit the current
@ -2311,6 +2311,7 @@ public class Tokenizer implements Locator, Locator2 {
state = transition(state, Tokenizer.BEFORE_ATTRIBUTE_NAME, reconsume, pos);
continue stateloop;
}
// no fallthrough, reordering opportunity
case ATTRIBUTE_VALUE_UNQUOTED:
for (;;) {
if (reconsume) {
@ -2402,7 +2403,8 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
case AFTER_ATTRIBUTE_NAME:
// no fallthrough, reordering opportunity
case AFTER_ATTRIBUTE_NAME:
for (;;) {
if (++pos == endPos) {
break stateloop;
@ -2501,6 +2503,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case MARKUP_DECLARATION_OPEN:
markupdeclarationopenloop: for (;;) {
if (++pos == endPos) {
@ -2537,8 +2540,8 @@ public class Tokenizer implements Locator, Locator2 {
clearStrBufBeforeUse();
appendStrBuf(c);
state = transition(state, Tokenizer.MARKUP_DECLARATION_HYPHEN, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break markupdeclarationopenloop;
// continue stateloop;
case 'd':
case 'D':
clearStrBufBeforeUse();
@ -2574,8 +2577,8 @@ public class Tokenizer implements Locator, Locator2 {
case '-':
clearStrBufAfterOneHyphen();
state = transition(state, Tokenizer.COMMENT_START, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break markupdeclarationhyphenloop;
// continue stateloop;
default:
errBogusComment();
reconsume = true;
@ -2646,8 +2649,8 @@ public class Tokenizer implements Locator, Locator2 {
* Switch to the comment state.
*/
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break commentstartloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -2668,8 +2671,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_END_DASH, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break commentloop;
// continue stateloop;
case '<':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN, reconsume, pos);
@ -2714,8 +2717,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_END, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break commentenddashloop;
// continue stateloop;
case '<':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN, reconsume, pos);
@ -2798,7 +2801,8 @@ public class Tokenizer implements Locator, Locator2 {
case '!':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_END_BANG, reconsume, pos);
continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break commentendloop;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
@ -2817,6 +2821,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
case COMMENT_END_BANG:
for (;;) {
if (++pos == endPos) {
@ -2882,8 +2887,9 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case COMMENT_LESSTHAN:
for (;;) {
commentlessthanloop: for (;;) {
if (++pos == endPos) {
break stateloop;
}
@ -2892,7 +2898,8 @@ public class Tokenizer implements Locator, Locator2 {
case '!':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN_BANG, reconsume, pos);
continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break commentlessthanloop;
case '<':
appendStrBuf(c);
continue;
@ -2902,10 +2909,12 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
case '\r':
appendStrBufCarriageReturn();
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
break stateloop;
case '\n':
appendStrBufLineFeed();
continue;
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
continue stateloop;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
@ -2917,7 +2926,7 @@ public class Tokenizer implements Locator, Locator2 {
}
// CPPONLY: MOZ_FALLTHROUGH;
case COMMENT_LESSTHAN_BANG:
for (;;) {
commentlessthanbangloop: for (;;) {
if (++pos == endPos) {
break stateloop;
}
@ -2926,17 +2935,20 @@ public class Tokenizer implements Locator, Locator2 {
case '-':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN_BANG_DASH, reconsume, pos);
continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break commentlessthanbangloop;
case '<':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN, reconsume, pos);
continue stateloop;
case '\r':
appendStrBufCarriageReturn();
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
break stateloop;
case '\n':
appendStrBufLineFeed();
continue;
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
continue stateloop;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
@ -2948,88 +2960,106 @@ public class Tokenizer implements Locator, Locator2 {
}
// CPPONLY: MOZ_FALLTHROUGH;
case COMMENT_LESSTHAN_BANG_DASH:
for (;;) {
if (++pos == endPos) {
if (++pos == endPos) {
break stateloop;
}
c = checkChar(buf, pos);
switch (c) {
case '-':
appendStrBuf(c);
state = transition(state,
Tokenizer.COMMENT_LESSTHAN_BANG_DASH_DASH,
reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break;
case '<':
appendStrBuf(c);
state = transition(state,
Tokenizer.COMMENT_LESSTHAN, reconsume, pos);
continue stateloop;
case '\r':
appendStrBufCarriageReturn();
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
break stateloop;
}
c = checkChar(buf, pos);
switch (c) {
case '-':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN_BANG_DASH_DASH, reconsume, pos);
continue stateloop;
case '<':
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT_LESSTHAN, reconsume, pos);
continue stateloop;
case '\r':
appendStrBufCarriageReturn();
break stateloop;
case '\n':
appendStrBufLineFeed();
continue;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
default:
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
continue stateloop;
}
case '\n':
appendStrBufLineFeed();
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
continue stateloop;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
default:
appendStrBuf(c);
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
continue stateloop;
}
// CPPONLY: MOZ_FALLTHROUGH;
case COMMENT_LESSTHAN_BANG_DASH_DASH:
for (;;) {
if (++pos == endPos) {
break stateloop;
}
c = checkChar(buf, pos);
switch (c) {
case '>':
appendStrBuf(c);
emitComment(3, pos);
state = transition(state, Tokenizer.DATA, reconsume, pos);
if (shouldSuspend) {
break stateloop;
}
continue stateloop;
case '-':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT_END, reconsume, pos);
continue stateloop;
case '\r':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
break stateloop;
case '\n':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
continue;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
case '!':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT_END_BANG, reconsume, pos);
continue stateloop;
default:
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT_END, reconsume, pos);
continue stateloop;
}
if (++pos == endPos) {
break stateloop;
}
// CPPONLY: MOZ_FALLTHROUGH;
// XXX reorder point
c = checkChar(buf, pos);
switch (c) {
case '>':
appendStrBuf(c);
emitComment(3, pos);
state = transition(state, Tokenizer.DATA, reconsume,
pos);
if (shouldSuspend) {
break stateloop;
}
continue stateloop;
case '-':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c,
reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT_END,
reconsume, pos);
continue stateloop;
case '\r':
c = '\n';
silentCarriageReturn();
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c,
reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
break stateloop;
case '\n':
silentLineFeed();
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c,
reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
continue stateloop;
case '!':
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c,
reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state,
Tokenizer.COMMENT_END_BANG, reconsume, pos);
continue stateloop;
case '\u0000':
c = '\uFFFD';
// CPPONLY: MOZ_FALLTHROUGH;
default:
errNestedComment();
adjustDoubleHyphenAndAppendToStrBufAndErr(c,
reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = transition(state, Tokenizer.COMMENT,
reconsume, pos);
continue stateloop;
}
// no fallthrough, reordering opportunity
case COMMENT_START_DASH:
if (++pos == endPos) {
break stateloop;
@ -3089,6 +3119,7 @@ public class Tokenizer implements Locator, Locator2 {
state = transition(state, Tokenizer.COMMENT, reconsume, pos);
continue stateloop;
}
// no fallthrough, reordering opportunity
case CDATA_START:
for (;;) {
if (++pos == endPos) {
@ -3111,7 +3142,8 @@ public class Tokenizer implements Locator, Locator2 {
cstart = pos; // start coalescing
reconsume = true;
state = transition(state, Tokenizer.CDATA_SECTION, reconsume, pos);
break; // FALL THROUGH continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -3129,7 +3161,8 @@ public class Tokenizer implements Locator, Locator2 {
case ']':
flushChars(buf, pos);
state = transition(state, Tokenizer.CDATA_RSQB, reconsume, pos);
break cdatasectionloop; // FALL THROUGH
// `break` optimizes; `continue stateloop;` would be valid
break cdatasectionloop;
case '\u0000':
maybeEmitReplacementCharacter(buf, pos);
continue;
@ -3145,23 +3178,23 @@ public class Tokenizer implements Locator, Locator2 {
}
// CPPONLY: MOZ_FALLTHROUGH;
case CDATA_RSQB:
cdatarsqb: for (;;) {
if (++pos == endPos) {
break stateloop;
}
c = checkChar(buf, pos);
switch (c) {
case ']':
state = transition(state, Tokenizer.CDATA_RSQB_RSQB, reconsume, pos);
break cdatarsqb;
default:
tokenHandler.characters(Tokenizer.RSQB_RSQB, 0,
1);
cstart = pos;
reconsume = true;
state = transition(state, Tokenizer.CDATA_SECTION, reconsume, pos);
continue stateloop;
}
if (++pos == endPos) {
break stateloop;
}
c = checkChar(buf, pos);
switch (c) {
case ']':
state = transition(state, Tokenizer.CDATA_RSQB_RSQB,
reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break;
default:
tokenHandler.characters(Tokenizer.RSQB_RSQB, 0, 1);
cstart = pos;
reconsume = true;
state = transition(state, Tokenizer.CDATA_SECTION,
reconsume, pos);
continue stateloop;
}
// CPPONLY: MOZ_FALLTHROUGH;
case CDATA_RSQB_RSQB:
@ -3200,6 +3233,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case ATTRIBUTE_VALUE_SINGLE_QUOTED:
attributevaluesinglequotedloop: for (;;) {
if (reconsume) {
@ -3235,8 +3269,8 @@ public class Tokenizer implements Locator, Locator2 {
setAdditionalAndRememberAmpersandLocation('\'');
returnState = state;
state = transition(state, Tokenizer.CONSUME_CHARACTER_REFERENCE, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break attributevaluesinglequotedloop;
// continue stateloop;
case '\r':
appendStrBufCarriageReturn();
break stateloop;
@ -3334,7 +3368,8 @@ public class Tokenizer implements Locator, Locator2 {
// Didn't fail yet
appendCharRefBuf(c);
state = transition(state, Tokenizer.CHARACTER_REFERENCE_HILO_LOOKUP, reconsume, pos);
// FALL THROUGH continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break;
}
// CPPONLY: MOZ_FALLTHROUGH;
case CHARACTER_REFERENCE_HILO_LOOKUP:
@ -3408,7 +3443,7 @@ public class Tokenizer implements Locator, Locator2 {
candidate = -1;
charRefBufMark = 0;
state = transition(state, Tokenizer.CHARACTER_REFERENCE_TAIL, reconsume, pos);
// FALL THROUGH continue stateloop;
// fallthrough optimizes; `continue stateloop;` would also be valid
}
// CPPONLY: MOZ_FALLTHROUGH;
case CHARACTER_REFERENCE_TAIL:
@ -3594,7 +3629,7 @@ public class Tokenizer implements Locator, Locator2 {
* I'm I tell you.
*/
}
// XXX reorder point
// no fallthrough, reordering opportunity
case CONSUME_NCR:
if (++pos == endPos) {
break stateloop;
@ -3638,7 +3673,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
reconsume = true;
state = transition(state, Tokenizer.DECIMAL_NRC_LOOP, reconsume, pos);
// FALL THROUGH continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break;
}
// CPPONLY: MOZ_FALLTHROUGH;
case DECIMAL_NRC_LOOP:
@ -3670,7 +3706,7 @@ public class Tokenizer implements Locator, Locator2 {
cstart = pos + 1;
}
state = transition(state, Tokenizer.HANDLE_NCR_VALUE, reconsume, pos);
// FALL THROUGH continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break decimalloop;
} else {
errNoDigitsInNCR();
@ -3710,7 +3746,7 @@ public class Tokenizer implements Locator, Locator2 {
}
reconsume = true;
state = transition(state, Tokenizer.HANDLE_NCR_VALUE, reconsume, pos);
// FALL THROUGH continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break decimalloop;
}
}
@ -3724,6 +3760,7 @@ public class Tokenizer implements Locator, Locator2 {
handleNcrValue(returnState);
state = transition(state, returnState, reconsume, pos);
continue stateloop;
// no fallthrough, reordering opportunity
case HEX_NCR_LOOP:
for (;;) {
if (++pos == endPos) {
@ -3808,6 +3845,7 @@ public class Tokenizer implements Locator, Locator2 {
}
}
}
// no fallthrough, reordering opportunity
case PLAINTEXT:
plaintextloop: for (;;) {
if (reconsume) {
@ -3837,6 +3875,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// no fallthrough, reordering opportunity
case CLOSE_TAG_OPEN:
if (++pos == endPos) {
break stateloop;
@ -3918,6 +3957,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case RCDATA:
rcdataloop: for (;;) {
if (reconsume) {
@ -3968,6 +4008,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// no fallthrough, reordering opportunity
case RAWTEXT:
rawtextloop: for (;;) {
if (reconsume) {
@ -3988,8 +4029,8 @@ public class Tokenizer implements Locator, Locator2 {
returnState = state;
state = transition(state, Tokenizer.RAWTEXT_RCDATA_LESS_THAN_SIGN, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break rawtextloop;
// FALL THRU continue stateloop;
case '\u0000':
emitReplacementCharacter(buf, pos);
continue;
@ -4024,8 +4065,8 @@ public class Tokenizer implements Locator, Locator2 {
index = 0;
clearStrBufBeforeUse();
state = transition(state, Tokenizer.NON_DATA_END_TAG_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break rawtextrcdatalessthansignloop;
// FALL THRU continue stateloop;
default:
/*
* Otherwise, emit a U+003C LESS-THAN SIGN
@ -4156,6 +4197,7 @@ public class Tokenizer implements Locator, Locator2 {
}
}
}
// no fallthrough, reordering opportunity
// BEGIN HOTSPOT WORKAROUND
case BOGUS_COMMENT:
boguscommentloop: for (;;) {
@ -4196,6 +4238,7 @@ public class Tokenizer implements Locator, Locator2 {
case '-':
appendStrBuf(c);
state = transition(state, Tokenizer.BOGUS_COMMENT_HYPHEN, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break boguscommentloop;
case '\r':
appendStrBufCarriageReturn();
@ -4249,6 +4292,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case SCRIPT_DATA:
scriptdataloop: for (;;) {
if (reconsume) {
@ -4268,8 +4312,8 @@ public class Tokenizer implements Locator, Locator2 {
flushChars(buf, pos);
returnState = state;
state = transition(state, Tokenizer.SCRIPT_DATA_LESS_THAN_SIGN, reconsume, pos);
break scriptdataloop; // FALL THRU continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataloop;
case '\u0000':
emitReplacementCharacter(buf, pos);
continue;
@ -4310,9 +4354,8 @@ public class Tokenizer implements Locator, Locator2 {
tokenHandler.characters(Tokenizer.LT_GT, 0, 1);
cstart = pos;
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPE_START, reconsume, pos);
break scriptdatalessthansignloop; // FALL THRU
// continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatalessthansignloop;
default:
/*
* Otherwise, emit a U+003C LESS-THAN SIGN
@ -4347,9 +4390,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data escape start dash state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPE_START_DASH, reconsume, pos);
break scriptdataescapestartloop; // FALL THRU
// continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapestartloop;
default:
/*
* Anything else Reconsume the current input
@ -4378,8 +4420,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data escaped dash dash state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPED_DASH_DASH, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapestartdashloop;
// continue stateloop;
default:
/*
* Anything else Reconsume the current input
@ -4442,8 +4484,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data escaped state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapeddashdashloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -4468,9 +4510,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data escaped dash state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPED_DASH, reconsume, pos);
break scriptdataescapedloop; // FALL THRU
// continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapedloop;
case '<':
/*
* U+003C LESS-THAN SIGN (<) Switch to the
@ -4523,8 +4564,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
flushChars(buf, pos);
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapeddashloop;
// continue stateloop;
case '\u0000':
emitReplacementCharacter(buf, pos);
state = transition(state, Tokenizer.SCRIPT_DATA_ESCAPED, reconsume, pos);
@ -4588,8 +4629,8 @@ public class Tokenizer implements Locator, Locator2 {
* escape start state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPE_START, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdataescapedlessthanloop;
// continue stateloop;
default:
/*
* Anything else Emit a U+003C LESS-THAN SIGN
@ -4648,8 +4689,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data double escaped state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatadoubleescapestartloop;
// continue stateloop;
default:
/*
* Anything else Reconsume the current input
@ -4682,9 +4723,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data double escaped dash state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPED_DASH, reconsume, pos);
break scriptdatadoubleescapedloop; // FALL THRU
// continue
// stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatadoubleescapedloop;
case '<':
/*
* U+003C LESS-THAN SIGN (<) Emit a U+003C
@ -4730,8 +4770,8 @@ public class Tokenizer implements Locator, Locator2 {
* script data double escaped dash dash state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatadoubleescapeddashloop;
// continue stateloop;
case '<':
/*
* U+003C LESS-THAN SIGN (<) Emit a U+003C
@ -4788,6 +4828,7 @@ public class Tokenizer implements Locator, Locator2 {
* state.
*/
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatadoubleescapeddashdashloop;
case '>':
/*
@ -4838,6 +4879,7 @@ public class Tokenizer implements Locator, Locator2 {
*/
index = 0;
state = transition(state, Tokenizer.SCRIPT_DATA_DOUBLE_ESCAPE_END, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break scriptdatadoubleescapedlessthanloop;
default:
/*
@ -4904,6 +4946,7 @@ public class Tokenizer implements Locator, Locator2 {
continue stateloop;
}
}
// no fallthrough, reordering opportunity
case MARKUP_DECLARATION_OCTYPE:
markupdeclarationdoctypeloop: for (;;) {
if (++pos == endPos) {
@ -4928,8 +4971,8 @@ public class Tokenizer implements Locator, Locator2 {
} else {
reconsume = true;
state = transition(state, Tokenizer.DOCTYPE, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break markupdeclarationdoctypeloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -4964,8 +5007,8 @@ public class Tokenizer implements Locator, Locator2 {
* Switch to the before DOCTYPE name state.
*/
state = transition(state, Tokenizer.BEFORE_DOCTYPE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypeloop;
// continue stateloop;
default:
/*
* Anything else Parse error.
@ -4977,8 +5020,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
reconsume = true;
state = transition(state, Tokenizer.BEFORE_DOCTYPE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypeloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -5059,8 +5102,8 @@ public class Tokenizer implements Locator, Locator2 {
* Switch to the DOCTYPE name state.
*/
state = transition(state, Tokenizer.DOCTYPE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break beforedoctypenameloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -5092,8 +5135,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
strBufToDoctypeName();
state = transition(state, Tokenizer.AFTER_DOCTYPE_NAME, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypenameloop;
// continue stateloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Emit the current
@ -5179,8 +5222,8 @@ public class Tokenizer implements Locator, Locator2 {
case 'P':
index = 0;
state = transition(state, Tokenizer.DOCTYPE_UBLIC, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterdoctypenameloop;
// continue stateloop;
case 's':
case 'S':
index = 0;
@ -5234,8 +5277,8 @@ public class Tokenizer implements Locator, Locator2 {
} else {
reconsume = true;
state = transition(state, Tokenizer.AFTER_DOCTYPE_PUBLIC_KEYWORD, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypeublicloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -5270,8 +5313,8 @@ public class Tokenizer implements Locator, Locator2 {
* identifier state.
*/
state = transition(state, Tokenizer.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterdoctypepublickeywordloop;
// FALL THROUGH continue stateloop
case '"':
/*
* U+0022 QUOTATION MARK (") Parse Error.
@ -5377,8 +5420,8 @@ public class Tokenizer implements Locator, Locator2 {
* (double-quoted) state.
*/
state = transition(state, Tokenizer.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break beforedoctypepublicidentifierloop;
// continue stateloop;
case '\'':
/*
* U+0027 APOSTROPHE (') Set the DOCTYPE token's
@ -5444,8 +5487,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
publicIdentifier = strBufToString();
state = transition(state, Tokenizer.AFTER_DOCTYPE_PUBLIC_IDENTIFIER, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypepublicidentifierdoublequotedloop;
// continue stateloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Parse error.
@ -5520,8 +5563,8 @@ public class Tokenizer implements Locator, Locator2 {
* system identifiers state.
*/
state = transition(state, Tokenizer.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterdoctypepublicidentifierloop;
// continue stateloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Emit the current
@ -5635,8 +5678,8 @@ public class Tokenizer implements Locator, Locator2 {
* (double-quoted) state.
*/
state = transition(state, Tokenizer.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break betweendoctypepublicandsystemidentifiersloop;
// continue stateloop;
case '\'':
/*
* U+0027 APOSTROPHE (') Set the DOCTYPE token's
@ -5682,7 +5725,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
systemIdentifier = strBufToString();
state = transition(state, Tokenizer.AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos);
continue stateloop;
// `break` optimizes; `continue stateloop;` would be valid
break doctypesystemidentifierdoublequotedloop;
case '>':
/*
* U+003E GREATER-THAN SIGN (>) Parse error.
@ -5729,6 +5773,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
case AFTER_DOCTYPE_SYSTEM_IDENTIFIER:
afterdoctypesystemidentifierloop: for (;;) {
if (++pos == endPos) {
@ -5776,8 +5821,8 @@ public class Tokenizer implements Locator, Locator2 {
*/
bogusDoctypeWithoutQuirks();
state = transition(state, Tokenizer.BOGUS_DOCTYPE, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterdoctypesystemidentifierloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -5823,6 +5868,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// no fallthrough, reordering opportunity
case DOCTYPE_YSTEM:
doctypeystemloop: for (;;) {
if (++pos == endPos) {
@ -5852,8 +5898,8 @@ public class Tokenizer implements Locator, Locator2 {
} else {
reconsume = true;
state = transition(state, Tokenizer.AFTER_DOCTYPE_SYSTEM_KEYWORD, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break doctypeystemloop;
// continue stateloop;
}
}
// CPPONLY: MOZ_FALLTHROUGH;
@ -5888,8 +5934,8 @@ public class Tokenizer implements Locator, Locator2 {
* identifier state.
*/
state = transition(state, Tokenizer.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break afterdoctypesystemkeywordloop;
// FALL THROUGH continue stateloop
case '"':
/*
* U+0022 QUOTATION MARK (") Parse Error.
@ -6008,8 +6054,8 @@ public class Tokenizer implements Locator, Locator2 {
* (single-quoted) state.
*/
state = transition(state, Tokenizer.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break beforedoctypesystemidentifierloop;
// continue stateloop;
case '>':
/* U+003E GREATER-THAN SIGN (>) Parse error. */
errExpectedSystemId();
@ -6106,6 +6152,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// no fallthrough, reordering opportunity
case DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:
for (;;) {
if (++pos == endPos) {
@ -6167,6 +6214,7 @@ public class Tokenizer implements Locator, Locator2 {
continue;
}
}
// no fallthrough, reordering opportunity
case PROCESSING_INSTRUCTION:
processinginstructionloop: for (;;) {
if (++pos == endPos) {
@ -6179,8 +6227,8 @@ public class Tokenizer implements Locator, Locator2 {
state,
Tokenizer.PROCESSING_INSTRUCTION_QUESTION_MARK,
reconsume, pos);
// `break` optimizes; `continue stateloop;` would be valid
break processinginstructionloop;
// continue stateloop;
default:
continue;
}

Просмотреть файл

@ -1449,7 +1449,7 @@ stateloop:
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_END_BANG,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
NS_HTML5_BREAK(commentendloop);
}
case '\0': {
c = 0xfffd;
@ -1465,6 +1465,8 @@ stateloop:
}
}
}
commentendloop_end:;
[[fallthrough]];
}
case COMMENT_END_BANG: {
for (;;) {
@ -1526,7 +1528,7 @@ stateloop:
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN_BANG,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
NS_HTML5_BREAK(commentlessthanloop);
}
case '<': {
appendStrBuf(c);
@ -1541,11 +1543,15 @@ stateloop:
}
case '\r': {
appendStrBufCarriageReturn();
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
NS_HTML5_BREAK(stateloop);
}
case '\n': {
appendStrBufLineFeed();
continue;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\0': {
c = 0xfffd;
@ -1559,6 +1565,7 @@ stateloop:
}
}
}
commentlessthanloop_end:;
[[fallthrough]];
}
case COMMENT_LESSTHAN_BANG: {
@ -1573,7 +1580,7 @@ stateloop:
state = P::transition(
mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN_BANG_DASH, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
NS_HTML5_BREAK(commentlessthanbangloop);
}
case '<': {
appendStrBuf(c);
@ -1584,11 +1591,15 @@ stateloop:
}
case '\r': {
appendStrBufCarriageReturn();
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
NS_HTML5_BREAK(stateloop);
}
case '\n': {
appendStrBufLineFeed();
continue;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\0': {
c = 0xfffd;
@ -1602,134 +1613,136 @@ stateloop:
}
}
}
commentlessthanbangloop_end:;
[[fallthrough]];
}
case COMMENT_LESSTHAN_BANG_DASH: {
for (;;) {
if (++pos == endPos) {
if (++pos == endPos) {
NS_HTML5_BREAK(stateloop);
}
c = checkChar(buf, pos);
switch (c) {
case '-': {
appendStrBuf(c);
state =
P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN_BANG_DASH_DASH,
reconsume, pos);
break;
}
case '<': {
appendStrBuf(c);
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN, reconsume,
pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\r': {
appendStrBufCarriageReturn();
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_BREAK(stateloop);
}
c = checkChar(buf, pos);
switch (c) {
case '-': {
appendStrBuf(c);
state = P::transition(
mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN_BANG_DASH_DASH, reconsume,
pos);
NS_HTML5_CONTINUE(stateloop);
}
case '<': {
appendStrBuf(c);
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_LESSTHAN,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\r': {
appendStrBufCarriageReturn();
NS_HTML5_BREAK(stateloop);
}
case '\n': {
appendStrBufLineFeed();
continue;
}
case '\0': {
c = 0xfffd;
[[fallthrough]];
}
default: {
appendStrBuf(c);
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\n': {
appendStrBufLineFeed();
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\0': {
c = 0xfffd;
[[fallthrough]];
}
default: {
appendStrBuf(c);
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
}
[[fallthrough]];
}
case COMMENT_LESSTHAN_BANG_DASH_DASH: {
for (;;) {
if (++pos == endPos) {
NS_HTML5_BREAK(stateloop);
}
c = checkChar(buf, pos);
switch (c) {
case '>': {
appendStrBuf(c);
emitComment(3, pos);
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::DATA,
reconsume, pos);
if (shouldSuspend) {
NS_HTML5_BREAK(stateloop);
}
NS_HTML5_CONTINUE(stateloop);
}
case '-': {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state =
P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_END, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\r': {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
if (++pos == endPos) {
NS_HTML5_BREAK(stateloop);
}
c = checkChar(buf, pos);
switch (c) {
case '>': {
appendStrBuf(c);
emitComment(3, pos);
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::DATA,
reconsume, pos);
if (shouldSuspend) {
NS_HTML5_BREAK(stateloop);
}
case '\n': {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT, reconsume, pos);
continue;
NS_HTML5_CONTINUE(stateloop);
}
case '-': {
if (P::reportErrors) {
errNestedComment();
}
case '\0': {
c = 0xfffd;
[[fallthrough]];
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state =
P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT_END,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\r': {
c = '\n';
silentCarriageReturn();
if (P::reportErrors) {
errNestedComment();
}
case '!': {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_END_BANG,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_BREAK(stateloop);
}
case '\n': {
silentLineFeed();
if (P::reportErrors) {
errNestedComment();
}
default: {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state =
P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_END, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
case '!': {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::COMMENT_END_BANG, reconsume,
pos);
NS_HTML5_CONTINUE(stateloop);
}
case '\0': {
c = 0xfffd;
[[fallthrough]];
}
default: {
if (P::reportErrors) {
errNestedComment();
}
adjustDoubleHyphenAndAppendToStrBufAndErr(
c, reportedConsecutiveHyphens);
reportedConsecutiveHyphens = true;
state = P::transition(mViewSource.get(), nsHtml5Tokenizer::COMMENT,
reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
}
[[fallthrough]];
}
case COMMENT_START_DASH: {
if (++pos == endPos) {
@ -1859,30 +1872,27 @@ stateloop:
[[fallthrough]];
}
case CDATA_RSQB: {
for (;;) {
if (++pos == endPos) {
NS_HTML5_BREAK(stateloop);
if (++pos == endPos) {
NS_HTML5_BREAK(stateloop);
}
c = checkChar(buf, pos);
switch (c) {
case ']': {
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::CDATA_RSQB_RSQB, reconsume,
pos);
break;
}
c = checkChar(buf, pos);
switch (c) {
case ']': {
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::CDATA_RSQB_RSQB,
reconsume, pos);
NS_HTML5_BREAK(cdatarsqb);
}
default: {
tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 1);
cstart = pos;
reconsume = true;
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::CDATA_SECTION, reconsume,
pos);
NS_HTML5_CONTINUE(stateloop);
}
default: {
tokenHandler->characters(nsHtml5Tokenizer::RSQB_RSQB, 0, 1);
cstart = pos;
reconsume = true;
state =
P::transition(mViewSource.get(),
nsHtml5Tokenizer::CDATA_SECTION, reconsume, pos);
NS_HTML5_CONTINUE(stateloop);
}
}
cdatarsqb_end:;
[[fallthrough]];
}
case CDATA_RSQB_RSQB: {
@ -2033,6 +2043,7 @@ stateloop:
P::transition(mViewSource.get(),
nsHtml5Tokenizer::CHARACTER_REFERENCE_HILO_LOOKUP,
reconsume, pos);
break;
}
}
[[fallthrough]];
@ -2227,6 +2238,7 @@ stateloop:
state = P::transition(mViewSource.get(),
nsHtml5Tokenizer::DECIMAL_NRC_LOOP, reconsume,
pos);
break;
}
}
[[fallthrough]];
@ -4002,7 +4014,7 @@ stateloop:
mViewSource.get(),
nsHtml5Tokenizer::AFTER_DOCTYPE_SYSTEM_IDENTIFIER, reconsume,
pos);
NS_HTML5_CONTINUE(stateloop);
NS_HTML5_BREAK(doctypesystemidentifierdoublequotedloop);
}
case '>': {
if (P::reportErrors) {
@ -4036,6 +4048,8 @@ stateloop:
}
}
}
doctypesystemidentifierdoublequotedloop_end:;
[[fallthrough]];
}
case AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {
for (;;) {