mirror of
https://github.com/FEX-Emu/FEX.git
synced 2024-12-15 01:49:00 +00:00
ca96a25a7a
This way these endlines don't constantly keep getting toggled.
71 lines
2.3 KiB
Python
Executable File
71 lines
2.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import json
|
|
import logging
|
|
import sys
|
|
logger = logging.getLogger()
|
|
logger.setLevel(logging.ERROR)
|
|
|
|
def update_performance_numbers(performance_json_path, performance_json, new_json_numbers):
|
|
for key, items in new_json_numbers.items():
|
|
if len(key) == 0:
|
|
continue
|
|
|
|
if not key in performance_json["Instructions"]:
|
|
logging.error("{} didn't exist in performance json file?".format(key))
|
|
return 1
|
|
|
|
if "ExpectedInstructionCount" in items:
|
|
performance_json["Instructions"][key]["ExpectedInstructionCount"] = items["ExpectedInstructionCount"]
|
|
if "ExpectedArm64ASM" in items:
|
|
performance_json["Instructions"][key]["ExpectedArm64ASM"] = items["ExpectedArm64ASM"]
|
|
|
|
# Output to the original file.
|
|
with open(performance_json_path, "w") as json_file:
|
|
json.dump(performance_json, json_file, indent=2)
|
|
json_file.write("\n")
|
|
|
|
def main():
|
|
if sys.version_info[0] < 3:
|
|
logging.critical ("Python 3 or a more recent version is required.")
|
|
|
|
if (len(sys.argv) < 3):
|
|
logging.critical ("usage: %s <PerformanceTests.json> <NewNumbers.json>" % (sys.argv[0]))
|
|
|
|
performance_json_path = sys.argv[1]
|
|
new_json_numbers = sys.argv[2]
|
|
|
|
try:
|
|
with open(new_json_numbers) as json_file:
|
|
new_json_numbers_text = json_file.read()
|
|
except IOError:
|
|
# If there isn't any new json numbers for this file, then it is safe to skip.
|
|
return 0
|
|
|
|
try:
|
|
with open(performance_json_path) as json_file:
|
|
performance_json_text = json_file.read()
|
|
except IOError:
|
|
logging.error("IOError!")
|
|
return 1
|
|
|
|
try:
|
|
performance_json_data = json.loads(performance_json_text)
|
|
if not isinstance(performance_json_data, dict):
|
|
raise TypeError('JSON data must be a dict')
|
|
|
|
new_json_numbers_data = json.loads(new_json_numbers_text)
|
|
if not isinstance(new_json_numbers_data, dict):
|
|
raise TypeError('JSON data must be a dict')
|
|
|
|
return update_performance_numbers(performance_json_path, performance_json_data, new_json_numbers_data)
|
|
except ValueError as ve:
|
|
logging.error(f'JSON error: {ve}')
|
|
return 1
|
|
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
# execute only if run as a script
|
|
sys.exit(main())
|
|
|