diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-08-04 20:23:03 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-08-04 20:23:46 +0200 |
commit | 0d0230ab10b123584431aab07a807697982b44c9 (patch) | |
tree | 5db83389626524670f162fcb45b211e8a0a1224f /AK | |
parent | a846ee76eaf9233fac0e1c0e73eb94aa7a8d122b (diff) | |
download | serenity-0d0230ab10b123584431aab07a807697982b44c9.zip |
JsonParser: Fold extract_while() into parse_number()
It wasn't unsed anywhere else anyway, and this is actually ~1% faster
on the load_4chan_catalog benchmark.
Diffstat (limited to 'AK')
-rw-r--r-- | AK/JsonParser.cpp | 21 | ||||
-rw-r--r-- | AK/JsonParser.h | 3 |
2 files changed, 11 insertions, 13 deletions
diff --git a/AK/JsonParser.cpp b/AK/JsonParser.cpp index b50c89d356..29f4f81755 100644 --- a/AK/JsonParser.cpp +++ b/AK/JsonParser.cpp @@ -30,15 +30,6 @@ void JsonParser::consume_while(C condition) consume(); } -template<typename C> -Vector<char, 128> JsonParser::extract_while(C condition) -{ - Vector<char, 128> buffer; - while (condition(peek())) - buffer.append(consume()); - return buffer; -}; - void JsonParser::consume_whitespace() { consume_while([](char ch) { return is_whitespace(ch); }); @@ -156,7 +147,17 @@ JsonValue JsonParser::parse_string() JsonValue JsonParser::parse_number() { - auto number_buffer = extract_while([](char ch) { return ch == '-' || (ch >= '0' && ch <= '9'); }); + Vector<char, 128> number_buffer; + for (;;) { + char ch = peek(); + if (ch == '-' || (ch >= '0' && ch <= '9')) { + number_buffer.append(ch); + ++m_index; + continue; + } + break; + } + StringView number_string(number_buffer.data(), number_buffer.size()); bool ok; auto value = JsonValue(number_string.to_uint(ok)); diff --git a/AK/JsonParser.h b/AK/JsonParser.h index 26756abf36..7a65d1c638 100644 --- a/AK/JsonParser.h +++ b/AK/JsonParser.h @@ -35,9 +35,6 @@ private: template<typename C> void consume_while(C); - template<typename C> - Vector<char, 128> extract_while(C); - StringView m_input; int m_index { 0 }; |