@@ -101,55 +101,61 @@ really_inline simd8<bool> must_be_2_3_continuation(const simd8<uint8_t> prev2, c
101101 return is_third_byte ^ is_fourth_byte;
102102}
103103
104+ } // namespace SIMDJSON_IMPLEMENTATION
105+ } // namespace simdjson
106+
104107#include " generic/stage1/buf_block_reader.h"
105108#include " generic/stage1/json_string_scanner.h"
106109#include " generic/stage1/json_scanner.h"
110+ #include " generic/stage1/json_minifier.h"
111+ #include " generic/stage1/find_next_document_index.h"
112+ #include " generic/stage1/utf8_lookup4_algorithm.h"
113+ #include " generic/stage1/json_structural_indexer.h"
114+
115+ //
116+ // Stage 2
117+ //
118+
119+ #include " arm64/stringparsing.h"
120+ #include " arm64/numberparsing.h"
121+ #include " generic/stage2/logger.h"
122+ #include " generic/stage2/atomparsing.h"
123+ #include " generic/stage2/structural_iterator.h"
124+ #include " generic/stage2/structural_parser.h"
125+
126+ //
127+ // Implementation-specific overrides
128+ //
129+ namespace simdjson {
130+ namespace SIMDJSON_IMPLEMENTATION {
107131
108132namespace stage1 {
133+
109134really_inline uint64_t json_string_scanner::find_escaped (uint64_t backslash) {
110135 // On ARM, we don't short-circuit this if there are no backslashes, because the branch gives us no
111136 // benefit and therefore makes things worse.
112137 // if (!backslash) { uint64_t escaped = prev_escaped; prev_escaped = 0; return escaped; }
113138 return find_escaped_branchless (backslash);
114139}
115- }
116140
117- #include " generic/stage1/json_minifier.h"
141+ } // namespace stage1
142+
118143WARN_UNUSED error_code implementation::minify (const uint8_t *buf, size_t len, uint8_t *dst, size_t &dst_len) const noexcept {
119144 return arm64::stage1::json_minifier::minify<64 >(buf, len, dst, dst_len);
120145}
121146
122- #include " generic/stage1/find_next_document_index.h"
123- #include " generic/stage1/utf8_lookup4_algorithm.h"
124- #include " generic/stage1/json_structural_indexer.h"
125147WARN_UNUSED error_code dom_parser_implementation::stage1 (const uint8_t *_buf, size_t _len, bool streaming) noexcept {
126148 this ->buf = _buf;
127149 this ->len = _len;
128150 return arm64::stage1::json_structural_indexer::index<64 >(buf, len, *this , streaming);
129151}
152+
130153#include " generic/stage1/utf8_validator.h"
154+
131155WARN_UNUSED bool implementation::validate_utf8 (const char *buf, size_t len) const noexcept {
132156 return simdjson::arm64::stage1::generic_validate_utf8 (buf,len);
133157}
134158
135- } // namespace SIMDJSON_IMPLEMENTATION
136- } // namespace simdjson
137-
138- //
139- // Stage 2
140- //
141-
142- #include " arm64/stringparsing.h"
143- #include " arm64/numberparsing.h"
144-
145- namespace simdjson {
146- namespace SIMDJSON_IMPLEMENTATION {
147-
148- #include " generic/stage2/logger.h"
149- #include " generic/stage2/atomparsing.h"
150- #include " generic/stage2/structural_iterator.h"
151- #include " generic/stage2/structural_parser.h"
152-
153159WARN_UNUSED error_code dom_parser_implementation::parse (const uint8_t *_buf, size_t _len, dom::document &_doc) noexcept {
154160 error_code err = stage1 (_buf, _len, false );
155161 if (err) { return err; }
0 commit comments