Stop inlining strings and numbers into n_value
Too complex
This commit is contained in:
@@ -884,30 +884,10 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self, char *buf,
|
||||
self->dataBegin = self->writeBuf = buf;
|
||||
self->pop();
|
||||
self->strDfa.reset();
|
||||
if (auto s = scan_string(self, buf, bufEnd)) {
|
||||
if (s == WeaselJson_AGAIN) {
|
||||
if (auto s2 = self->push({N_STRING2})) {
|
||||
return s2;
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
@@ -922,19 +902,10 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self, char *buf,
|
||||
self->dataBegin = buf;
|
||||
self->pop();
|
||||
self->numDfa.reset();
|
||||
buf = (char *)self->numDfa.scan(buf, bufEnd);
|
||||
if (buf == bufEnd) {
|
||||
self->flushNumber(false, buf);
|
||||
if (auto s = self->push({N_NUMBER})) {
|
||||
return s;
|
||||
if (auto s2 = self->push({N_NUMBER})) {
|
||||
return s2;
|
||||
}
|
||||
return WeaselJson_AGAIN;
|
||||
}
|
||||
if (!self->numDfa.accept()) [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
}
|
||||
self->flushNumber(true, buf);
|
||||
MUSTTAIL return Parser3::keepGoing(self, buf, bufEnd);
|
||||
break;
|
||||
case 't':
|
||||
++buf;
|
||||
self->pop();
|
||||
|
||||
Reference in New Issue
Block a user