Skip to content

Commit 6a71b24

Browse files
committed
Reuse stored buf and len from parser
1 parent 84712a8 commit 6a71b24

File tree

8 files changed

+30
-32
lines changed

8 files changed

+30
-32
lines changed

benchmark/benchmarker.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ struct benchmarker {
334334
} else {
335335
event_count stage2_count;
336336
collector.start();
337-
error = parser.implementation->stage2((const uint8_t *)json.data(), json.size(), parser);
337+
error = parser.implementation->stage2(parser);
338338
if (error) {
339339
exit_error(string("Failed to parse ") + filename + " during stage 2 parsing " + error_message(error));
340340
}
@@ -345,7 +345,7 @@ struct benchmarker {
345345
// Calculate stats the first time we parse
346346
if (stats == NULL) {
347347
if (stage1_only) { // we need stage 2 once
348-
error = parser.implementation->stage2((const uint8_t *)json.data(), json.size(), parser);
348+
error = parser.implementation->stage2(parser);
349349
if (error) {
350350
printf("Warning: failed to parse during stage 2. Unable to acquire statistics.\n");
351351
}

include/simdjson/internal/dom_parser_implementation.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,10 @@ class dom_parser_implementation {
6060
*
6161
* Overridden by each implementation.
6262
*
63-
* @param buf The json document to parse. *MUST* be allocated up to len + SIMDJSON_PADDING bytes.
64-
* @param len The length of the json document.
6563
* @param parser The parser object. TODO replace this with dom::document & when state is moved to the implementation.
6664
* @return The error code, or SUCCESS if there was no error.
6765
*/
68-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser) noexcept = 0;
66+
WARN_UNUSED virtual error_code stage2(dom::parser &parser) noexcept = 0;
6967

7068
/**
7169
* @private For internal implementation use

src/arm64/dom_parser_implementation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ WARN_UNUSED error_code implementation::minify(const uint8_t *buf, size_t len, ui
8484

8585
#include "generic/stage1/utf8_lookup2_algorithm.h"
8686
#include "generic/stage1/json_structural_indexer.h"
87-
WARN_UNUSED error_code implementation::stage1(const uint8_t *_buf, size_t _len, parser &parser, bool streaming) const noexcept {
87+
WARN_UNUSED error_code dom_parser_implementation::stage1(const uint8_t *_buf, size_t _len, parser &parser, bool streaming) noexcept {
8888
this->buf = _buf;
8989
this->len = _len;
9090
return arm64::stage1::json_structural_indexer::index<64>(_buf, _len, parser, streaming);

src/arm64/dom_parser_implementation.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
1414

1515
really_inline dom_parser_implementation();
1616
dom_parser_implementation(const dom_parser_implementation &) = delete;
17-
dom_parser_implementation &operator =(const dom_parser_implementation &) = delete;
17+
dom_parser_implementation & operator=(const dom_parser_implementation &) = delete;
1818

19-
WARN_UNUSED virtual error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
20-
WARN_UNUSED virtual error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept;
21-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
22-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept;
19+
WARN_UNUSED error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept final;
20+
WARN_UNUSED error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept final;
21+
WARN_UNUSED error_code stage2(dom::parser &parser) noexcept final;
22+
WARN_UNUSED error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept final;
2323
WARN_UNUSED error_code set_capacity(size_t capacity) noexcept final;
2424
WARN_UNUSED error_code set_max_depth(size_t max_depth) noexcept final;
2525
};

src/fallback/dom_parser_implementation.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
1414

1515
really_inline dom_parser_implementation();
1616
dom_parser_implementation(const dom_parser_implementation &) = delete;
17-
dom_parser_implementation &operator =(const dom_parser_implementation &) = delete;
17+
dom_parser_implementation & operator=(const dom_parser_implementation &) = delete;
1818

19-
WARN_UNUSED virtual error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
20-
WARN_UNUSED virtual error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept;
21-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
22-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept;
19+
WARN_UNUSED error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept final;
20+
WARN_UNUSED error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept final;
21+
WARN_UNUSED error_code stage2(dom::parser &parser) noexcept final;
22+
WARN_UNUSED error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept final;
2323
WARN_UNUSED error_code set_capacity(size_t capacity) noexcept final;
2424
WARN_UNUSED error_code set_max_depth(size_t max_depth) noexcept final;
2525
};
@@ -38,7 +38,7 @@ WARN_UNUSED error_code dom_parser_implementation::set_max_depth(size_t) noexcept
3838
WARN_UNUSED error_code dom_parser_implementation::parse(const uint8_t *_buf, size_t _len, dom::parser &parser) noexcept {
3939
error_code code = stage1(_buf, _len, parser, false);
4040
if (!code) {
41-
code = stage2(_buf, _len, parser);
41+
code = stage2(parser);
4242
}
4343
return code;
4444
}

src/generic/stage2/structural_parser.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,10 @@ struct structural_parser {
398398
* The JSON is parsed to a tape, see the accompanying tape.md file
399399
* for documentation.
400400
***********/
401-
WARN_UNUSED error_code dom_parser_implementation::stage2(const uint8_t *_buf, size_t _len, dom::parser &doc_parser) noexcept {
401+
WARN_UNUSED error_code dom_parser_implementation::stage2(dom::parser &doc_parser) noexcept {
402402
static constexpr stage2::unified_machine_addresses addresses = INIT_ADDRESSES();
403-
stage2::structural_parser parser(_buf, _len, doc_parser);
404-
error_code result = parser.start(_len, addresses.finish);
403+
stage2::structural_parser parser(this->buf, this->len, doc_parser);
404+
error_code result = parser.start(this->len, addresses.finish);
405405
if (result) { return result; }
406406

407407
//

src/haswell/dom_parser_implementation.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
1414

1515
really_inline dom_parser_implementation();
1616
dom_parser_implementation(const dom_parser_implementation &) = delete;
17-
dom_parser_implementation &operator =(const dom_parser_implementation &) = delete;
17+
dom_parser_implementation & operator=(const dom_parser_implementation &) = delete;
1818

19-
WARN_UNUSED virtual error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
20-
WARN_UNUSED virtual error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept;
21-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
22-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept;
19+
WARN_UNUSED error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept final;
20+
WARN_UNUSED error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept final;
21+
WARN_UNUSED error_code stage2(dom::parser &parser) noexcept final;
22+
WARN_UNUSED error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept final;
2323
WARN_UNUSED error_code set_capacity(size_t capacity) noexcept final;
2424
WARN_UNUSED error_code set_max_depth(size_t max_depth) noexcept final;
2525
};
@@ -38,7 +38,7 @@ WARN_UNUSED error_code dom_parser_implementation::set_max_depth(size_t) noexcept
3838
WARN_UNUSED error_code dom_parser_implementation::parse(const uint8_t *_buf, size_t _len, dom::parser &parser) noexcept {
3939
error_code code = stage1(_buf, _len, parser, false);
4040
if (!code) {
41-
code = stage2(_buf, _len, parser);
41+
code = stage2(parser);
4242
}
4343
return code;
4444
}

src/westmere/dom_parser_implementation.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ class dom_parser_implementation final : public internal::dom_parser_implementati
1414

1515
really_inline dom_parser_implementation();
1616
dom_parser_implementation(const dom_parser_implementation &) = delete;
17-
dom_parser_implementation &operator =(const dom_parser_implementation &) = delete;
17+
dom_parser_implementation & operator=(const dom_parser_implementation &) = delete;
1818

19-
WARN_UNUSED virtual error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
20-
WARN_UNUSED virtual error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept;
21-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser) noexcept;
22-
WARN_UNUSED virtual error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept;
19+
WARN_UNUSED error_code parse(const uint8_t *buf, size_t len, dom::parser &parser) noexcept final;
20+
WARN_UNUSED error_code stage1(const uint8_t *buf, size_t len, dom::parser &parser, bool streaming) noexcept final;
21+
WARN_UNUSED error_code stage2(dom::parser &parser) noexcept final;
22+
WARN_UNUSED error_code stage2(const uint8_t *buf, size_t len, dom::parser &parser, size_t &next_json) noexcept final;
2323
WARN_UNUSED error_code set_capacity(size_t capacity) noexcept final;
2424
WARN_UNUSED error_code set_max_depth(size_t max_depth) noexcept final;
2525
};
@@ -38,7 +38,7 @@ WARN_UNUSED error_code dom_parser_implementation::set_max_depth(size_t) noexcept
3838
WARN_UNUSED error_code dom_parser_implementation::parse(const uint8_t *_buf, size_t _len, dom::parser &parser) noexcept {
3939
error_code code = stage1(_buf, _len, parser, false);
4040
if (!code) {
41-
code = stage2(_buf, _len, parser);
41+
code = stage2(parser);
4242
}
4343
return code;
4444
}

0 commit comments

Comments
 (0)