diff --git a/test262/config.py b/test262/config.py index a2f738b18977d4f0c98a33985d7933d7e55865cb..4ea7d7cefe185060fcffae1c53287dd83d905375 100755 --- a/test262/config.py +++ b/test262/config.py @@ -43,7 +43,6 @@ TEST_ES2021_DIR = os.path.join(DATA_DIR, "test_es2021") TEST_INTL_DIR = os.path.join(DATA_DIR, "test_intl") TEST_CI_DIR = os.path.join(DATA_DIR, "test_CI") -DEFAULT_ARK_FRONTEND_TOOL = os.path.join(ARK_DIR, "build", "src", "index.js") DEFAULT_ARK_TOOL = os.path.join(ARK_JS_RUNTIME_DIR, "ark_js_vm") DEFAULT_ARK_AOT_TOOL = os.path.join(ARK_JS_RUNTIME_DIR, "ark_aot_compiler") DEFAULT_LIBS_DIR = f"{ARK_DIR}:{ICUI_DIR}:{LLVM_DIR}:{ARK_JS_RUNTIME_DIR}" @@ -81,7 +80,14 @@ ARK_FRONTEND_LIST = [ "ts2panda", "es2panda" ] + +ARK_FRONTEND_BINARY_LIST = [ + os.path.join(ARK_DIR, "build", "src", "index.js"), + os.path.join(ARK_DIR, "es2abc") +] + DEFAULT_ARK_FRONTEND = ARK_FRONTEND_LIST[0] +DEFAULT_ARK_FRONTEND_BINARY = ARK_FRONTEND_BINARY_LIST[0] ARK_ARCH_LIST = [ "x64", @@ -90,3 +96,5 @@ ARK_ARCH_LIST = [ ] DEFAULT_ARK_ARCH = ARK_ARCH_LIST[0] +DEFAULT_OPT_LEVEL = 0 +DEFAULT_ES2ABC_THREAD_COUNT = 0 diff --git a/test262/run_sunspider.py b/test262/run_sunspider.py index 73e6228c93d8669b54275c0e177ff111557908a9..5015f3b6cb72b4dcf03063179404a5edf814f8d0 100755 --- a/test262/run_sunspider.py +++ b/test262/run_sunspider.py @@ -43,10 +43,6 @@ def parse_args(): default=DEFAULT_ARK_AOT_TOOL, required=False, help="ark's aot tool") - parser.add_argument('--ark-frontend-tool', - default=DEFAULT_ARK_FRONTEND_TOOL, - required=False, - help="ark frontend conversion tool") parser.add_argument("--libs-dir", default=DEFAULT_LIBS_DIR, required=False, @@ -59,6 +55,10 @@ def parse_args(): required=False, nargs='?', choices=ARK_FRONTEND_LIST, type=str, help="Choose one of them") + parser.add_argument('--ark-frontend-binary', + default=DEFAULT_ARK_FRONTEND_BINARY, + required=False, + help="ark frontend conversion binary tool") parser.add_argument('--module-list', required=True, help="module file list") @@ -71,6 +71,14 @@ def parse_args(): default=DEFAULT_ARK_ARCH, required=False, help="the root path for qemu-aarch64 or qemu-arm") + parser.add_argument('--opt-level', + default=DEFAULT_OPT_LEVEL, + required=False, + help="the opt level for es2abc") + parser.add_argument('--es2abc-thread-count', + default=DEFAULT_ES2ABC_THREAD_COUNT, + required=False, + help="the thread count for es2abc") arguments = parser.parse_args() return arguments @@ -79,10 +87,10 @@ ICU_PATH = f"--icu-data-path={CODE_ROOT}/third_party/icu/ohos_icu4j/data" if platform.system() == "Windows" : ICU_PATH = ICU_PATH.replace("/","\\") ARK_TOOL = DEFAULT_ARK_TOOL -ARK_FRONTEND_TOOL = DEFAULT_ARK_FRONTEND_TOOL LIBS_DIR = DEFAULT_LIBS_DIR ARK_AOT_TOOL = DEFAULT_ARK_AOT_TOOL ARK_FRONTEND = DEFAULT_ARK_FRONTEND +ARK_FRONTEND_BINARY = DEFAULT_ARK_FRONTEND_BINARY ARK_ARCH = DEFAULT_ARK_ARCH @@ -160,15 +168,17 @@ class ArkProgram(): self.ark_tool = ARK_TOOL self.ark_aot = False self.ark_aot_tool = ARK_AOT_TOOL - self.ark_frontend_tool = ARK_FRONTEND_TOOL self.libs_dir = LIBS_DIR self.ark_frontend = ARK_FRONTEND + self.ark_frontend_binary = ARK_FRONTEND_BINARY self.module_list = [] self.js_file = "" self.module = False self.abc_file = "" self.arch = ARK_ARCH self.arch_root = "" + self.opt_level = DEFAULT_OPT_LEVEL + self.es2abc_thread_count = DEFAULT_ES2ABC_THREAD_COUNT def proce_parameters(self): if self.args.ark_tool: @@ -180,8 +190,8 @@ class ArkProgram(): if self.args.ark_aot_tool: self.ark_aot_tool = self.args.ark_aot_tool - if self.args.ark_frontend_tool: - self.ark_frontend_tool = self.args.ark_frontend_tool + if self.args.ark_frontend_binary: + self.ark_frontend_binary = self.args.ark_frontend_binary if self.args.libs_dir: self.libs_dir = self.args.libs_dir @@ -189,6 +199,12 @@ class ArkProgram(): if self.args.ark_frontend: self.ark_frontend = self.args.ark_frontend + if self.args.opt_level: + self.opt_level = self.args.opt_level + + if self.args.es2abc_thread_count: + self.es2abc_thread_count = self.args.es2abc_thread_count + self.module_list = self.args.module_list.splitlines() self.js_file = self.args.js_file @@ -205,19 +221,21 @@ class ArkProgram(): self.abc_file = out_file mod_opt_index = 0 cmd_args = [] - frontend_tool = self.ark_frontend_tool + frontend_tool = self.ark_frontend_binary if self.ark_frontend == ARK_FRONTEND_LIST[0]: mod_opt_index = 3 cmd_args = ['node', '--expose-gc', frontend_tool, js_file, '-o', out_file] + if file_name in self.module_list: + cmd_args.insert(mod_opt_index, "-m") + self.module = True elif self.ark_frontend == ARK_FRONTEND_LIST[1]: mod_opt_index = 1 - cmd_args = [frontend_tool, '-c', - '-e', 'js', '-o', out_file, '-i', js_file] - - if file_name in self.module_list: - cmd_args.insert(mod_opt_index, "-m") - self.module = True + cmd_args = [frontend_tool, '--opt-level=' + str(self.opt_level), + '--thread=' + str(self.es2abc_thread_count), '--output', out_file, js_file] + if file_name in self.module_list: + cmd_args.insert(mod_opt_index, "--module") + self.module = True if self.ark_aot: os.system(f'''sed -i 's/;$262.destroy();/\/\/;$262.destroy();/g' {js_file}''') if self.module: @@ -308,7 +326,7 @@ class ArkProgram(): elif platform.system() == "Linux" : os.environ["LD_LIBRARY_PATH"] = self.libs_dir else : - sys.exit(f" test262 on {platform.system()} not supported"); + sys.exit(f" test262 on {platform.system()} not supported"); file_name_pre = os.path.splitext(self.js_file)[0] cmd_args = [] if self.arch == ARK_ARCH_LIST[1]: diff --git a/test262/run_test262.py b/test262/run_test262.py index f5dae7b0187e7878ffa59d0eb570c7ba5dde651c..8b6aac20d9227b2c079fa44a933167e548cc3a60 100755 --- a/test262/run_test262.py +++ b/test262/run_test262.py @@ -27,7 +27,7 @@ import sys import subprocess from multiprocessing import Pool import platform -from utils import * +from utils import * from config import * @@ -78,13 +78,13 @@ def parse_args(): help="Run test262 with aot") parser.add_argument('--ark-aot-tool', help="ark's aot tool") - parser.add_argument('--ark-frontend-tool', - help="ark frontend conversion tool") parser.add_argument("--libs-dir", help="The path collection of dependent so has been divided by':'") parser.add_argument('--ark-frontend', nargs='?', choices=ARK_FRONTEND_LIST, type=str, help="Choose one of them") + parser.add_argument('--ark-frontend-binary', + help="ark frontend conversion binary tool") parser.add_argument('--ark-arch', default=DEFAULT_ARK_ARCH, nargs='?', choices=ARK_ARCH_LIST, type=str, @@ -92,6 +92,12 @@ def parse_args(): parser.add_argument('--ark-arch-root', default=DEFAULT_ARK_ARCH, help="the root path for qemu-aarch64 or qemu-arm") + parser.add_argument('--opt-level', + default=DEFAULT_OPT_LEVEL, + help="the opt level for es2abc") + parser.add_argument('--es2abc-thread-count', + default=DEFAULT_ES2ABC_THREAD_COUNT, + help="the thread count for es2abc") return parser.parse_args() @@ -113,15 +119,15 @@ def excuting_npm_install(args): if args.ark_frontend: ark_frontend = args.ark_frontend - if ark_frontend != DEFAULT_ARK_FRONTEND: + if ark_frontend != ARK_FRONTEND_LIST[0]: return - ark_frontend_tool = os.path.join(DEFAULT_ARK_FRONTEND_TOOL) - if args.ark_frontend_tool: - ark_frontend_tool = os.path.join(args.ark_frontend_tool) + ark_frontend_binary = os.path.join(ARK_FRONTEND_BINARY_LIST[0]) + if args.ark_frontend_binary: + ark_frontend_binary = os.path.join(args.ark_frontend_binary) ts2abc_build_dir = os.path.join(os.path.dirname( - os.path.realpath(ark_frontend_tool)), "..") + os.path.realpath(ark_frontend_binary)), "..") if os.path.exists(os.path.join(ts2abc_build_dir, "package.json")): npm_install(ts2abc_build_dir) @@ -337,7 +343,7 @@ class TestPrepare(): if self.args.intl: files = self.get_tests_from_file(INTL_LIST_FILE) return files - + def prepare_es2015_tests(self): files = [] files = self.collect_tests() @@ -473,11 +479,13 @@ def get_host_args(args, host_type): host_args = "" ark_tool = DEFAULT_ARK_TOOL ark_aot_tool = DEFAULT_ARK_AOT_TOOL - ark_frontend_tool = DEFAULT_ARK_FRONTEND_TOOL libs_dir = DEFAULT_LIBS_DIR ark_frontend = DEFAULT_ARK_FRONTEND + ark_frontend_binary = DEFAULT_ARK_FRONTEND_BINARY ark_arch = DEFAULT_ARK_ARCH module_list = '' + opt_level = DEFAULT_OPT_LEVEL + es2abc_thread_count = DEFAULT_ES2ABC_THREAD_COUNT with open(MODULE_FILES_LIST) as fopen: module_list = fopen.read() @@ -490,25 +498,33 @@ def get_host_args(args, host_type): if args.ark_aot_tool: ark_aot_tool = args.ark_aot_tool - if args.ark_frontend_tool: - ark_frontend_tool = args.ark_frontend_tool - if args.libs_dir: libs_dir = args.libs_dir if args.ark_frontend: ark_frontend = args.ark_frontend + if args.ark_frontend_binary: + ark_frontend_binary = args.ark_frontend_binary + + if args.opt_level: + opt_level = args.opt_level + + if args.es2abc_thread_count: + es2abc_thread_count = args.es2abc_thread_count + if host_type == DEFAULT_HOST_TYPE: host_args = f"-B test262/run_sunspider.py " host_args += f"--ark-tool={ark_tool} " if args.ark_aot: host_args += f"--ark-aot " host_args += f"--ark-aot-tool={ark_aot_tool} " - host_args += f"--ark-frontend-tool={ark_frontend_tool} " host_args += f"--libs-dir={libs_dir} " host_args += f"--ark-frontend={ark_frontend} " + host_args += f"--ark-frontend-binary={ark_frontend_binary} " host_args += f"--module-list={module_list} " + host_args += f"--opt-level={opt_level} " + host_args += f"--es2abc-thread-count={es2abc_thread_count} " if args.ark_arch != ark_arch: host_args += f"--ark-arch={args.ark_arch} "