Skip to content

Commit

Permalink
Clean up and fix JSONLoader code
Browse files Browse the repository at this point in the history
- use unqiue_ptr to manage memory so as to not excercise the garbage
  collector as much

Signed-off-by: Chris Dodd <cdodd@nvidia.com>
  • Loading branch information
ChrisDodd committed Feb 25, 2025
1 parent d04dde0 commit 57da1b0
Show file tree
Hide file tree
Showing 18 changed files with 180 additions and 191 deletions.
2 changes: 1 addition & 1 deletion backends/bmv2/pna_nic/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ int main(int argc, char *const argv[]) {
}
std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_IO, "%s: Not valid input file", options.file);
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion backends/bmv2/psa_switch/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ int main(int argc, char *const argv[]) {
}
std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_IO, "%s: Not valid input file", options.file);
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion backends/bmv2/simple_switch/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ int main(int argc, char *const argv[]) {
}
std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_IO, "%s: Not valid json input file", options.file);
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion backends/dpdk/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ int main(int argc, char *const argv[]) {
}
std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_INVALID, "Not valid input file");
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion backends/ebpf/p4c-ebpf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ void compile(EbpfOptions &options) {

std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_IO, "%s: Not valid input file", options.file);
return;
}
Expand Down
2 changes: 1 addition & 1 deletion backends/graphs/p4c-graphs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ int main(int argc, char *const argv[]) {

std::istream inJson(&fb);
JSONLoader jsonFileLoader(inJson);
if (jsonFileLoader.json == nullptr) {
if (!jsonFileLoader) {
::P4::error(ErrorType::ERR_IO, "Not valid input file");
return 1;
}
Expand Down
4 changes: 2 additions & 2 deletions backends/p4tools/common/core/z3_solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -340,13 +340,13 @@ Z3Solver::Z3Solver(bool isIncremental, std::optional<std::istream *> inOpt)
JSONLoader loader(*inOpt.value());

JSONLoader solverCheckpoints(loader, "checkpoints");
BUG_CHECK(solverCheckpoints.json->is<JsonVector>(),
BUG_CHECK(solverCheckpoints.is<JsonVector>(),
"Z3 solver loading: can't find list of checkpoint");
solverCheckpoints >> checkpoints;

// loading all assertions
JSONLoader solverAssertions(loader, "assertions");
BUG_CHECK(solverAssertions.json->is<JsonVector>(),
BUG_CHECK(solverAssertions.is<JsonVector>(),
"Z3 solver loading: can't find list of assertions");
safe_vector<const Constraint *> assertions;
solverAssertions >> assertions;
Expand Down
7 changes: 4 additions & 3 deletions backends/tofino/bf-p4c/ir/unique_id.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ void UniqueAttachedId::toJSON(P4::JSONGenerator &json) const {

UniqueAttachedId UniqueAttachedId::fromJSON(P4::JSONLoader &json) {
UniqueAttachedId uai;
if (!json.json) return uai;
json.load("name", uai.name);
json.load("type", uai.type);
if (json) {
json.load("name", uai.name);
json.load("type", uai.type);
}
return uai;
}

Expand Down
2 changes: 1 addition & 1 deletion backends/tofino/bf-p4c/mau/hash_function.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ void IR::MAU::HashFunction::build_algorithm_t(bfn_hash_algorithm_ *alg) const {
}

IR::MAU::HashFunction *IR::MAU::HashFunction::fromJSON(JSONLoader &json) {
if (!json.json) return nullptr;
if (!json) return nullptr;
auto *rv = new HashFunction;
int type = 0;
json.load("type", type);
Expand Down
2 changes: 1 addition & 1 deletion backends/tofino/bf-p4c/parde/match_register.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ void MatchRegister::toJSON(JSONGenerator &json) const { json.emit(toString()); }

/* static */
MatchRegister MatchRegister::fromJSON(JSONLoader &json) {
if (auto *v = json.json->to<JsonString>()) return MatchRegister(cstring(v->c_str()));
if (json.is<JsonString>()) return MatchRegister(json.as<JsonString>());
BUG("Couldn't decode JSON value to parser match register");
return MatchRegister();
}
2 changes: 1 addition & 1 deletion backends/tofino/bf-p4c/phv/phv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ cstring Container::toString() const {
void Container::toJSON(P4::JSONGenerator &json) const { json.emit(toString()); }

/* static */ Container Container::fromJSON(P4::JSONLoader &json) {
if (auto *v = json.json->to<JsonString>()) return Container(v->c_str());
if (json.is<JsonString>()) return Container(json.as<JsonString>().c_str());
BUG("Couldn't decode JSON value to container");
return Container();
}
Expand Down
Loading

0 comments on commit 57da1b0

Please sign in to comment.