Stop inlining strings and numbers into n_value

Too complex
This commit is contained in:
2025-06-23 13:00:10 -04:00
parent 2cd2975ad4
commit 7ae2ef5443

View File

@@ -884,30 +884,10 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self, char *buf,
self->dataBegin = self->writeBuf = buf; self->dataBegin = self->writeBuf = buf;
self->pop(); self->pop();
self->strDfa.reset(); self->strDfa.reset();
if (auto s = scan_string(self, buf, bufEnd)) {
if (s == WeaselJson_AGAIN) {
if (auto s2 = self->push({N_STRING2})) { if (auto s2 = self->push({N_STRING2})) {
return s2; return s2;
} }
} break;
return s;
}
{
switch (*buf) {
case '"':
self->flushString(true);
++buf;
MUSTTAIL return Parser3::keepGoing(self, buf, bufEnd);
case '\\':
++buf;
if (auto s = self->push({N_STRING_FOLLOWING_ESCAPE})) {
return s;
}
MUSTTAIL return Parser3::keepGoing(self, buf, bufEnd);
default:
return WeaselJson_REJECT;
}
}
case '0': case '0':
case '1': case '1':
case '2': case '2':
@@ -922,19 +902,10 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self, char *buf,
self->dataBegin = buf; self->dataBegin = buf;
self->pop(); self->pop();
self->numDfa.reset(); self->numDfa.reset();
buf = (char *)self->numDfa.scan(buf, bufEnd); if (auto s2 = self->push({N_NUMBER})) {
if (buf == bufEnd) { return s2;
self->flushNumber(false, buf);
if (auto s = self->push({N_NUMBER})) {
return s;
} }
return WeaselJson_AGAIN; break;
}
if (!self->numDfa.accept()) [[unlikely]] {
return WeaselJson_REJECT;
}
self->flushNumber(true, buf);
MUSTTAIL return Parser3::keepGoing(self, buf, bufEnd);
case 't': case 't':
++buf; ++buf;
self->pop(); self->pop();