mirror of
https://github.com/open-goal/jak-project
synced 2026-08-11 03:26:33 -04:00
[jak2] split up big dgos, some minor cleanup (#2066)
- Split up DGOs between threads in the multithreaded offline test - fix some random warnings - make the sig paths decompile a bit nicer to make some files smaller
This commit is contained in:
@@ -74,28 +74,26 @@ OfflineTestCompareResult compare(OfflineTestDecompiler& dc,
|
||||
const OfflineTestConfig& config) {
|
||||
OfflineTestCompareResult compare_result;
|
||||
|
||||
for (const auto& collection : work_group.work_collections) {
|
||||
for (const auto& file : collection.source_files) {
|
||||
work_group.status->update_curr_file(file.name_in_dgo);
|
||||
auto& data = get_data(dc, file.unique_name, file.name_in_dgo);
|
||||
std::string result = clean_decompilation_code(data.full_output);
|
||||
std::string ref = clean_decompilation_code(file_util::read_text_file(file.path.string()));
|
||||
compare_result.total_files++;
|
||||
compare_result.total_lines += str_util::line_count(result);
|
||||
if (result != ref) {
|
||||
compare_result.failing_files.push_back({file.unique_name, diff_strings(ref, result)});
|
||||
compare_result.total_pass = false;
|
||||
if (config.dump_mode) {
|
||||
auto failure_dir = file_util::get_jak_project_dir() / "failures";
|
||||
file_util::create_dir_if_needed(failure_dir);
|
||||
file_util::write_text_file(failure_dir / fmt::format("{}_REF.gc", file.unique_name),
|
||||
clean_decompilation_code(data.full_output, true));
|
||||
}
|
||||
} else {
|
||||
compare_result.ok_files++;
|
||||
for (const auto& file : work_group.work_collection.source_files) {
|
||||
work_group.status->update_curr_file(file.name_in_dgo);
|
||||
auto& data = get_data(dc, file.unique_name, file.name_in_dgo);
|
||||
std::string result = clean_decompilation_code(data.full_output);
|
||||
std::string ref = clean_decompilation_code(file_util::read_text_file(file.path.string()));
|
||||
compare_result.total_files++;
|
||||
compare_result.total_lines += str_util::line_count(result);
|
||||
if (result != ref) {
|
||||
compare_result.failing_files.push_back({file.unique_name, diff_strings(ref, result)});
|
||||
compare_result.total_pass = false;
|
||||
if (config.dump_mode) {
|
||||
auto failure_dir = file_util::get_jak_project_dir() / "failures";
|
||||
file_util::create_dir_if_needed(failure_dir);
|
||||
file_util::write_text_file(failure_dir / fmt::format("{}_REF.gc", file.unique_name),
|
||||
clean_decompilation_code(data.full_output, true));
|
||||
}
|
||||
work_group.status->complete_step();
|
||||
} else {
|
||||
compare_result.ok_files++;
|
||||
}
|
||||
work_group.status->complete_step();
|
||||
}
|
||||
|
||||
return compare_result;
|
||||
@@ -114,28 +112,26 @@ OfflineTestCompileResult compile(OfflineTestDecompiler& dc,
|
||||
|
||||
int total_lines = 0;
|
||||
|
||||
for (const auto& coll : work_group.work_collections) {
|
||||
for (const auto& file : coll.source_files) {
|
||||
work_group.status->update_curr_file(file.name_in_dgo);
|
||||
if (config.skip_compile_files.count(file.name_in_dgo)) {
|
||||
lg::warn("Skipping {}", file.name_in_dgo);
|
||||
continue;
|
||||
}
|
||||
|
||||
lg::info("Compiling {}...", file.unique_name);
|
||||
|
||||
auto& data = get_data(dc, file.unique_name, file.name_in_dgo);
|
||||
|
||||
try {
|
||||
const auto& src = data.output_with_skips;
|
||||
total_lines += str_util::line_count(src);
|
||||
compiler.run_full_compiler_on_string_no_save(src, file.name_in_dgo);
|
||||
} catch (const std::exception& e) {
|
||||
result.ok = false;
|
||||
result.failing_files.push_back({file.name_in_dgo, e.what()});
|
||||
}
|
||||
work_group.status->complete_step();
|
||||
for (const auto& file : work_group.work_collection.source_files) {
|
||||
work_group.status->update_curr_file(file.name_in_dgo);
|
||||
if (config.skip_compile_files.count(file.name_in_dgo)) {
|
||||
lg::warn("Skipping {}", file.name_in_dgo);
|
||||
continue;
|
||||
}
|
||||
|
||||
lg::info("Compiling {}...", file.unique_name);
|
||||
|
||||
auto& data = get_data(dc, file.unique_name, file.name_in_dgo);
|
||||
|
||||
try {
|
||||
const auto& src = data.output_with_skips;
|
||||
total_lines += str_util::line_count(src);
|
||||
compiler.run_full_compiler_on_string_no_save(src, file.name_in_dgo);
|
||||
} catch (const std::exception& e) {
|
||||
result.ok = false;
|
||||
result.failing_files.push_back({file.name_in_dgo, e.what()});
|
||||
}
|
||||
work_group.status->complete_step();
|
||||
}
|
||||
|
||||
result.num_lines = total_lines;
|
||||
|
||||
Reference in New Issue
Block a user