Don't check for empty stack as often
This commit is contained in:
33
src/test.cpp
33
src/test.cpp
@@ -563,9 +563,6 @@ private:
|
||||
}
|
||||
|
||||
static Status keepGoing(Parser2 *self) {
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
if (self->len() == 0) {
|
||||
return S_AGAIN;
|
||||
}
|
||||
@@ -578,6 +575,9 @@ private:
|
||||
return s;
|
||||
}
|
||||
self->pop();
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
static Status stringFromEscape(Parser2 *self) {
|
||||
@@ -585,6 +585,9 @@ private:
|
||||
return s;
|
||||
}
|
||||
self->pop();
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
static Status number(Parser2 *self) {
|
||||
@@ -592,6 +595,9 @@ private:
|
||||
return s;
|
||||
}
|
||||
self->pop();
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
static Status value(Parser2 *self) {
|
||||
@@ -656,6 +662,9 @@ private:
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_array(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
} else {
|
||||
self->pop();
|
||||
@@ -671,6 +680,9 @@ private:
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_object(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
} else if (*self->buf == '"') {
|
||||
self->callbacks->on_begin_string(self->data);
|
||||
@@ -698,6 +710,9 @@ private:
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_array(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
return S_REJECT;
|
||||
@@ -716,6 +731,9 @@ private:
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_object(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
return S_REJECT;
|
||||
@@ -724,6 +742,9 @@ private:
|
||||
if (*self->buf++ == 'e') {
|
||||
self->pop();
|
||||
self->callbacks->on_true_literal(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
return S_REJECT;
|
||||
@@ -732,6 +753,9 @@ private:
|
||||
if (*self->buf++ == 'e') {
|
||||
self->pop();
|
||||
self->callbacks->on_false_literal(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
return S_REJECT;
|
||||
@@ -740,6 +764,9 @@ private:
|
||||
if (*self->buf++ == 'l') {
|
||||
self->pop();
|
||||
self->callbacks->on_null_literal(self->data);
|
||||
if (self->empty()) {
|
||||
return S_OK;
|
||||
}
|
||||
MUSTTAIL return keepGoing(self);
|
||||
}
|
||||
return S_REJECT;
|
||||
|
||||
Reference in New Issue
Block a user