14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci#include "ecmascript/js_runtime_options.h" 174514f5e3Sopenharmony_ci 184514f5e3Sopenharmony_ci#include <cerrno> 194514f5e3Sopenharmony_ci#include <cstdlib> 204514f5e3Sopenharmony_ci#include <iostream> 214514f5e3Sopenharmony_ci#include <getopt.h> 224514f5e3Sopenharmony_ci 234514f5e3Sopenharmony_ci#include "ecmascript/compiler/aot_file/an_file_data_manager.h" 244514f5e3Sopenharmony_ci#include "ecmascript/compiler/ecma_opcode_des.h" 254514f5e3Sopenharmony_ci#include "ecmascript/platform/os.h" 264514f5e3Sopenharmony_ci 274514f5e3Sopenharmony_cinamespace panda::ecmascript { 284514f5e3Sopenharmony_ciconst std::string PUBLIC_API COMMON_HELP_HEAD_MSG = 294514f5e3Sopenharmony_ci "Usage: jsvm <option> <filename.abc>\n" 304514f5e3Sopenharmony_ci "\n" 314514f5e3Sopenharmony_ci "Options:\n"; 324514f5e3Sopenharmony_ci 334514f5e3Sopenharmony_ciconst std::string PUBLIC_API COMPILER_HELP_HEAD_MSG = 344514f5e3Sopenharmony_ci "Usage: ark_aot_compiler <option> --aot-file=<filename> <filename.abc>\n" 354514f5e3Sopenharmony_ci "\n" 364514f5e3Sopenharmony_ci "Options:\n"; 374514f5e3Sopenharmony_ci 384514f5e3Sopenharmony_ciconst std::string PUBLIC_API STUB_HELP_HEAD_MSG = 394514f5e3Sopenharmony_ci "Usage: ark_stub_compiler <option>\n" 404514f5e3Sopenharmony_ci "\n" 414514f5e3Sopenharmony_ci "Options:\n"; 424514f5e3Sopenharmony_ci 434514f5e3Sopenharmony_ciconst std::string PUBLIC_API HELP_OPTION_MSG = 444514f5e3Sopenharmony_ci "--aot-file: Path (file suffix not needed) to AOT output file. Default: 'aot_file'\n" 454514f5e3Sopenharmony_ci "--ark-properties: Set ark properties\n" 464514f5e3Sopenharmony_ci "--ark-bundle-name: Set ark bundle name\n" 474514f5e3Sopenharmony_ci "--asm-interpreter: Enable asm interpreter. Default: 'true'\n" 484514f5e3Sopenharmony_ci "--asm-opcode-disable-range: Opcode range when asm interpreter is enabled.\n" 494514f5e3Sopenharmony_ci "--builtins-lazy: Load some builtins function later.This option is only valid in workervm.\n" 504514f5e3Sopenharmony_ci "--compiler-log: Log Option For aot compiler and stub compiler,\n" 514514f5e3Sopenharmony_ci " 'none': no log,\n" 524514f5e3Sopenharmony_ci " 'allllircirasm' or 'all012': print all log for all methods,\n" 534514f5e3Sopenharmony_ci " 'allcir' or 'all0': print IR info for all methods,\n" 544514f5e3Sopenharmony_ci " 'allllir' or 'all1': print llir info for all methods,\n" 554514f5e3Sopenharmony_ci " 'allasm' or 'all2': print asm log for all methods,\n" 564514f5e3Sopenharmony_ci " 'alltype' or 'all3': print type infer log for all methods,\n" 574514f5e3Sopenharmony_ci " 'cerllircirasm' or 'cer0112': print all log for certain method defined " 584514f5e3Sopenharmony_ci "in 'mlist-for-log',\n" 594514f5e3Sopenharmony_ci " 'cercir' or 'cer0': print IR for methods in 'mlist-for-log',\n" 604514f5e3Sopenharmony_ci " 'cerasm' or 'cer2': print log for methods in 'mlist-for-log',\n" 614514f5e3Sopenharmony_ci " Default: 'none'\n" 624514f5e3Sopenharmony_ci "--compiler-log-methods: Specific method list for compiler log, only used when compiler-log. " 634514f5e3Sopenharmony_ci "Default: 'none'\n" 644514f5e3Sopenharmony_ci "--compiler-type-threshold: enable to skip methods whose type is no more than threshold. Default: -1\n" 654514f5e3Sopenharmony_ci "--compiler-log-snapshot: Enable to print snapshot information. Default: 'false'\n" 664514f5e3Sopenharmony_ci "--compiler-log-time: Enable to print pass compiler time. Default: 'false'\n" 674514f5e3Sopenharmony_ci "--enable-ark-tools: Enable ark tools to debug. Default: 'false'\n" 684514f5e3Sopenharmony_ci "--open-ark-tools: Open ark tools to return specific implementation. Default: 'false'\n" 694514f5e3Sopenharmony_ci "--pgo-trace: Enable pgo trace for JS runtime. Default: 'false'\n" 704514f5e3Sopenharmony_ci "--compiler-trace-bc: Enable tracing bytecode for aot runtime. Default: 'false'\n" 714514f5e3Sopenharmony_ci "--compiler-trace-deopt: Enable tracing deopt for aot runtime. Default: 'false'\n" 724514f5e3Sopenharmony_ci "--compiler-trace-inline: Enable tracing inline function for aot runtime. Default: 'false'\n" 734514f5e3Sopenharmony_ci "--compiler-trace-value-numbering: Enable tracing value numbering for aot runtime. Default: 'false'\n" 744514f5e3Sopenharmony_ci "--compiler-max-inline-bytecodes Set max bytecodes count which aot function can be inlined. Default: '25'\n" 754514f5e3Sopenharmony_ci "--compiler-deopt-threshold: Set max count which aot function can occur deoptimization. Default: '10'\n" 764514f5e3Sopenharmony_ci "--compiler-stress-deopt: Enable stress deopt for aot compiler. Default: 'false'\n" 774514f5e3Sopenharmony_ci "--compiler-opt-code-profiler: Enable opt code Bytecode Statistics for aot runtime. Default: 'false'\n" 784514f5e3Sopenharmony_ci "--compiler-opt-bc-range: Range list for EcmaOpCode range Example '1:2,5:8'\n" 794514f5e3Sopenharmony_ci "--compiler-opt-bc-range-help: Range list for EcmaOpCode range help. Default: 'false''\n" 804514f5e3Sopenharmony_ci "--enable-force-gc: Enable force gc when allocating object. Default: 'true'\n" 814514f5e3Sopenharmony_ci "--enable-eden-gc: Enable eden gc. Default: 'false'\n" 824514f5e3Sopenharmony_ci "--force-shared-gc-frequency: How frequency force shared gc . Default: '1'\n" 834514f5e3Sopenharmony_ci "--enable-ic: Switch of inline cache. Default: 'true'\n" 844514f5e3Sopenharmony_ci "--enable-runtime-stat: Enable statistics of runtime state. Default: 'false'\n" 854514f5e3Sopenharmony_ci "--compiler-opt-array-bounds-check-elimination: Enable Index Check elimination. Default: 'true'\n" 864514f5e3Sopenharmony_ci "--compiler-opt-constant-folding: Enable constant folding. Default: 'true'\n" 874514f5e3Sopenharmony_ci "--compiler-opt-type-lowering: Enable all type optimization pass for aot compiler. Default: 'true'\n" 884514f5e3Sopenharmony_ci "--compiler-opt-early-elimination: Enable EarlyElimination for aot compiler. Default: 'true'\n" 894514f5e3Sopenharmony_ci "--compiler-opt-later-elimination: Enable LaterElimination for aot compiler. Default: 'true'\n" 904514f5e3Sopenharmony_ci "--compiler-opt-string: Enable string optimization pass for aot compiler. Default: 'true'\n" 914514f5e3Sopenharmony_ci "--compiler-opt-value-numbering: Enable ValueNumbering for aot compiler. Default: 'true'\n" 924514f5e3Sopenharmony_ci "--compiler-opt-inlining: Enable inlining function for aot compiler: Default: 'true'\n" 934514f5e3Sopenharmony_ci "--compiler-opt-pgotype: Enable pgo type for aot compiler: Default: 'true'\n" 944514f5e3Sopenharmony_ci "--compiler-opt-track-field: Enable track field for aot compiler: Default: 'false'\n" 954514f5e3Sopenharmony_ci "--entry-point: Full name of entrypoint function. Default: '_GLOBAL::func_main_0'\n" 964514f5e3Sopenharmony_ci "--force-full-gc: If true trigger full gc, else trigger semi and old gc. Default: 'true'\n" 974514f5e3Sopenharmony_ci "--framework-abc-file: Snapshot file. Default: 'strip.native.min.abc'\n" 984514f5e3Sopenharmony_ci "--gc-long-paused-time: Set gc's longPauseTime in millisecond. Default: '40'\n" 994514f5e3Sopenharmony_ci "--gc-thread-num: Set gc thread number. Default: '7'\n" 1004514f5e3Sopenharmony_ci "--heap-size-limit: Max heap size (MB). Default: '512'\n" 1014514f5e3Sopenharmony_ci "--help: Print this message and exit\n" 1024514f5e3Sopenharmony_ci "--icu-data-path: Path to generated icu data file. Default: 'default'\n" 1034514f5e3Sopenharmony_ci "--enable-worker: Whether is worker vm. Default: 'false'\n" 1044514f5e3Sopenharmony_ci "--log-level: Log level: ['debug', 'info', 'warning', 'error', 'fatal'].\n" 1054514f5e3Sopenharmony_ci "--log-components: Enable logs from specified components: ['all', 'gc', 'ecma','interpreter',\n" 1064514f5e3Sopenharmony_ci " 'debugger', 'compiler', 'builtins', 'trace', 'jit', 'baselinejit', 'all']. \n" 1074514f5e3Sopenharmony_ci " Default: 'all'\n" 1084514f5e3Sopenharmony_ci "--log-debug: Enable debug or above logs for components: ['all', 'gc', 'ecma',\n" 1094514f5e3Sopenharmony_ci " 'interpreter', 'debugger', 'compiler', 'builtins', 'trace', 'jit',\n" 1104514f5e3Sopenharmony_ci " 'baselinejit', 'all']. Default: 'all'\n" 1114514f5e3Sopenharmony_ci "--log-error: Enable error log for components: ['all', 'gc', 'ecma',\n" 1124514f5e3Sopenharmony_ci " 'interpreter', 'debugger', 'compiler', 'builtins', 'trace', 'jit',\n" 1134514f5e3Sopenharmony_ci " 'baselinejit', 'all']. Default: 'all'\n" 1144514f5e3Sopenharmony_ci "--log-fatal: Enable fatal log for components: ['all', 'gc', 'ecma',\n" 1154514f5e3Sopenharmony_ci " 'interpreter', 'debugger', 'compiler', 'builtins', 'trace', 'jit',\n" 1164514f5e3Sopenharmony_ci " 'baselinejit', 'all']. Default: 'all'\n" 1174514f5e3Sopenharmony_ci "--log-info: Enable info log for components: ['all', 'gc', 'ecma',\n" 1184514f5e3Sopenharmony_ci " 'interpreter', 'debugger', 'compiler', 'builtins', 'trace', 'jit',\n" 1194514f5e3Sopenharmony_ci " 'baselinejit', 'all']. Default: 'all'\n" 1204514f5e3Sopenharmony_ci "--log-warning: Enable warning log for components: ['all', 'gc', 'ecma',\n" 1214514f5e3Sopenharmony_ci " 'interpreter', 'debugger', 'compiler', 'trace', 'jit', \n" 1224514f5e3Sopenharmony_ci " 'baselinejit', 'builtins', 'all']. Default: 'all'\n" 1234514f5e3Sopenharmony_ci "--compiler-opt-max-method: Enable aot compiler to skip method larger than limit (KB). Default: '32'\n" 1244514f5e3Sopenharmony_ci "--compiler-module-methods: The number of max compiled methods in a module. Default: '100'\n" 1254514f5e3Sopenharmony_ci "--max-unmovable-space: Set max unmovable space capacity\n" 1264514f5e3Sopenharmony_ci "--merge-abc: ABC file is merge abc. Default: 'false'\n" 1274514f5e3Sopenharmony_ci "--compiler-opt-level: Optimization level configuration of aot compiler. Default: '3'\n" 1284514f5e3Sopenharmony_ci "--options: Print compiler and runtime options\n" 1294514f5e3Sopenharmony_ci "--serializer-buffer-size-limit: Max serializer buffer size used by the VM in Byte. Default size is 2GB\n" 1304514f5e3Sopenharmony_ci "--snapshot-file: Snapshot file. Default: '/system/etc/snapshot'\n" 1314514f5e3Sopenharmony_ci "--startup-time: Print the start time of command execution. Default: 'false'\n" 1324514f5e3Sopenharmony_ci "--stub-file: Path of file includes common stubs module compiled by stub compiler. " 1334514f5e3Sopenharmony_ci "Default: 'stub.an'\n" 1344514f5e3Sopenharmony_ci "--enable-pgo-profiler: Enable pgo profiler to sample jsfunction call and output to file. " 1354514f5e3Sopenharmony_ci "Default: 'false'\n" 1364514f5e3Sopenharmony_ci "--enable-elements-kind: Enable elementsKind sampling and usage. Default: 'false'\n" 1374514f5e3Sopenharmony_ci "--enable-force-ic: Enable force ic for pgo. Default: 'true'\n" 1384514f5e3Sopenharmony_ci "--compiler-pgo-hotness-threshold: Set hotness threshold for pgo in aot compiler. Default: '2'\n" 1394514f5e3Sopenharmony_ci "--compiler-pgo-profiler-path: The pgo file output dir or the pgo file dir of AOT compiler. Default: ''\n" 1404514f5e3Sopenharmony_ci "--compiler-pgo-save-min-interval: Set the minimum time interval for automatically saving profile, " 1414514f5e3Sopenharmony_ci "Unit seconds. Default: '30s'\n" 1424514f5e3Sopenharmony_ci "--compiler-baseline-pgo: Enable compile the baseline Ap file. " 1434514f5e3Sopenharmony_ci "Default: 'false'\n" 1444514f5e3Sopenharmony_ci "--compiler-target-triple: CPU triple for aot compiler or stub compiler. \n" 1454514f5e3Sopenharmony_ci " values: ['x86_64-unknown-linux-gnu', 'arm-unknown-linux-gnu', \n" 1464514f5e3Sopenharmony_ci " 'aarch64-unknown-linux-gnu'], Default: 'x86_64-unknown-linux-gnu'\n" 1474514f5e3Sopenharmony_ci "--enable-print-execute-time: Enable print execute panda file spent time\n" 1484514f5e3Sopenharmony_ci "--compiler-verify-vtable: Verify vtable result for aot compiler. Default: 'false'\n" 1494514f5e3Sopenharmony_ci "--compiler-select-methods Compiler selected methods for aot. Only work in full compiling mode\n" 1504514f5e3Sopenharmony_ci " Format:--compile-methods=record1:m1,m2,record2:m3\n" 1514514f5e3Sopenharmony_ci "--compiler-skip-methods Compiler skpped methods for aot. Only work in full compiling mode\n" 1524514f5e3Sopenharmony_ci " Format:--compile-skip-methods=record1:m1,m2,record2:m3\n" 1534514f5e3Sopenharmony_ci "--target-compiler-mode The compilation mode at the device side, including partial, full and none.\n" 1544514f5e3Sopenharmony_ci " Default: ''\n" 1554514f5e3Sopenharmony_ci "--hap-path(Deprecated) The path of the app hap. Default: ''\n" 1564514f5e3Sopenharmony_ci "--hap-abc-offset(Deprecated) The offset of the abc file in app hap. Default: '0'\n" 1574514f5e3Sopenharmony_ci "--hap-abc-size(Deprecated) The size of the abc file in app hap. Default: '0'\n" 1584514f5e3Sopenharmony_ci "--compiler-fast-compile Disable some time-consuming pass. Default: 'true'\n" 1594514f5e3Sopenharmony_ci "--compiler-no-check Enable remove checks for aot compiler. Default: 'false'\n" 1604514f5e3Sopenharmony_ci "--compiler-pipeline-host-aot Enable pipeline host aot compiler. Default: 'false'\n" 1614514f5e3Sopenharmony_ci "--compiler-opt-loop-peeling: Enable loop peeling for aot compiler: Default: 'true'\n" 1624514f5e3Sopenharmony_ci "--compiler-pkg-info Specify the package json info for ark aot compiler\n" 1634514f5e3Sopenharmony_ci "--compiler-external-pkg-info Specify the external package json info for ark aot compiler\n" 1644514f5e3Sopenharmony_ci "--compiler-enable-external-pkg Enable compile with external package for ark aot compiler\n" 1654514f5e3Sopenharmony_ci "--compiler-enable-lexenv-specialization: Enable replace ldlexvar with specific values: Default: 'true'\n" 1664514f5e3Sopenharmony_ci "--compiler-enable-native-inline: Enable inline native function: Default: 'false'\n" 1674514f5e3Sopenharmony_ci "--compiler-enable-lowering-builtin: Enable lowering global object: Default: 'false'\n" 1684514f5e3Sopenharmony_ci "--compiler-opt-array-onheap-check: Enable TypedArray on heap check for aot compiler: Default: 'false'\n" 1694514f5e3Sopenharmony_ci "--compiler-enable-litecg: Enable LiteCG: Default: 'false'\n" 1704514f5e3Sopenharmony_ci "--compiler-enable-jit: Enable jit: Default: 'false'\n" 1714514f5e3Sopenharmony_ci "--compiler-enable-osr: Enable osr: Default: 'false'\n" 1724514f5e3Sopenharmony_ci "--compiler-enable-framework-aot: Enable frame aot: Default: 'true'\n" 1734514f5e3Sopenharmony_ci "--compiler-enable-pgo-space: Enable pgo space used for compiler. Default: 'true'\n" 1744514f5e3Sopenharmony_ci "--compiler-jit-hotness-threshold: Set hotness threshold for jit. Default: '2'\n" 1754514f5e3Sopenharmony_ci "--compiler-jit-call-threshold: Set call threshold for jit. Default: '0'\n" 1764514f5e3Sopenharmony_ci "--compiler-osr-hotness-threshold: Set hotness threshold for osr. Default: '2'\n" 1774514f5e3Sopenharmony_ci "--compiler-force-jit-compile-main: Enable jit compile main function: Default: 'false'\n" 1784514f5e3Sopenharmony_ci "--compiler-trace-jit: Enable trace jit: Default: 'false'\n" 1794514f5e3Sopenharmony_ci "--compiler-enable-jit-pgo: Enable jit pgo: Default: 'true'\n" 1804514f5e3Sopenharmony_ci "--compiler-typed-op-profiler: Enable Typed Opcode Statistics for aot runtime. Default: 'false'\n" 1814514f5e3Sopenharmony_ci "--compiler-opt-branch-profiling: Enable branch profiling for aot compiler. Default: 'true'\n" 1824514f5e3Sopenharmony_ci "--test-assert: Set Assert Model. Default: 'false'\n" 1834514f5e3Sopenharmony_ci "--compiler-methods-range: Enable aot compiler to compile only in-range methods.\n" 1844514f5e3Sopenharmony_ci " Default: '0:4294967295'\n" 1854514f5e3Sopenharmony_ci "--compiler-codegen-options: Compile options passed to codegen. Default: ''\n" 1864514f5e3Sopenharmony_ci "--compiler-opt-escape-analysis: Enable escape analysis for aot compiler. Default: 'true'\n" 1874514f5e3Sopenharmony_ci "--compiler-trace-escape-analysis: Enable tracing escape analysis for aot compiler. Default: 'false'\n" 1884514f5e3Sopenharmony_ci "--compiler-opt-induction-variable: Enable induciton variable analysis for aot compiler. Default: 'false'\n" 1894514f5e3Sopenharmony_ci "--compiler-trace-induction-variable: Enable tracing induction variable for aot compiler. Default: 'false'\n" 1904514f5e3Sopenharmony_ci "--compiler-memory-analysis: Enable memory analysis for aot compiler. Default: 'true'\n" 1914514f5e3Sopenharmony_ci "--compiler-enable-jit-fast-compile: Enable jit fast compile. Default: 'false'\n" 1924514f5e3Sopenharmony_ci "--compiler-enable-jitfort: Enable jit fort memory space. Default: 'false'\n" 1934514f5e3Sopenharmony_ci "--compiler-codesign-disable: Disable codesign for jit fort. Default: 'true'\n" 1944514f5e3Sopenharmony_ci "--compiler-enable-async-copytofort: Enable jit fort allocation and code copy in Jit thread. Default: 'true'\n" 1954514f5e3Sopenharmony_ci "--compiler-pgo-force-dump: Enable pgo dump not interrupted by GC. Default: 'true'\n" 1964514f5e3Sopenharmony_ci "--async-load-abc: Enable asynchronous load abc. Default: 'true'\n" 1974514f5e3Sopenharmony_ci "--async-load-abc-test: Enable asynchronous load abc test. Default: 'false'\n" 1984514f5e3Sopenharmony_ci "--compiler-enable-concurrent: Enable concurrent compile(only support in ark_stub_compiler).\n" 1994514f5e3Sopenharmony_ci " Default: 'true'\n" 2004514f5e3Sopenharmony_ci "--compiler-opt-frame-state-elimination: Enable frame state elimination. Default: 'true'\n\n"; 2014514f5e3Sopenharmony_ci 2024514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseCommand(const int argc, const char **argv) 2034514f5e3Sopenharmony_ci{ 2044514f5e3Sopenharmony_ci const struct option longOptions[] = { 2054514f5e3Sopenharmony_ci {"aot-file", required_argument, nullptr, OPTION_AOT_FILE}, 2064514f5e3Sopenharmony_ci {"ark-properties", required_argument, nullptr, OPTION_ARK_PROPERTIES}, 2074514f5e3Sopenharmony_ci {"ark-bundleName", required_argument, nullptr, OPTION_ARK_BUNDLENAME}, 2084514f5e3Sopenharmony_ci {"asm-interpreter", required_argument, nullptr, OPTION_ENABLE_ASM_INTERPRETER}, 2094514f5e3Sopenharmony_ci {"asm-opcode-disable-range", required_argument, nullptr, OPTION_ASM_OPCODE_DISABLE_RANGE}, 2104514f5e3Sopenharmony_ci {"builtins-lazy", required_argument, nullptr, OPTION_ENABLE_BUILTINS_LAZY}, 2114514f5e3Sopenharmony_ci {"compiler-log", required_argument, nullptr, OPTION_COMPILER_LOG_OPT}, 2124514f5e3Sopenharmony_ci {"compiler-log-methods", required_argument, nullptr, OPTION_COMPILER_LOG_METHODS}, 2134514f5e3Sopenharmony_ci {"compiler-log-snapshot", required_argument, nullptr, OPTION_COMPILER_LOG_SNAPSHOT}, 2144514f5e3Sopenharmony_ci {"compiler-log-time", required_argument, nullptr, OPTION_COMPILER_LOG_TIME}, 2154514f5e3Sopenharmony_ci {"compiler-type-threshold", required_argument, nullptr, OPTION_COMPILER_TYPE_THRESHOLD}, 2164514f5e3Sopenharmony_ci {"enable-ark-tools", required_argument, nullptr, OPTION_ENABLE_ARK_TOOLS}, 2174514f5e3Sopenharmony_ci {"open-ark-tools", required_argument, nullptr, OPTION_OPEN_ARK_TOOLS}, 2184514f5e3Sopenharmony_ci {"pgo-trace", required_argument, nullptr, OPTION_PGO_TRACE}, 2194514f5e3Sopenharmony_ci {"compiler-trace-bc", required_argument, nullptr, OPTION_COMPILER_TRACE_BC}, 2204514f5e3Sopenharmony_ci {"compiler-trace-deopt", required_argument, nullptr, OPTION_COMPILER_TRACE_DEOPT}, 2214514f5e3Sopenharmony_ci {"compiler-trace-inline", required_argument, nullptr, OPTION_COMPILER_TRACE_INLINE}, 2224514f5e3Sopenharmony_ci {"compiler-trace-value-numbering", required_argument, nullptr, OPTION_COMPILER_TRACE_VALUE_NUMBERING}, 2234514f5e3Sopenharmony_ci {"compiler-trace-instruction-combine", required_argument, nullptr, OPTION_COMPILER_TRACE_INSTRUCTION_COMBINE}, 2244514f5e3Sopenharmony_ci {"compiler-max-inline-bytecodes", required_argument, nullptr, OPTION_COMPILER_MAX_INLINE_BYTECODES}, 2254514f5e3Sopenharmony_ci {"compiler-deopt-threshold", required_argument, nullptr, OPTION_COMPILER_DEOPT_THRESHOLD}, 2264514f5e3Sopenharmony_ci {"compiler-device-state", required_argument, nullptr, OPTION_COMPILER_DEVICE_STATE}, 2274514f5e3Sopenharmony_ci {"compiler-thermal-level", required_argument, nullptr, OPTION_COMPILER_THERMAL_LEVEL}, 2284514f5e3Sopenharmony_ci {"compiler-stress-deopt", required_argument, nullptr, OPTION_COMPILER_STRESS_DEOPT}, 2294514f5e3Sopenharmony_ci {"compiler-opt-code-profiler", required_argument, nullptr, OPTION_COMPILER_OPT_CODE_PROFILER}, 2304514f5e3Sopenharmony_ci {"compiler-opt-bc-range", required_argument, nullptr, OPTION_COMPILER_OPT_BC_RANGE}, 2314514f5e3Sopenharmony_ci {"compiler-opt-bc-range-help", required_argument, nullptr, OPTION_COMPILER_OPT_BC_RANGE_HELP}, 2324514f5e3Sopenharmony_ci {"enable-force-gc", required_argument, nullptr, OPTION_ENABLE_FORCE_GC}, 2334514f5e3Sopenharmony_ci {"enable-eden-gc", required_argument, nullptr, OPTION_ENABLE_EDEN_GC}, 2344514f5e3Sopenharmony_ci {"enable-ic", required_argument, nullptr, OPTION_ENABLE_IC}, 2354514f5e3Sopenharmony_ci {"enable-runtime-stat", required_argument, nullptr, OPTION_ENABLE_RUNTIME_STAT}, 2364514f5e3Sopenharmony_ci {"compiler-opt-constant-folding", required_argument, nullptr, OPTION_COMPILER_OPT_CONSTANT_FOLDING}, 2374514f5e3Sopenharmony_ci {"compiler-opt-array-bounds-check-elimination", required_argument, nullptr, 2384514f5e3Sopenharmony_ci OPTION_COMPILER_OPT_ARRAY_BOUNDS_CHECK_ELIMINATION}, 2394514f5e3Sopenharmony_ci {"compiler-opt-type-lowering", required_argument, nullptr, OPTION_COMPILER_OPT_TYPE_LOWERING}, 2404514f5e3Sopenharmony_ci {"compiler-opt-early-elimination", required_argument, nullptr, OPTION_COMPILER_OPT_EARLY_ELIMINATION}, 2414514f5e3Sopenharmony_ci {"compiler-opt-later-elimination", required_argument, nullptr, OPTION_COMPILER_OPT_LATER_ELIMINATION}, 2424514f5e3Sopenharmony_ci {"compiler-opt-instr-combine", required_argument, nullptr, OPTION_COMPILER_OPT_INSTRUCTIONE_COMBINE}, 2434514f5e3Sopenharmony_ci {"compiler-opt-string", required_argument, nullptr, OPTION_COMPILER_OPT_STRING}, 2444514f5e3Sopenharmony_ci {"compiler-opt-value-numbering", required_argument, nullptr, OPTION_COMPILER_OPT_VALUE_NUMBERING}, 2454514f5e3Sopenharmony_ci {"compiler-opt-new-value-numbering", required_argument, nullptr, OPTION_COMPILER_OPT_NEW_VALUE_NUMBERING}, 2464514f5e3Sopenharmony_ci {"compiler-opt-inlining", required_argument, nullptr, OPTION_COMPILER_OPT_INLINING}, 2474514f5e3Sopenharmony_ci {"compiler-opt-pgotype", required_argument, nullptr, OPTION_COMPILER_OPT_PGOTYPE}, 2484514f5e3Sopenharmony_ci {"compiler-opt-track-field", required_argument, nullptr, OPTION_COMPILER_OPT_TRACK_FIELD}, 2494514f5e3Sopenharmony_ci {"entry-point", required_argument, nullptr, OPTION_ENTRY_POINT}, 2504514f5e3Sopenharmony_ci {"force-full-gc", required_argument, nullptr, OPTION_FORCE_FULL_GC}, 2514514f5e3Sopenharmony_ci {"force-shared-gc-frequency", required_argument, nullptr, OPTION_ENABLE_FORCE_SHARED_GC_FREQUENCY}, 2524514f5e3Sopenharmony_ci {"gc-thread-num", required_argument, nullptr, OPTION_GC_THREADNUM}, 2534514f5e3Sopenharmony_ci {"heap-size-limit", required_argument, nullptr, OPTION_HEAP_SIZE_LIMIT}, 2544514f5e3Sopenharmony_ci {"help", no_argument, nullptr, OPTION_HELP}, 2554514f5e3Sopenharmony_ci {"icu-data-path", required_argument, nullptr, OPTION_ICU_DATA_PATH}, 2564514f5e3Sopenharmony_ci {"enable-worker", required_argument, nullptr, OPTION_ENABLE_WORKER}, 2574514f5e3Sopenharmony_ci {"log-components", required_argument, nullptr, OPTION_LOG_COMPONENTS}, 2584514f5e3Sopenharmony_ci {"log-debug", required_argument, nullptr, OPTION_LOG_DEBUG}, 2594514f5e3Sopenharmony_ci {"log-error", required_argument, nullptr, OPTION_LOG_ERROR}, 2604514f5e3Sopenharmony_ci {"log-fatal", required_argument, nullptr, OPTION_LOG_FATAL}, 2614514f5e3Sopenharmony_ci {"log-info", required_argument, nullptr, OPTION_LOG_INFO}, 2624514f5e3Sopenharmony_ci {"log-level", required_argument, nullptr, OPTION_LOG_LEVEL}, 2634514f5e3Sopenharmony_ci {"log-warning", required_argument, nullptr, OPTION_LOG_WARNING}, 2644514f5e3Sopenharmony_ci {"gc-long-paused-time", required_argument, nullptr, OPTION_GC_LONG_PAUSED_TIME}, 2654514f5e3Sopenharmony_ci {"compiler-opt-max-method", required_argument, nullptr, OPTION_COMPILER_OPT_MAX_METHOD}, 2664514f5e3Sopenharmony_ci {"compiler-module-methods", required_argument, nullptr, OPTION_COMPILER_MODULE_METHODS}, 2674514f5e3Sopenharmony_ci {"max-unmovable-space", required_argument, nullptr, OPTION_MAX_UNMOVABLE_SPACE}, 2684514f5e3Sopenharmony_ci {"merge-abc", required_argument, nullptr, OPTION_MERGE_ABC}, 2694514f5e3Sopenharmony_ci {"enable-context", required_argument, nullptr, OPTION_ENABLE_CONTEXT}, 2704514f5e3Sopenharmony_ci {"compiler-opt-level", required_argument, nullptr, OPTION_ASM_OPT_LEVEL}, 2714514f5e3Sopenharmony_ci {"reloc-mode", required_argument, nullptr, OPTION_RELOCATION_MODE}, 2724514f5e3Sopenharmony_ci {"serializer-buffer-size-limit", required_argument, nullptr, OPTION_SERIALIZER_BUFFER_SIZE_LIMIT}, 2734514f5e3Sopenharmony_ci {"startup-time", required_argument, nullptr, OPTION_STARTUP_TIME}, 2744514f5e3Sopenharmony_ci {"stub-file", required_argument, nullptr, OPTION_STUB_FILE}, 2754514f5e3Sopenharmony_ci {"compiler-target-triple", required_argument, nullptr, OPTION_COMPILER_TARGET_TRIPLE}, 2764514f5e3Sopenharmony_ci {"enable-print-execute-time", required_argument, nullptr, OPTION_PRINT_EXECUTE_TIME}, 2774514f5e3Sopenharmony_ci {"enable-pgo-profiler", required_argument, nullptr, OPTION_ENABLE_PGO_PROFILER}, 2784514f5e3Sopenharmony_ci {"enable-elements-kind", required_argument, nullptr, OPTION_ENABLE_ELEMENTSKIND}, 2794514f5e3Sopenharmony_ci {"enable-force-ic", required_argument, nullptr, OPTION_ENABLE_FORCE_IC}, 2804514f5e3Sopenharmony_ci {"compiler-pgo-profiler-path", required_argument, nullptr, OPTION_COMPILER_PGO_PROFILER_PATH}, 2814514f5e3Sopenharmony_ci {"compiler-pgo-hotness-threshold", required_argument, nullptr, OPTION_COMPILER_PGO_HOTNESS_THRESHOLD}, 2824514f5e3Sopenharmony_ci {"compiler-pgo-save-min-interval", required_argument, nullptr, OPTION_COMPILER_PGO_SAVE_MIN_INTERVAL}, 2834514f5e3Sopenharmony_ci {"compiler-baseline-pgo", required_argument, nullptr, OPTION_COMPILER_BASELINE_PGO}, 2844514f5e3Sopenharmony_ci {"compiler-verify-vtable", required_argument, nullptr, OPTION_COMPILER_VERIFY_VTABLE}, 2854514f5e3Sopenharmony_ci {"compiler-select-methods", required_argument, nullptr, OPTION_COMPILER_SELECT_METHODS}, 2864514f5e3Sopenharmony_ci {"compiler-skip-methods", required_argument, nullptr, OPTION_COMPILER_SKIP_METHODS}, 2874514f5e3Sopenharmony_ci {"target-compiler-mode", required_argument, nullptr, OPTION_TARGET_COMPILER_MODE}, 2884514f5e3Sopenharmony_ci {"hap-path", required_argument, nullptr, OPTION_HAP_PATH}, 2894514f5e3Sopenharmony_ci {"hap-abc-offset", required_argument, nullptr, OPTION_HAP_ABC_OFFSET}, 2904514f5e3Sopenharmony_ci {"hap-abc-size", required_argument, nullptr, OPTION_HAP_ABC_SIZE}, 2914514f5e3Sopenharmony_ci {"compiler-no-check", required_argument, nullptr, OPTION_COMPILER_NOCHECK}, 2924514f5e3Sopenharmony_ci {"compiler-pipeline-host-aot", required_argument, nullptr, OPTION_COMPILER_PIPELINE_HOST_AOT}, 2934514f5e3Sopenharmony_ci {"compiler-fast-compile", required_argument, nullptr, OPTION_FAST_AOT_COMPILE_MODE}, 2944514f5e3Sopenharmony_ci {"compiler-opt-loop-peeling", required_argument, nullptr, OPTION_COMPILER_OPT_LOOP_PEELING}, 2954514f5e3Sopenharmony_ci {"compiler-opt-array-onheap-check", required_argument, nullptr, OPTION_COMPILER_OPT_ON_HEAP_CHECK}, 2964514f5e3Sopenharmony_ci {"compiler-pkg-info", required_argument, nullptr, OPTION_COMPILER_PKG_INFO}, 2974514f5e3Sopenharmony_ci {"compiler-external-pkg-info", required_argument, nullptr, OPTION_COMPILER_EXTERNAL_PKG_INFO}, 2984514f5e3Sopenharmony_ci {"compiler-enable-external-pkg", required_argument, nullptr, OPTION_COMPILER_ENABLE_EXTERNAL_PKG}, 2994514f5e3Sopenharmony_ci {"compiler-framework-abc-path", required_argument, nullptr, OPTION_COMPILER_FRAMEWORK_ABC_PATH}, 3004514f5e3Sopenharmony_ci {"compiler-enable-lexenv-specialization", required_argument, nullptr, 3014514f5e3Sopenharmony_ci OPTION_COMPILER_ENABLE_LEXENV_SPECIALIZATION}, 3024514f5e3Sopenharmony_ci {"compiler-enable-native-inline", required_argument, nullptr, OPTION_COMPILER_ENABLE_NATIVE_INLINE}, 3034514f5e3Sopenharmony_ci {"compiler-enable-lowering-builtin", required_argument, nullptr, OPTION_COMPILER_ENABLE_LOWERING_BUILTIN}, 3044514f5e3Sopenharmony_ci {"compiler-enable-litecg", required_argument, nullptr, OPTION_COMPILER_ENABLE_LITECG}, 3054514f5e3Sopenharmony_ci {"compiler-enable-jit", required_argument, nullptr, OPTION_COMPILER_ENABLE_JIT}, 3064514f5e3Sopenharmony_ci {"compiler-enable-osr", required_argument, nullptr, OPTION_COMPILER_ENABLE_OSR}, 3074514f5e3Sopenharmony_ci {"compiler-trace-jit", required_argument, nullptr, OPTION_COMPILER_TRACE_JIT}, 3084514f5e3Sopenharmony_ci {"compiler-jit-hotness-threshold", required_argument, nullptr, OPTION_COMPILER_JIT_HOTNESS_THRESHOLD}, 3094514f5e3Sopenharmony_ci {"compiler-jit-call-threshold", required_argument, nullptr, OPTION_COMPILER_JIT_CALL_THRESHOLD}, 3104514f5e3Sopenharmony_ci {"compiler-osr-hotness-threshold", required_argument, nullptr, OPTION_COMPILER_OSR_HOTNESS_THRESHOLD}, 3114514f5e3Sopenharmony_ci {"compiler-force-jit-compile-main", required_argument, nullptr, OPTION_COMPILER_FORCE_JIT_COMPILE_MAIN}, 3124514f5e3Sopenharmony_ci {"compiler-enable-jit-pgo", required_argument, nullptr, OPTION_COMPILER_ENABLE_JIT_PGO}, 3134514f5e3Sopenharmony_ci {"compiler-enable-aot-pgo", required_argument, nullptr, OPTION_COMPILER_ENABLE_AOT_PGO}, 3144514f5e3Sopenharmony_ci {"compiler-enable-framework-aot", required_argument, nullptr, OPTION_COMPILER_ENABLE_FRAMEWORK_AOT}, 3154514f5e3Sopenharmony_ci {"compiler-enable-profile-dump", required_argument, nullptr, OPTION_COMPILER_ENABLE_PROPFILE_DUMP}, 3164514f5e3Sopenharmony_ci {"compiler-typed-op-profiler", required_argument, nullptr, OPTION_COMPILER_TYPED_OP_PROFILER}, 3174514f5e3Sopenharmony_ci {"compiler-opt-branch-profiling", required_argument, nullptr, OPTION_COMPILER_OPT_BRANCH_PROFILING}, 3184514f5e3Sopenharmony_ci {"test-assert", required_argument, nullptr, OPTION_TEST_ASSERT}, 3194514f5e3Sopenharmony_ci {"compiler-methods-range", required_argument, nullptr, OPTION_COMPILER_METHODS_RANGE}, 3204514f5e3Sopenharmony_ci {"compiler-codegen-options", required_argument, nullptr, OPTION_COMPILER_CODEGEN_OPT}, 3214514f5e3Sopenharmony_ci {"compiler-opt-escape-analysis", required_argument, nullptr, OPTION_COMPILER_OPT_ESCAPE_ANALYSIS}, 3224514f5e3Sopenharmony_ci {"compiler-trace-escape-analysis", required_argument, nullptr, OPTION_COMPILER_TRACE_ESCAPE_ANALYSIS}, 3234514f5e3Sopenharmony_ci {"compiler-opt-induction-variable", required_argument, nullptr, OPTION_COMPILER_OPT_INDUCTION_VARIABLE}, 3244514f5e3Sopenharmony_ci {"compiler-trace-induction-variable", required_argument, nullptr, OPTION_COMPILER_TRACE_INDUCTION_VARIABLE}, 3254514f5e3Sopenharmony_ci {"compiler-memory-analysis", required_argument, nullptr, OPTION_COMPILER_MEMORY_ANALYSIS}, 3264514f5e3Sopenharmony_ci {"compiler-check-pgo-version", required_argument, nullptr, OPTION_COMPILER_CHECK_PGO_VERSION}, 3274514f5e3Sopenharmony_ci {"compiler-enable-baselinejit", required_argument, nullptr, OPTION_COMPILER_ENABLE_BASELINEJIT}, 3284514f5e3Sopenharmony_ci {"compiler-baselinejit-hotness-threshold", required_argument, nullptr, OPTION_COMPILER_BASELINEJIT_HOTNESS_THRESHOLD}, 3294514f5e3Sopenharmony_ci {"compiler-force-baselinejit-compile-main", required_argument, nullptr, OPTION_COMPILER_FORCE_BASELINEJIT_COMPILE_MAIN}, 3304514f5e3Sopenharmony_ci {"compiler-enable-jit-fast-compile", required_argument, nullptr, OPTION_COMPILER_ENABLE_JIT_FAST_COMPILE}, 3314514f5e3Sopenharmony_ci {"compiler-enable-jitfort", required_argument, nullptr, OPTION_ENABLE_JITFORT}, 3324514f5e3Sopenharmony_ci {"compiler-codesign-disable", required_argument, nullptr, OPTION_CODESIGN_DISABLE}, 3334514f5e3Sopenharmony_ci {"compiler-enable-async-copytofort", required_argument, nullptr, OPTION_ENABLE_ASYNC_COPYTOFORT}, 3344514f5e3Sopenharmony_ci {"compiler-pgo-force-dump", required_argument, nullptr, OPTION_COMPILER_PGO_FORCE_DUMP}, 3354514f5e3Sopenharmony_ci {"compiler-enable-pgo-space", required_argument, nullptr, OPTION_COMPILER_ENABLE_PGO_SPACE}, 3364514f5e3Sopenharmony_ci {"async-load-abc", required_argument, nullptr, OPTION_ASYNC_LOAD_ABC}, 3374514f5e3Sopenharmony_ci {"async-load-abc-test", required_argument, nullptr, OPTION_ASYNC_LOAD_ABC_TEST}, 3384514f5e3Sopenharmony_ci {"compiler-enable-concurrent", required_argument, nullptr, OPTION_COMPILER_ENABLE_CONCURRENT}, 3394514f5e3Sopenharmony_ci {"compiler-opt-frame-state-elimination", required_argument, nullptr, 3404514f5e3Sopenharmony_ci OPTION_COMPILER_OPT_FRAME_STATE_ELIMINATION}, 3414514f5e3Sopenharmony_ci {nullptr, 0, nullptr, 0}, 3424514f5e3Sopenharmony_ci }; 3434514f5e3Sopenharmony_ci 3444514f5e3Sopenharmony_ci int index = 0; 3454514f5e3Sopenharmony_ci opterr = 0; 3464514f5e3Sopenharmony_ci bool ret = false; 3474514f5e3Sopenharmony_ci int option = 0; 3484514f5e3Sopenharmony_ci arg_list_t argListStr; 3494514f5e3Sopenharmony_ci uint32_t argUint32 = 0; 3504514f5e3Sopenharmony_ci uint64_t argUInt64 = 0; 3514514f5e3Sopenharmony_ci int argInt = 0; 3524514f5e3Sopenharmony_ci bool argBool = false; 3534514f5e3Sopenharmony_ci double argDouble = 0.0; 3544514f5e3Sopenharmony_ci static std::string COLON = ":"; 3554514f5e3Sopenharmony_ci 3564514f5e3Sopenharmony_ci if (argc <= 1) { 3574514f5e3Sopenharmony_ci return true; 3584514f5e3Sopenharmony_ci } 3594514f5e3Sopenharmony_ci 3604514f5e3Sopenharmony_ci while (true) { 3614514f5e3Sopenharmony_ci option = getopt_long_only(argc, const_cast<char **>(argv), "", longOptions, &index); 3624514f5e3Sopenharmony_ci LOG_ECMA(INFO) << "option: " << option << ", optopt: " << optopt << ", optind: " << optind; 3634514f5e3Sopenharmony_ci 3644514f5e3Sopenharmony_ci if (optind <= 0 || optind > argc) { 3654514f5e3Sopenharmony_ci return false; 3664514f5e3Sopenharmony_ci } 3674514f5e3Sopenharmony_ci 3684514f5e3Sopenharmony_ci if (option == -1) { 3694514f5e3Sopenharmony_ci return true; 3704514f5e3Sopenharmony_ci } 3714514f5e3Sopenharmony_ci 3724514f5e3Sopenharmony_ci // unknown option or required_argument option has no argument 3734514f5e3Sopenharmony_ci if (option == OPTION_DEFAULT) { 3744514f5e3Sopenharmony_ci ret = SetDefaultValue(const_cast<char *>(argv[optind - 1])); 3754514f5e3Sopenharmony_ci if (ret) { 3764514f5e3Sopenharmony_ci continue; 3774514f5e3Sopenharmony_ci } else { 3784514f5e3Sopenharmony_ci return ret; 3794514f5e3Sopenharmony_ci } 3804514f5e3Sopenharmony_ci } 3814514f5e3Sopenharmony_ci 3824514f5e3Sopenharmony_ci WasSet(option); 3834514f5e3Sopenharmony_ci switch (option) { 3844514f5e3Sopenharmony_ci case OPTION_AOT_FILE: 3854514f5e3Sopenharmony_ci SetAOTOutputFile(optarg); 3864514f5e3Sopenharmony_ci ecmascript::AnFileDataManager::GetInstance()->SetEnable(true); 3874514f5e3Sopenharmony_ci break; 3884514f5e3Sopenharmony_ci case OPTION_ARK_PROPERTIES: 3894514f5e3Sopenharmony_ci ret = ParseIntParam("ark-properties", &argInt); 3904514f5e3Sopenharmony_ci if (ret) { 3914514f5e3Sopenharmony_ci SetArkProperties(argInt); 3924514f5e3Sopenharmony_ci } else { 3934514f5e3Sopenharmony_ci return false; 3944514f5e3Sopenharmony_ci } 3954514f5e3Sopenharmony_ci break; 3964514f5e3Sopenharmony_ci case OPTION_ARK_BUNDLENAME: 3974514f5e3Sopenharmony_ci SetArkBundleName(optarg); 3984514f5e3Sopenharmony_ci break; 3994514f5e3Sopenharmony_ci case OPTION_ENABLE_ASM_INTERPRETER: 4004514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4014514f5e3Sopenharmony_ci if (ret) { 4024514f5e3Sopenharmony_ci SetEnableAsmInterpreter(argBool); 4034514f5e3Sopenharmony_ci } else { 4044514f5e3Sopenharmony_ci return false; 4054514f5e3Sopenharmony_ci } 4064514f5e3Sopenharmony_ci break; 4074514f5e3Sopenharmony_ci case OPTION_ASM_OPCODE_DISABLE_RANGE: 4084514f5e3Sopenharmony_ci SetAsmOpcodeDisableRange(optarg); 4094514f5e3Sopenharmony_ci break; 4104514f5e3Sopenharmony_ci case OPTION_ENABLE_BUILTINS_LAZY: 4114514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4124514f5e3Sopenharmony_ci if (ret) { 4134514f5e3Sopenharmony_ci SetEnableBuiltinsLazy(argBool); 4144514f5e3Sopenharmony_ci } else { 4154514f5e3Sopenharmony_ci return false; 4164514f5e3Sopenharmony_ci } 4174514f5e3Sopenharmony_ci break; 4184514f5e3Sopenharmony_ci case OPTION_COMPILER_LOG_OPT: 4194514f5e3Sopenharmony_ci SetCompilerLogOption(optarg); 4204514f5e3Sopenharmony_ci break; 4214514f5e3Sopenharmony_ci case OPTION_COMPILER_LOG_SNAPSHOT: 4224514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4234514f5e3Sopenharmony_ci if (ret) { 4244514f5e3Sopenharmony_ci SetCompilerLogSnapshot(argBool); 4254514f5e3Sopenharmony_ci } else { 4264514f5e3Sopenharmony_ci return false; 4274514f5e3Sopenharmony_ci } 4284514f5e3Sopenharmony_ci break; 4294514f5e3Sopenharmony_ci case OPTION_COMPILER_LOG_TIME: 4304514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4314514f5e3Sopenharmony_ci if (ret) { 4324514f5e3Sopenharmony_ci SetCompilerLogTime(argBool); 4334514f5e3Sopenharmony_ci } else { 4344514f5e3Sopenharmony_ci return false; 4354514f5e3Sopenharmony_ci } 4364514f5e3Sopenharmony_ci break; 4374514f5e3Sopenharmony_ci case OPTION_ENABLE_ARK_TOOLS: 4384514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4394514f5e3Sopenharmony_ci if (ret) { 4404514f5e3Sopenharmony_ci SetEnableArkTools(argBool); 4414514f5e3Sopenharmony_ci } else { 4424514f5e3Sopenharmony_ci return false; 4434514f5e3Sopenharmony_ci } 4444514f5e3Sopenharmony_ci break; 4454514f5e3Sopenharmony_ci case OPTION_OPEN_ARK_TOOLS: 4464514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4474514f5e3Sopenharmony_ci if (ret) { 4484514f5e3Sopenharmony_ci SetOpenArkTools(argBool); 4494514f5e3Sopenharmony_ci } else { 4504514f5e3Sopenharmony_ci return false; 4514514f5e3Sopenharmony_ci } 4524514f5e3Sopenharmony_ci break; 4534514f5e3Sopenharmony_ci case OPTION_PGO_TRACE: 4544514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4554514f5e3Sopenharmony_ci if (ret) { 4564514f5e3Sopenharmony_ci SetPGOTrace(argBool); 4574514f5e3Sopenharmony_ci } else { 4584514f5e3Sopenharmony_ci return false; 4594514f5e3Sopenharmony_ci } 4604514f5e3Sopenharmony_ci break; 4614514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_BC: 4624514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4634514f5e3Sopenharmony_ci if (ret) { 4644514f5e3Sopenharmony_ci SetTraceBc(argBool); 4654514f5e3Sopenharmony_ci } else { 4664514f5e3Sopenharmony_ci return false; 4674514f5e3Sopenharmony_ci } 4684514f5e3Sopenharmony_ci break; 4694514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_DEOPT: 4704514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4714514f5e3Sopenharmony_ci if (ret) { 4724514f5e3Sopenharmony_ci SetTraceDeopt(argBool); 4734514f5e3Sopenharmony_ci } else { 4744514f5e3Sopenharmony_ci return false; 4754514f5e3Sopenharmony_ci } 4764514f5e3Sopenharmony_ci break; 4774514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_INLINE: 4784514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4794514f5e3Sopenharmony_ci if (ret) { 4804514f5e3Sopenharmony_ci SetTraceInline(argBool); 4814514f5e3Sopenharmony_ci } else { 4824514f5e3Sopenharmony_ci return false; 4834514f5e3Sopenharmony_ci } 4844514f5e3Sopenharmony_ci break; 4854514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_VALUE_NUMBERING: 4864514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4874514f5e3Sopenharmony_ci if (ret) { 4884514f5e3Sopenharmony_ci SetTraceValueNumbering(argBool); 4894514f5e3Sopenharmony_ci } else { 4904514f5e3Sopenharmony_ci return false; 4914514f5e3Sopenharmony_ci } 4924514f5e3Sopenharmony_ci break; 4934514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_INSTRUCTION_COMBINE: 4944514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 4954514f5e3Sopenharmony_ci if (ret) { 4964514f5e3Sopenharmony_ci SetTraceInstructionCombine(argBool); 4974514f5e3Sopenharmony_ci } else { 4984514f5e3Sopenharmony_ci return false; 4994514f5e3Sopenharmony_ci } 5004514f5e3Sopenharmony_ci break; 5014514f5e3Sopenharmony_ci case OPTION_COMPILER_MAX_INLINE_BYTECODES: 5024514f5e3Sopenharmony_ci ret = ParseUint32Param("max-inline-bytecodes", &argUint32); 5034514f5e3Sopenharmony_ci if (ret) { 5044514f5e3Sopenharmony_ci SetMaxInlineBytecodes(argUint32); 5054514f5e3Sopenharmony_ci } else { 5064514f5e3Sopenharmony_ci return false; 5074514f5e3Sopenharmony_ci } 5084514f5e3Sopenharmony_ci break; 5094514f5e3Sopenharmony_ci case OPTION_COMPILER_DEOPT_THRESHOLD: 5104514f5e3Sopenharmony_ci ret = ParseUint32Param("deopt-threshol", &argUint32); 5114514f5e3Sopenharmony_ci if (ret) { 5124514f5e3Sopenharmony_ci SetDeoptThreshold(argUint32); 5134514f5e3Sopenharmony_ci } else { 5144514f5e3Sopenharmony_ci return false; 5154514f5e3Sopenharmony_ci } 5164514f5e3Sopenharmony_ci break; 5174514f5e3Sopenharmony_ci case OPTION_COMPILER_DEVICE_STATE: 5184514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5194514f5e3Sopenharmony_ci if (ret) { 5204514f5e3Sopenharmony_ci SetDeviceState(argBool); 5214514f5e3Sopenharmony_ci } else { 5224514f5e3Sopenharmony_ci return false; 5234514f5e3Sopenharmony_ci } 5244514f5e3Sopenharmony_ci break; 5254514f5e3Sopenharmony_ci case OPTION_COMPILER_THERMAL_LEVEL: 5264514f5e3Sopenharmony_ci ret = ParseIntParam("compiler-thermal-level", &argInt); 5274514f5e3Sopenharmony_ci if (ret) { 5284514f5e3Sopenharmony_ci SetThermalLevel(argInt); 5294514f5e3Sopenharmony_ci } else { 5304514f5e3Sopenharmony_ci return false; 5314514f5e3Sopenharmony_ci } 5324514f5e3Sopenharmony_ci break; 5334514f5e3Sopenharmony_ci case OPTION_COMPILER_STRESS_DEOPT: 5344514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5354514f5e3Sopenharmony_ci if (ret) { 5364514f5e3Sopenharmony_ci SetStressDeopt(argBool); 5374514f5e3Sopenharmony_ci } else { 5384514f5e3Sopenharmony_ci return false; 5394514f5e3Sopenharmony_ci } 5404514f5e3Sopenharmony_ci break; 5414514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_CODE_PROFILER: 5424514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5434514f5e3Sopenharmony_ci if (ret) { 5444514f5e3Sopenharmony_ci SetOptCodeProfiler(argBool); 5454514f5e3Sopenharmony_ci } else { 5464514f5e3Sopenharmony_ci return false; 5474514f5e3Sopenharmony_ci } 5484514f5e3Sopenharmony_ci break; 5494514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_BC_RANGE: 5504514f5e3Sopenharmony_ci SetOptCodeRange(optarg); 5514514f5e3Sopenharmony_ci break; 5524514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_BC_RANGE_HELP: 5534514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5544514f5e3Sopenharmony_ci if (ret) { 5554514f5e3Sopenharmony_ci std::string helpInfo = kungfu::GetHelpForEcmaCodeListForRange(); 5564514f5e3Sopenharmony_ci LOG_COMPILER(ERROR) << helpInfo.c_str(); 5574514f5e3Sopenharmony_ci exit(1); 5584514f5e3Sopenharmony_ci } 5594514f5e3Sopenharmony_ci break; 5604514f5e3Sopenharmony_ci case OPTION_ENABLE_FORCE_GC: 5614514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5624514f5e3Sopenharmony_ci if (ret) { 5634514f5e3Sopenharmony_ci SetEnableForceGC(argBool); 5644514f5e3Sopenharmony_ci } else { 5654514f5e3Sopenharmony_ci return false; 5664514f5e3Sopenharmony_ci } 5674514f5e3Sopenharmony_ci break; 5684514f5e3Sopenharmony_ci case OPTION_ENABLE_EDEN_GC: 5694514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5704514f5e3Sopenharmony_ci if (ret) { 5714514f5e3Sopenharmony_ci SetEnableEdenGC(argBool); 5724514f5e3Sopenharmony_ci } else { 5734514f5e3Sopenharmony_ci return false; 5744514f5e3Sopenharmony_ci } 5754514f5e3Sopenharmony_ci break; 5764514f5e3Sopenharmony_ci case OPTION_FORCE_FULL_GC: 5774514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5784514f5e3Sopenharmony_ci if (ret) { 5794514f5e3Sopenharmony_ci SetForceFullGC(argBool); 5804514f5e3Sopenharmony_ci } else { 5814514f5e3Sopenharmony_ci return false; 5824514f5e3Sopenharmony_ci } 5834514f5e3Sopenharmony_ci break; 5844514f5e3Sopenharmony_ci case OPTION_ENABLE_FORCE_SHARED_GC_FREQUENCY: 5854514f5e3Sopenharmony_ci ret = ParseUint32Param("force-shared-gc-frequency", &argUint32); 5864514f5e3Sopenharmony_ci if (ret) { 5874514f5e3Sopenharmony_ci SetForceSharedGCFrequency(argUint32); 5884514f5e3Sopenharmony_ci } else { 5894514f5e3Sopenharmony_ci return false; 5904514f5e3Sopenharmony_ci } 5914514f5e3Sopenharmony_ci break; 5924514f5e3Sopenharmony_ci case OPTION_ENABLE_IC: 5934514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 5944514f5e3Sopenharmony_ci if (ret) { 5954514f5e3Sopenharmony_ci SetEnableIC(argBool); 5964514f5e3Sopenharmony_ci } else { 5974514f5e3Sopenharmony_ci return false; 5984514f5e3Sopenharmony_ci } 5994514f5e3Sopenharmony_ci break; 6004514f5e3Sopenharmony_ci case OPTION_ENABLE_RUNTIME_STAT: 6014514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 6024514f5e3Sopenharmony_ci if (ret) { 6034514f5e3Sopenharmony_ci SetEnableRuntimeStat(argBool); 6044514f5e3Sopenharmony_ci } else { 6054514f5e3Sopenharmony_ci return false; 6064514f5e3Sopenharmony_ci } 6074514f5e3Sopenharmony_ci break; 6084514f5e3Sopenharmony_ci case OPTION_GC_THREADNUM: 6094514f5e3Sopenharmony_ci ret = ParseUint32Param("gc-thread-num", &argUint32); 6104514f5e3Sopenharmony_ci if (ret) { 6114514f5e3Sopenharmony_ci SetGcThreadNum(argUint32); 6124514f5e3Sopenharmony_ci } else { 6134514f5e3Sopenharmony_ci return false; 6144514f5e3Sopenharmony_ci } 6154514f5e3Sopenharmony_ci break; 6164514f5e3Sopenharmony_ci case OPTION_HEAP_SIZE_LIMIT: 6174514f5e3Sopenharmony_ci ret = ParseUint32Param("heap-size-limit", &argUint32); 6184514f5e3Sopenharmony_ci if (ret) { 6194514f5e3Sopenharmony_ci SetHeapSizeLimit(argUint32); 6204514f5e3Sopenharmony_ci } else { 6214514f5e3Sopenharmony_ci return false; 6224514f5e3Sopenharmony_ci } 6234514f5e3Sopenharmony_ci break; 6244514f5e3Sopenharmony_ci case OPTION_HELP: 6254514f5e3Sopenharmony_ci return false; 6264514f5e3Sopenharmony_ci case OPTION_ICU_DATA_PATH: 6274514f5e3Sopenharmony_ci SetIcuDataPath(optarg); 6284514f5e3Sopenharmony_ci break; 6294514f5e3Sopenharmony_ci case OPTION_ENABLE_WORKER: 6304514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 6314514f5e3Sopenharmony_ci if (ret) { 6324514f5e3Sopenharmony_ci SetIsWorker(argBool); 6334514f5e3Sopenharmony_ci } else { 6344514f5e3Sopenharmony_ci return false; 6354514f5e3Sopenharmony_ci } 6364514f5e3Sopenharmony_ci break; 6374514f5e3Sopenharmony_ci case OPTION_LOG_COMPONENTS: 6384514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6394514f5e3Sopenharmony_ci SetLogComponents(argListStr); 6404514f5e3Sopenharmony_ci break; 6414514f5e3Sopenharmony_ci case OPTION_LOG_DEBUG: 6424514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6434514f5e3Sopenharmony_ci SetLogDebug(argListStr); 6444514f5e3Sopenharmony_ci break; 6454514f5e3Sopenharmony_ci case OPTION_LOG_ERROR: 6464514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6474514f5e3Sopenharmony_ci SetLogError(argListStr); 6484514f5e3Sopenharmony_ci break; 6494514f5e3Sopenharmony_ci case OPTION_LOG_FATAL: 6504514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6514514f5e3Sopenharmony_ci SetLogFatal(argListStr); 6524514f5e3Sopenharmony_ci break; 6534514f5e3Sopenharmony_ci case OPTION_LOG_INFO: 6544514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6554514f5e3Sopenharmony_ci SetLogInfo(argListStr); 6564514f5e3Sopenharmony_ci break; 6574514f5e3Sopenharmony_ci case OPTION_LOG_LEVEL: 6584514f5e3Sopenharmony_ci SetLogLevel(optarg); 6594514f5e3Sopenharmony_ci break; 6604514f5e3Sopenharmony_ci case OPTION_LOG_WARNING: 6614514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 6624514f5e3Sopenharmony_ci SetLogWarning(argListStr); 6634514f5e3Sopenharmony_ci break; 6644514f5e3Sopenharmony_ci case OPTION_GC_LONG_PAUSED_TIME: 6654514f5e3Sopenharmony_ci ret = ParseUint32Param("gc-long-paused-time", &argUint32); 6664514f5e3Sopenharmony_ci if (ret) { 6674514f5e3Sopenharmony_ci SetLongPauseTime(argUint32); 6684514f5e3Sopenharmony_ci } else { 6694514f5e3Sopenharmony_ci return false; 6704514f5e3Sopenharmony_ci } 6714514f5e3Sopenharmony_ci break; 6724514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_MAX_METHOD: 6734514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-opt-max-method", &argUint32); 6744514f5e3Sopenharmony_ci if (ret) { 6754514f5e3Sopenharmony_ci SetMaxAotMethodSize(argUint32); 6764514f5e3Sopenharmony_ci } else { 6774514f5e3Sopenharmony_ci return false; 6784514f5e3Sopenharmony_ci } 6794514f5e3Sopenharmony_ci break; 6804514f5e3Sopenharmony_ci case OPTION_COMPILER_MODULE_METHODS: 6814514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-module-methods", &argUint32); 6824514f5e3Sopenharmony_ci if (!ret) { 6834514f5e3Sopenharmony_ci return false; 6844514f5e3Sopenharmony_ci } 6854514f5e3Sopenharmony_ci SetCompilerModuleMethods(argUint32); 6864514f5e3Sopenharmony_ci break; 6874514f5e3Sopenharmony_ci case OPTION_COMPILER_TYPE_THRESHOLD: 6884514f5e3Sopenharmony_ci ret = ParseDoubleParam("compiler-type-threshold", &argDouble); 6894514f5e3Sopenharmony_ci if (ret) { 6904514f5e3Sopenharmony_ci SetTypeThreshold(argDouble); 6914514f5e3Sopenharmony_ci } else { 6924514f5e3Sopenharmony_ci return false; 6934514f5e3Sopenharmony_ci } 6944514f5e3Sopenharmony_ci break; 6954514f5e3Sopenharmony_ci case OPTION_MAX_UNMOVABLE_SPACE: 6964514f5e3Sopenharmony_ci ret = ParseUint32Param("max-unmovable-space", &argUint32); 6974514f5e3Sopenharmony_ci if (ret) { 6984514f5e3Sopenharmony_ci SetMaxNonmovableSpaceCapacity(argUint32); 6994514f5e3Sopenharmony_ci } else { 7004514f5e3Sopenharmony_ci return false; 7014514f5e3Sopenharmony_ci } 7024514f5e3Sopenharmony_ci break; 7034514f5e3Sopenharmony_ci case OPTION_COMPILER_LOG_METHODS: 7044514f5e3Sopenharmony_ci SetMethodsListForLog(optarg); 7054514f5e3Sopenharmony_ci break; 7064514f5e3Sopenharmony_ci case OPTION_ASM_OPT_LEVEL: 7074514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-opt-level", &argUint32); 7084514f5e3Sopenharmony_ci if (ret) { 7094514f5e3Sopenharmony_ci SetOptLevel(argUint32); 7104514f5e3Sopenharmony_ci } else { 7114514f5e3Sopenharmony_ci return false; 7124514f5e3Sopenharmony_ci } 7134514f5e3Sopenharmony_ci break; 7144514f5e3Sopenharmony_ci case OPTION_PRINT_EXECUTE_TIME: 7154514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7164514f5e3Sopenharmony_ci if (ret) { 7174514f5e3Sopenharmony_ci SetEnablePrintExecuteTime(argBool); 7184514f5e3Sopenharmony_ci } else { 7194514f5e3Sopenharmony_ci return false; 7204514f5e3Sopenharmony_ci } 7214514f5e3Sopenharmony_ci break; 7224514f5e3Sopenharmony_ci case OPTION_ENABLE_PGO_PROFILER: 7234514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7244514f5e3Sopenharmony_ci if (ret) { 7254514f5e3Sopenharmony_ci SetEnablePGOProfiler(argBool); 7264514f5e3Sopenharmony_ci } else { 7274514f5e3Sopenharmony_ci return false; 7284514f5e3Sopenharmony_ci } 7294514f5e3Sopenharmony_ci break; 7304514f5e3Sopenharmony_ci case OPTION_ENABLE_ELEMENTSKIND: 7314514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7324514f5e3Sopenharmony_ci if (ret) { 7334514f5e3Sopenharmony_ci SetEnableElementsKind(argBool); 7344514f5e3Sopenharmony_ci } else { 7354514f5e3Sopenharmony_ci return false; 7364514f5e3Sopenharmony_ci } 7374514f5e3Sopenharmony_ci break; 7384514f5e3Sopenharmony_ci case OPTION_ENABLE_FORCE_IC: 7394514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7404514f5e3Sopenharmony_ci if (ret) { 7414514f5e3Sopenharmony_ci SetEnableForceIC(argBool); 7424514f5e3Sopenharmony_ci } else { 7434514f5e3Sopenharmony_ci return false; 7444514f5e3Sopenharmony_ci } 7454514f5e3Sopenharmony_ci break; 7464514f5e3Sopenharmony_ci case OPTION_COMPILER_PGO_PROFILER_PATH: 7474514f5e3Sopenharmony_ci if (*optarg == '\0') { 7484514f5e3Sopenharmony_ci return false; 7494514f5e3Sopenharmony_ci } 7504514f5e3Sopenharmony_ci SetPGOProfilerPath(optarg); 7514514f5e3Sopenharmony_ci break; 7524514f5e3Sopenharmony_ci case OPTION_COMPILER_PGO_HOTNESS_THRESHOLD: 7534514f5e3Sopenharmony_ci ret = ParseUint32Param("pgo-hotness-threshold", &argUint32); 7544514f5e3Sopenharmony_ci if (ret) { 7554514f5e3Sopenharmony_ci SetPGOHotnessThreshold(argUint32); 7564514f5e3Sopenharmony_ci } else { 7574514f5e3Sopenharmony_ci return false; 7584514f5e3Sopenharmony_ci } 7594514f5e3Sopenharmony_ci break; 7604514f5e3Sopenharmony_ci case OPTION_COMPILER_PGO_SAVE_MIN_INTERVAL: 7614514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-pgo-save-min-interval", &argUint32); 7624514f5e3Sopenharmony_ci if (ret) { 7634514f5e3Sopenharmony_ci SetPGOSaveMinInterval(argUint32); 7644514f5e3Sopenharmony_ci } else { 7654514f5e3Sopenharmony_ci return false; 7664514f5e3Sopenharmony_ci } 7674514f5e3Sopenharmony_ci break; 7684514f5e3Sopenharmony_ci case OPTION_COMPILER_BASELINE_PGO: 7694514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7704514f5e3Sopenharmony_ci if (ret) { 7714514f5e3Sopenharmony_ci SetEnableBaselinePgo(argBool); 7724514f5e3Sopenharmony_ci } else { 7734514f5e3Sopenharmony_ci return false; 7744514f5e3Sopenharmony_ci } 7754514f5e3Sopenharmony_ci break; 7764514f5e3Sopenharmony_ci case OPTION_RELOCATION_MODE: 7774514f5e3Sopenharmony_ci ret = ParseUint32Param("reloc-mode", &argUint32); 7784514f5e3Sopenharmony_ci if (ret) { 7794514f5e3Sopenharmony_ci SetRelocMode(argUint32); 7804514f5e3Sopenharmony_ci } else { 7814514f5e3Sopenharmony_ci return false; 7824514f5e3Sopenharmony_ci } 7834514f5e3Sopenharmony_ci break; 7844514f5e3Sopenharmony_ci case OPTION_SERIALIZER_BUFFER_SIZE_LIMIT: 7854514f5e3Sopenharmony_ci ret = ParseUint64Param("serializer-buffer-size-limit", &argUInt64); 7864514f5e3Sopenharmony_ci if (ret) { 7874514f5e3Sopenharmony_ci SetSerializerBufferSizeLimit(argUInt64); 7884514f5e3Sopenharmony_ci } else { 7894514f5e3Sopenharmony_ci return false; 7904514f5e3Sopenharmony_ci } 7914514f5e3Sopenharmony_ci break; 7924514f5e3Sopenharmony_ci case OPTION_STARTUP_TIME: 7934514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 7944514f5e3Sopenharmony_ci if (ret) { 7954514f5e3Sopenharmony_ci SetStartupTime(argBool); 7964514f5e3Sopenharmony_ci } else { 7974514f5e3Sopenharmony_ci return false; 7984514f5e3Sopenharmony_ci } 7994514f5e3Sopenharmony_ci break; 8004514f5e3Sopenharmony_ci case OPTION_STUB_FILE: 8014514f5e3Sopenharmony_ci SetStubFile(optarg); 8024514f5e3Sopenharmony_ci break; 8034514f5e3Sopenharmony_ci case OPTION_COMPILER_TARGET_TRIPLE: 8044514f5e3Sopenharmony_ci SetTargetTriple(optarg); 8054514f5e3Sopenharmony_ci break; 8064514f5e3Sopenharmony_ci case OPTION_ENTRY_POINT: 8074514f5e3Sopenharmony_ci SetEntryPoint(optarg); 8084514f5e3Sopenharmony_ci break; 8094514f5e3Sopenharmony_ci case OPTION_MERGE_ABC: 8104514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8114514f5e3Sopenharmony_ci if (ret) { 8124514f5e3Sopenharmony_ci SetMergeAbc(argBool); 8134514f5e3Sopenharmony_ci } else { 8144514f5e3Sopenharmony_ci return false; 8154514f5e3Sopenharmony_ci } 8164514f5e3Sopenharmony_ci break; 8174514f5e3Sopenharmony_ci case OPTION_ENABLE_CONTEXT: 8184514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8194514f5e3Sopenharmony_ci if (ret) { 8204514f5e3Sopenharmony_ci SetEnableContext(argBool); 8214514f5e3Sopenharmony_ci } else { 8224514f5e3Sopenharmony_ci return false; 8234514f5e3Sopenharmony_ci } 8244514f5e3Sopenharmony_ci break; 8254514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_TYPE_LOWERING: 8264514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8274514f5e3Sopenharmony_ci if (ret) { 8284514f5e3Sopenharmony_ci SetEnableTypeLowering(argBool); 8294514f5e3Sopenharmony_ci } else { 8304514f5e3Sopenharmony_ci return false; 8314514f5e3Sopenharmony_ci } 8324514f5e3Sopenharmony_ci break; 8334514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_ARRAY_BOUNDS_CHECK_ELIMINATION: 8344514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8354514f5e3Sopenharmony_ci if (ret) { 8364514f5e3Sopenharmony_ci SetEnableArrayBoundsCheckElimination(argBool); 8374514f5e3Sopenharmony_ci } else { 8384514f5e3Sopenharmony_ci return false; 8394514f5e3Sopenharmony_ci } 8404514f5e3Sopenharmony_ci break; 8414514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_FRAME_STATE_ELIMINATION: 8424514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8434514f5e3Sopenharmony_ci if (ret) { 8444514f5e3Sopenharmony_ci SetEnableFrameStateElimination(argBool); 8454514f5e3Sopenharmony_ci } else { 8464514f5e3Sopenharmony_ci return false; 8474514f5e3Sopenharmony_ci } 8484514f5e3Sopenharmony_ci break; 8494514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_EARLY_ELIMINATION: 8504514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8514514f5e3Sopenharmony_ci if (ret) { 8524514f5e3Sopenharmony_ci SetEnableEarlyElimination(argBool); 8534514f5e3Sopenharmony_ci } else { 8544514f5e3Sopenharmony_ci return false; 8554514f5e3Sopenharmony_ci } 8564514f5e3Sopenharmony_ci break; 8574514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_LATER_ELIMINATION: 8584514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8594514f5e3Sopenharmony_ci if (ret) { 8604514f5e3Sopenharmony_ci SetEnableLaterElimination(argBool); 8614514f5e3Sopenharmony_ci } else { 8624514f5e3Sopenharmony_ci return false; 8634514f5e3Sopenharmony_ci } 8644514f5e3Sopenharmony_ci break; 8654514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_INSTRUCTIONE_COMBINE: 8664514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8674514f5e3Sopenharmony_ci if (ret) { 8684514f5e3Sopenharmony_ci SetEnableInstrcutionCombine(argBool); 8694514f5e3Sopenharmony_ci } else { 8704514f5e3Sopenharmony_ci return false; 8714514f5e3Sopenharmony_ci } 8724514f5e3Sopenharmony_ci break; 8734514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_STRING: 8744514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8754514f5e3Sopenharmony_ci if (ret) { 8764514f5e3Sopenharmony_ci SetEnableOptString(argBool); 8774514f5e3Sopenharmony_ci } else { 8784514f5e3Sopenharmony_ci return false; 8794514f5e3Sopenharmony_ci } 8804514f5e3Sopenharmony_ci break; 8814514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_VALUE_NUMBERING: 8824514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8834514f5e3Sopenharmony_ci if (ret) { 8844514f5e3Sopenharmony_ci SetEnableValueNumbering(argBool); 8854514f5e3Sopenharmony_ci } else { 8864514f5e3Sopenharmony_ci return false; 8874514f5e3Sopenharmony_ci } 8884514f5e3Sopenharmony_ci break; 8894514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_NEW_VALUE_NUMBERING: 8904514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8914514f5e3Sopenharmony_ci if (ret) { 8924514f5e3Sopenharmony_ci SetEnableNewValueNumbering(argBool); 8934514f5e3Sopenharmony_ci } else { 8944514f5e3Sopenharmony_ci return false; 8954514f5e3Sopenharmony_ci } 8964514f5e3Sopenharmony_ci break; 8974514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_INLINING: 8984514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 8994514f5e3Sopenharmony_ci if (ret) { 9004514f5e3Sopenharmony_ci SetEnableOptInlining(argBool); 9014514f5e3Sopenharmony_ci } else { 9024514f5e3Sopenharmony_ci return false; 9034514f5e3Sopenharmony_ci } 9044514f5e3Sopenharmony_ci break; 9054514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_PGOTYPE: 9064514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9074514f5e3Sopenharmony_ci if (ret) { 9084514f5e3Sopenharmony_ci SetEnableOptPGOType(argBool); 9094514f5e3Sopenharmony_ci } else { 9104514f5e3Sopenharmony_ci return false; 9114514f5e3Sopenharmony_ci } 9124514f5e3Sopenharmony_ci break; 9134514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_TRACK_FIELD: 9144514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9154514f5e3Sopenharmony_ci if (ret) { 9164514f5e3Sopenharmony_ci SetEnableOptTrackField(argBool); 9174514f5e3Sopenharmony_ci } else { 9184514f5e3Sopenharmony_ci return false; 9194514f5e3Sopenharmony_ci } 9204514f5e3Sopenharmony_ci break; 9214514f5e3Sopenharmony_ci case OPTION_COMPILER_VERIFY_VTABLE: 9224514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9234514f5e3Sopenharmony_ci if (ret) { 9244514f5e3Sopenharmony_ci SetVerifyVTable(argBool); 9254514f5e3Sopenharmony_ci } else { 9264514f5e3Sopenharmony_ci return false; 9274514f5e3Sopenharmony_ci } 9284514f5e3Sopenharmony_ci break; 9294514f5e3Sopenharmony_ci case OPTION_COMPILER_SELECT_METHODS: 9304514f5e3Sopenharmony_ci SetCompilerSelectMethods(optarg); 9314514f5e3Sopenharmony_ci break; 9324514f5e3Sopenharmony_ci case OPTION_COMPILER_SKIP_METHODS: 9334514f5e3Sopenharmony_ci SetCompilerSkipMethods(optarg); 9344514f5e3Sopenharmony_ci break; 9354514f5e3Sopenharmony_ci case OPTION_TARGET_COMPILER_MODE: 9364514f5e3Sopenharmony_ci SetTargetCompilerMode(optarg); 9374514f5e3Sopenharmony_ci break; 9384514f5e3Sopenharmony_ci case OPTION_COMPILER_FRAMEWORK_ABC_PATH: 9394514f5e3Sopenharmony_ci SetCompilerFrameworkAbcPath(optarg); 9404514f5e3Sopenharmony_ci break; 9414514f5e3Sopenharmony_ci case OPTION_HAP_PATH: 9424514f5e3Sopenharmony_ci SetHapPath(optarg); 9434514f5e3Sopenharmony_ci break; 9444514f5e3Sopenharmony_ci case OPTION_HAP_ABC_OFFSET: 9454514f5e3Sopenharmony_ci ret = ParseUint32Param("hap-abc-offset", &argUint32); 9464514f5e3Sopenharmony_ci if (!ret) { 9474514f5e3Sopenharmony_ci return false; 9484514f5e3Sopenharmony_ci } 9494514f5e3Sopenharmony_ci SetHapAbcOffset(argUint32); 9504514f5e3Sopenharmony_ci break; 9514514f5e3Sopenharmony_ci case OPTION_HAP_ABC_SIZE: 9524514f5e3Sopenharmony_ci ret = ParseUint32Param("hap-abc-size", &argUint32); 9534514f5e3Sopenharmony_ci if (!ret) { 9544514f5e3Sopenharmony_ci return false; 9554514f5e3Sopenharmony_ci } 9564514f5e3Sopenharmony_ci SetHapAbcSize(argUint32); 9574514f5e3Sopenharmony_ci break; 9584514f5e3Sopenharmony_ci case OPTION_COMPILER_NOCHECK: 9594514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9604514f5e3Sopenharmony_ci if (!ret) { 9614514f5e3Sopenharmony_ci return false; 9624514f5e3Sopenharmony_ci } 9634514f5e3Sopenharmony_ci SetCompilerNoCheck(argBool); 9644514f5e3Sopenharmony_ci break; 9654514f5e3Sopenharmony_ci case OPTION_COMPILER_PIPELINE_HOST_AOT: 9664514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9674514f5e3Sopenharmony_ci if (!ret) { 9684514f5e3Sopenharmony_ci return false; 9694514f5e3Sopenharmony_ci } 9704514f5e3Sopenharmony_ci SetCompilerPipelineHostAOT(argBool); 9714514f5e3Sopenharmony_ci break; 9724514f5e3Sopenharmony_ci case OPTION_FAST_AOT_COMPILE_MODE: 9734514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9744514f5e3Sopenharmony_ci if (!ret) { 9754514f5e3Sopenharmony_ci return false; 9764514f5e3Sopenharmony_ci } 9774514f5e3Sopenharmony_ci SetFastAOTCompileMode(argBool); 9784514f5e3Sopenharmony_ci break; 9794514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_CONSTANT_FOLDING: 9804514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9814514f5e3Sopenharmony_ci if (ret) { 9824514f5e3Sopenharmony_ci SetEnableOptConstantFolding(argBool); 9834514f5e3Sopenharmony_ci } else { 9844514f5e3Sopenharmony_ci return false; 9854514f5e3Sopenharmony_ci } 9864514f5e3Sopenharmony_ci break; 9874514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_LOOP_PEELING: 9884514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9894514f5e3Sopenharmony_ci if (ret) { 9904514f5e3Sopenharmony_ci SetEnableOptLoopPeeling(argBool); 9914514f5e3Sopenharmony_ci } else { 9924514f5e3Sopenharmony_ci return false; 9934514f5e3Sopenharmony_ci } 9944514f5e3Sopenharmony_ci break; 9954514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_ON_HEAP_CHECK: 9964514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 9974514f5e3Sopenharmony_ci if (ret) { 9984514f5e3Sopenharmony_ci SetEnableOptOnHeapCheck(argBool); 9994514f5e3Sopenharmony_ci } else { 10004514f5e3Sopenharmony_ci return false; 10014514f5e3Sopenharmony_ci } 10024514f5e3Sopenharmony_ci break; 10034514f5e3Sopenharmony_ci case OPTION_COMPILER_PKG_INFO: 10044514f5e3Sopenharmony_ci SetCompilerPkgJsonInfo(optarg); 10054514f5e3Sopenharmony_ci break; 10064514f5e3Sopenharmony_ci case OPTION_COMPILER_EXTERNAL_PKG_INFO: 10074514f5e3Sopenharmony_ci SetCompilerExternalPkgJsonInfo(optarg); 10084514f5e3Sopenharmony_ci break; 10094514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_EXTERNAL_PKG: 10104514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10114514f5e3Sopenharmony_ci if (ret) { 10124514f5e3Sopenharmony_ci SetCompilerEnableExternalPkg(argBool); 10134514f5e3Sopenharmony_ci } else { 10144514f5e3Sopenharmony_ci return false; 10154514f5e3Sopenharmony_ci } 10164514f5e3Sopenharmony_ci break; 10174514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_LEXENV_SPECIALIZATION: 10184514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10194514f5e3Sopenharmony_ci if (ret) { 10204514f5e3Sopenharmony_ci SetEnableLexenvSpecialization(argBool); 10214514f5e3Sopenharmony_ci } else { 10224514f5e3Sopenharmony_ci return false; 10234514f5e3Sopenharmony_ci } 10244514f5e3Sopenharmony_ci break; 10254514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_NATIVE_INLINE: 10264514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10274514f5e3Sopenharmony_ci if (ret) { 10284514f5e3Sopenharmony_ci SetEnableNativeInline(argBool); 10294514f5e3Sopenharmony_ci } else { 10304514f5e3Sopenharmony_ci return false; 10314514f5e3Sopenharmony_ci } 10324514f5e3Sopenharmony_ci break; 10334514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_LOWERING_BUILTIN: 10344514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10354514f5e3Sopenharmony_ci if (ret) { 10364514f5e3Sopenharmony_ci SetEnableLoweringBuiltin(argBool); 10374514f5e3Sopenharmony_ci } else { 10384514f5e3Sopenharmony_ci return false; 10394514f5e3Sopenharmony_ci } 10404514f5e3Sopenharmony_ci break; 10414514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_LITECG: 10424514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10434514f5e3Sopenharmony_ci if (ret) { 10444514f5e3Sopenharmony_ci SetCompilerEnableLiteCG(argBool); 10454514f5e3Sopenharmony_ci } else { 10464514f5e3Sopenharmony_ci return false; 10474514f5e3Sopenharmony_ci } 10484514f5e3Sopenharmony_ci break; 10494514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_JIT: 10504514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10514514f5e3Sopenharmony_ci if (ret) { 10524514f5e3Sopenharmony_ci SetEnableJIT(argBool); 10534514f5e3Sopenharmony_ci } else { 10544514f5e3Sopenharmony_ci return false; 10554514f5e3Sopenharmony_ci } 10564514f5e3Sopenharmony_ci break; 10574514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_OSR: 10584514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10594514f5e3Sopenharmony_ci if (ret) { 10604514f5e3Sopenharmony_ci SetEnableOSR(argBool); 10614514f5e3Sopenharmony_ci } else { 10624514f5e3Sopenharmony_ci return false; 10634514f5e3Sopenharmony_ci } 10644514f5e3Sopenharmony_ci break; 10654514f5e3Sopenharmony_ci case OPTION_COMPILER_JIT_HOTNESS_THRESHOLD: 10664514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-jit-hotness-threshold", &argUint32); 10674514f5e3Sopenharmony_ci if (ret) { 10684514f5e3Sopenharmony_ci uint16_t val = argUint32 > std::numeric_limits<uint16_t>::max() ? 10694514f5e3Sopenharmony_ci std::numeric_limits<uint16_t>::max() : static_cast<uint16_t>(argUint32); 10704514f5e3Sopenharmony_ci SetJitHotnessThreshold(val); 10714514f5e3Sopenharmony_ci } else { 10724514f5e3Sopenharmony_ci return false; 10734514f5e3Sopenharmony_ci } 10744514f5e3Sopenharmony_ci break; 10754514f5e3Sopenharmony_ci case OPTION_COMPILER_JIT_CALL_THRESHOLD: 10764514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-jit-call-threshold", &argUint32); 10774514f5e3Sopenharmony_ci if (ret) { 10784514f5e3Sopenharmony_ci uint8_t val = argUint32 > std::numeric_limits<uint8_t>::max() ? 10794514f5e3Sopenharmony_ci std::numeric_limits<uint8_t>::max() : static_cast<uint8_t>(argUint32); 10804514f5e3Sopenharmony_ci SetJitCallThreshold(val); 10814514f5e3Sopenharmony_ci } else { 10824514f5e3Sopenharmony_ci return false; 10834514f5e3Sopenharmony_ci } 10844514f5e3Sopenharmony_ci break; 10854514f5e3Sopenharmony_ci case OPTION_COMPILER_OSR_HOTNESS_THRESHOLD: 10864514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-osr-hotness-threshold", &argUint32); 10874514f5e3Sopenharmony_ci if (ret) { 10884514f5e3Sopenharmony_ci uint16_t val = argUint32 > std::numeric_limits<uint16_t>::max() ? 10894514f5e3Sopenharmony_ci std::numeric_limits<uint16_t>::max() : static_cast<uint16_t>(argUint32); 10904514f5e3Sopenharmony_ci SetOsrHotnessThreshold(val); 10914514f5e3Sopenharmony_ci } else { 10924514f5e3Sopenharmony_ci return false; 10934514f5e3Sopenharmony_ci } 10944514f5e3Sopenharmony_ci break; 10954514f5e3Sopenharmony_ci case OPTION_COMPILER_FORCE_JIT_COMPILE_MAIN: 10964514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 10974514f5e3Sopenharmony_ci if (ret) { 10984514f5e3Sopenharmony_ci SetForceJitCompileMain(argBool); 10994514f5e3Sopenharmony_ci } else { 11004514f5e3Sopenharmony_ci return false; 11014514f5e3Sopenharmony_ci } 11024514f5e3Sopenharmony_ci break; 11034514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_JIT: 11044514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11054514f5e3Sopenharmony_ci if (ret) { 11064514f5e3Sopenharmony_ci SetTraceJIT(argBool); 11074514f5e3Sopenharmony_ci } else { 11084514f5e3Sopenharmony_ci return false; 11094514f5e3Sopenharmony_ci } 11104514f5e3Sopenharmony_ci break; 11114514f5e3Sopenharmony_ci case OPTION_COMPILER_TYPED_OP_PROFILER: 11124514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11134514f5e3Sopenharmony_ci if (ret) { 11144514f5e3Sopenharmony_ci SetTypedOpProfiler(argBool); 11154514f5e3Sopenharmony_ci } else { 11164514f5e3Sopenharmony_ci return false; 11174514f5e3Sopenharmony_ci } 11184514f5e3Sopenharmony_ci break; 11194514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_BRANCH_PROFILING: 11204514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11214514f5e3Sopenharmony_ci if (ret) { 11224514f5e3Sopenharmony_ci SetEnableBranchProfiling(argBool); 11234514f5e3Sopenharmony_ci } else { 11244514f5e3Sopenharmony_ci return false; 11254514f5e3Sopenharmony_ci } 11264514f5e3Sopenharmony_ci break; 11274514f5e3Sopenharmony_ci case OPTION_TEST_ASSERT: 11284514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11294514f5e3Sopenharmony_ci if (ret) { 11304514f5e3Sopenharmony_ci SetTestAssert(argBool); 11314514f5e3Sopenharmony_ci } else { 11324514f5e3Sopenharmony_ci return false; 11334514f5e3Sopenharmony_ci } 11344514f5e3Sopenharmony_ci break; 11354514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_JIT_PGO: 11364514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11374514f5e3Sopenharmony_ci if (ret) { 11384514f5e3Sopenharmony_ci SetEnableJITPGO(argBool); 11394514f5e3Sopenharmony_ci } else { 11404514f5e3Sopenharmony_ci return false; 11414514f5e3Sopenharmony_ci } 11424514f5e3Sopenharmony_ci break; 11434514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_PROPFILE_DUMP: 11444514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11454514f5e3Sopenharmony_ci if (ret) { 11464514f5e3Sopenharmony_ci SetEnableProfileDump(argBool); 11474514f5e3Sopenharmony_ci } else { 11484514f5e3Sopenharmony_ci return false; 11494514f5e3Sopenharmony_ci } 11504514f5e3Sopenharmony_ci break; 11514514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_AOT_PGO: 11524514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11534514f5e3Sopenharmony_ci if (ret) { 11544514f5e3Sopenharmony_ci SetEnableAOTPGO(argBool); 11554514f5e3Sopenharmony_ci } else { 11564514f5e3Sopenharmony_ci return false; 11574514f5e3Sopenharmony_ci } 11584514f5e3Sopenharmony_ci break; 11594514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_FRAMEWORK_AOT: 11604514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11614514f5e3Sopenharmony_ci if (ret) { 11624514f5e3Sopenharmony_ci SetEnableFrameworkAOT(argBool); 11634514f5e3Sopenharmony_ci } else { 11644514f5e3Sopenharmony_ci return false; 11654514f5e3Sopenharmony_ci } 11664514f5e3Sopenharmony_ci break; 11674514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_BASELINEJIT: 11684514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11694514f5e3Sopenharmony_ci if (ret) { 11704514f5e3Sopenharmony_ci SetEnableBaselineJIT(argBool); 11714514f5e3Sopenharmony_ci } else { 11724514f5e3Sopenharmony_ci return false; 11734514f5e3Sopenharmony_ci } 11744514f5e3Sopenharmony_ci break; 11754514f5e3Sopenharmony_ci case OPTION_COMPILER_METHODS_RANGE: 11764514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, COLON); 11774514f5e3Sopenharmony_ci SetCompilerMethodsRange(&argListStr); 11784514f5e3Sopenharmony_ci break; 11794514f5e3Sopenharmony_ci case OPTION_COMPILER_CODEGEN_OPT: 11804514f5e3Sopenharmony_ci ParseListArgParam(optarg, &argListStr, " "); 11814514f5e3Sopenharmony_ci SetCompilerCodegenOptions(argListStr); 11824514f5e3Sopenharmony_ci break; 11834514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_ESCAPE_ANALYSIS: 11844514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11854514f5e3Sopenharmony_ci if (ret) { 11864514f5e3Sopenharmony_ci SetEnableEscapeAnalysis(argBool); 11874514f5e3Sopenharmony_ci } else { 11884514f5e3Sopenharmony_ci return false; 11894514f5e3Sopenharmony_ci } 11904514f5e3Sopenharmony_ci break; 11914514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_ESCAPE_ANALYSIS: 11924514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 11934514f5e3Sopenharmony_ci if (ret) { 11944514f5e3Sopenharmony_ci SetEnableTraceEscapeAnalysis(argBool); 11954514f5e3Sopenharmony_ci } else { 11964514f5e3Sopenharmony_ci return false; 11974514f5e3Sopenharmony_ci } 11984514f5e3Sopenharmony_ci break; 11994514f5e3Sopenharmony_ci case OPTION_COMPILER_OPT_INDUCTION_VARIABLE: 12004514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12014514f5e3Sopenharmony_ci if (ret) { 12024514f5e3Sopenharmony_ci SetEnableInductionVariableAnalysis(argBool); 12034514f5e3Sopenharmony_ci } else { 12044514f5e3Sopenharmony_ci return false; 12054514f5e3Sopenharmony_ci } 12064514f5e3Sopenharmony_ci break; 12074514f5e3Sopenharmony_ci case OPTION_COMPILER_TRACE_INDUCTION_VARIABLE: 12084514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12094514f5e3Sopenharmony_ci if (ret) { 12104514f5e3Sopenharmony_ci SetEnableTraceInductionVariableAnalysis(argBool); 12114514f5e3Sopenharmony_ci } else { 12124514f5e3Sopenharmony_ci return false; 12134514f5e3Sopenharmony_ci } 12144514f5e3Sopenharmony_ci break; 12154514f5e3Sopenharmony_ci case OPTION_COMPILER_BASELINEJIT_HOTNESS_THRESHOLD: 12164514f5e3Sopenharmony_ci ret = ParseUint32Param("compiler-baselinejit-hotness-threshold", &argUint32); 12174514f5e3Sopenharmony_ci if (ret) { 12184514f5e3Sopenharmony_ci uint16_t val = argUint32 > std::numeric_limits<uint16_t>::max() ? 12194514f5e3Sopenharmony_ci std::numeric_limits<uint16_t>::max() : static_cast<uint16_t>(argUint32); 12204514f5e3Sopenharmony_ci SetBaselineJitHotnessThreshold(val); 12214514f5e3Sopenharmony_ci } else { 12224514f5e3Sopenharmony_ci return false; 12234514f5e3Sopenharmony_ci } 12244514f5e3Sopenharmony_ci break; 12254514f5e3Sopenharmony_ci case OPTION_COMPILER_MEMORY_ANALYSIS: 12264514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12274514f5e3Sopenharmony_ci if (ret) { 12284514f5e3Sopenharmony_ci SetEnableMemoryAnalysis(argBool); 12294514f5e3Sopenharmony_ci } else { 12304514f5e3Sopenharmony_ci return false; 12314514f5e3Sopenharmony_ci } 12324514f5e3Sopenharmony_ci break; 12334514f5e3Sopenharmony_ci case OPTION_COMPILER_CHECK_PGO_VERSION: 12344514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12354514f5e3Sopenharmony_ci if (ret) { 12364514f5e3Sopenharmony_ci SetCheckPgoVersion(argBool); 12374514f5e3Sopenharmony_ci } else { 12384514f5e3Sopenharmony_ci return false; 12394514f5e3Sopenharmony_ci } 12404514f5e3Sopenharmony_ci break; 12414514f5e3Sopenharmony_ci case OPTION_COMPILER_FORCE_BASELINEJIT_COMPILE_MAIN: 12424514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12434514f5e3Sopenharmony_ci if (ret) { 12444514f5e3Sopenharmony_ci SetForceBaselineCompileMain(argBool); 12454514f5e3Sopenharmony_ci } else { 12464514f5e3Sopenharmony_ci return false; 12474514f5e3Sopenharmony_ci } 12484514f5e3Sopenharmony_ci break; 12494514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_JIT_FAST_COMPILE: 12504514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12514514f5e3Sopenharmony_ci if (ret) { 12524514f5e3Sopenharmony_ci SetEnableJitFastCompile(argBool); 12534514f5e3Sopenharmony_ci } else { 12544514f5e3Sopenharmony_ci return false; 12554514f5e3Sopenharmony_ci } 12564514f5e3Sopenharmony_ci break; 12574514f5e3Sopenharmony_ci case OPTION_ASYNC_LOAD_ABC: 12584514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12594514f5e3Sopenharmony_ci if (ret) { 12604514f5e3Sopenharmony_ci SetAsyncLoadAbc(argBool); 12614514f5e3Sopenharmony_ci } else { 12624514f5e3Sopenharmony_ci return false; 12634514f5e3Sopenharmony_ci } 12644514f5e3Sopenharmony_ci break; 12654514f5e3Sopenharmony_ci case OPTION_ASYNC_LOAD_ABC_TEST: 12664514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12674514f5e3Sopenharmony_ci if (ret) { 12684514f5e3Sopenharmony_ci SetAsyncLoadAbcTest(argBool); 12694514f5e3Sopenharmony_ci } else { 12704514f5e3Sopenharmony_ci return false; 12714514f5e3Sopenharmony_ci } 12724514f5e3Sopenharmony_ci break; 12734514f5e3Sopenharmony_ci case OPTION_ENABLE_JITFORT: 12744514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12754514f5e3Sopenharmony_ci if (ret) { 12764514f5e3Sopenharmony_ci SetEnableJitFort(argBool); 12774514f5e3Sopenharmony_ci } else { 12784514f5e3Sopenharmony_ci return false; 12794514f5e3Sopenharmony_ci } 12804514f5e3Sopenharmony_ci break; 12814514f5e3Sopenharmony_ci case OPTION_CODESIGN_DISABLE: 12824514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12834514f5e3Sopenharmony_ci if (ret) { 12844514f5e3Sopenharmony_ci SetDisableCodeSign(argBool); 12854514f5e3Sopenharmony_ci } else { 12864514f5e3Sopenharmony_ci return false; 12874514f5e3Sopenharmony_ci } 12884514f5e3Sopenharmony_ci break; 12894514f5e3Sopenharmony_ci case OPTION_ENABLE_ASYNC_COPYTOFORT: 12904514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12914514f5e3Sopenharmony_ci if (ret) { 12924514f5e3Sopenharmony_ci SetEnableAsyncCopyToFort(argBool); 12934514f5e3Sopenharmony_ci } else { 12944514f5e3Sopenharmony_ci return false; 12954514f5e3Sopenharmony_ci } 12964514f5e3Sopenharmony_ci break; 12974514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_CONCURRENT: 12984514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 12994514f5e3Sopenharmony_ci if (ret) { 13004514f5e3Sopenharmony_ci SetConcurrentCompile(argBool); 13014514f5e3Sopenharmony_ci } else { 13024514f5e3Sopenharmony_ci return false; 13034514f5e3Sopenharmony_ci } 13044514f5e3Sopenharmony_ci break; 13054514f5e3Sopenharmony_ci case OPTION_COMPILER_PGO_FORCE_DUMP: 13064514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 13074514f5e3Sopenharmony_ci if (ret) { 13084514f5e3Sopenharmony_ci SetPgoForceDump(argBool); 13094514f5e3Sopenharmony_ci } else { 13104514f5e3Sopenharmony_ci return false; 13114514f5e3Sopenharmony_ci } 13124514f5e3Sopenharmony_ci break; 13134514f5e3Sopenharmony_ci case OPTION_COMPILER_ENABLE_PGO_SPACE: 13144514f5e3Sopenharmony_ci ret = ParseBoolParam(&argBool); 13154514f5e3Sopenharmony_ci if (ret) { 13164514f5e3Sopenharmony_ci SetCompilerEnablePgoSpace(argBool); 13174514f5e3Sopenharmony_ci } else { 13184514f5e3Sopenharmony_ci return false; 13194514f5e3Sopenharmony_ci } 13204514f5e3Sopenharmony_ci break; 13214514f5e3Sopenharmony_ci default: 13224514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "Invalid option\n"; 13234514f5e3Sopenharmony_ci return false; 13244514f5e3Sopenharmony_ci } 13254514f5e3Sopenharmony_ci } 13264514f5e3Sopenharmony_ci} 13274514f5e3Sopenharmony_ci 13284514f5e3Sopenharmony_cibool JSRuntimeOptions::SetDefaultValue(char* argv) 13294514f5e3Sopenharmony_ci{ 13304514f5e3Sopenharmony_ci WasSet(optopt); 13314514f5e3Sopenharmony_ci 13324514f5e3Sopenharmony_ci if (optopt == OPTION_DEFAULT) { // unknown option 13334514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << " Invalid option \"" << argv << "\""; 13344514f5e3Sopenharmony_ci return false; 13354514f5e3Sopenharmony_ci } 13364514f5e3Sopenharmony_ci 13374514f5e3Sopenharmony_ci if (optopt >= OPTION_LAST) { // unknown argument 13384514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "getopt: \"" << argv <<"\" argument has invalid parameter value \n"; 13394514f5e3Sopenharmony_ci return false; 13404514f5e3Sopenharmony_ci } 13414514f5e3Sopenharmony_ci return true; 13424514f5e3Sopenharmony_ci} 13434514f5e3Sopenharmony_ci 13444514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseBoolParam(bool* argBool) 13454514f5e3Sopenharmony_ci{ 13464514f5e3Sopenharmony_ci if ((strcmp(optarg, "false") == 0) || (strcmp(optarg, "0") == 0)) { 13474514f5e3Sopenharmony_ci *argBool = false; 13484514f5e3Sopenharmony_ci } else { 13494514f5e3Sopenharmony_ci *argBool = true; 13504514f5e3Sopenharmony_ci } 13514514f5e3Sopenharmony_ci return true; 13524514f5e3Sopenharmony_ci} 13534514f5e3Sopenharmony_ci 13544514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseDoubleParam(const std::string &option, double *argDouble) 13554514f5e3Sopenharmony_ci{ 13564514f5e3Sopenharmony_ci *argDouble = std::stod(optarg, nullptr); 13574514f5e3Sopenharmony_ci if (errno == ERANGE) { 13584514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "getopt: \"" << option << "\" argument has invalid parameter value \"" << optarg <<"\"\n"; 13594514f5e3Sopenharmony_ci return false; 13604514f5e3Sopenharmony_ci } 13614514f5e3Sopenharmony_ci return true; 13624514f5e3Sopenharmony_ci} 13634514f5e3Sopenharmony_ci 13644514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseIntParam(const std::string &option, int *argInt) 13654514f5e3Sopenharmony_ci{ 13664514f5e3Sopenharmony_ci if (StartsWith(optarg, "0x")) { 13674514f5e3Sopenharmony_ci const int HEX = 16; 13684514f5e3Sopenharmony_ci *argInt = std::stoi(optarg, nullptr, HEX); 13694514f5e3Sopenharmony_ci } else { 13704514f5e3Sopenharmony_ci *argInt = std::stoi(optarg); 13714514f5e3Sopenharmony_ci } 13724514f5e3Sopenharmony_ci 13734514f5e3Sopenharmony_ci if (errno == ERANGE) { 13744514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "getopt: \"" << option << "\" argument has invalid parameter value \"" << optarg <<"\"\n"; 13754514f5e3Sopenharmony_ci return false; 13764514f5e3Sopenharmony_ci } 13774514f5e3Sopenharmony_ci return true; 13784514f5e3Sopenharmony_ci} 13794514f5e3Sopenharmony_ci 13804514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseUint32Param(const std::string &option, uint32_t *argUInt32) 13814514f5e3Sopenharmony_ci{ 13824514f5e3Sopenharmony_ci if (StartsWith(optarg, "0x")) { 13834514f5e3Sopenharmony_ci const int HEX = 16; 13844514f5e3Sopenharmony_ci *argUInt32 = std::strtoull(optarg, nullptr, HEX); 13854514f5e3Sopenharmony_ci } else { 13864514f5e3Sopenharmony_ci const int DEC = 10; 13874514f5e3Sopenharmony_ci *argUInt32 = std::strtoull(optarg, nullptr, DEC); 13884514f5e3Sopenharmony_ci } 13894514f5e3Sopenharmony_ci 13904514f5e3Sopenharmony_ci if (errno == ERANGE) { 13914514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "getopt: \"" << option << "\" argument has invalid parameter value \"" << optarg <<"\"\n"; 13924514f5e3Sopenharmony_ci return false; 13934514f5e3Sopenharmony_ci } 13944514f5e3Sopenharmony_ci return true; 13954514f5e3Sopenharmony_ci} 13964514f5e3Sopenharmony_ci 13974514f5e3Sopenharmony_cibool JSRuntimeOptions::ParseUint64Param(const std::string &option, uint64_t *argUInt64) 13984514f5e3Sopenharmony_ci{ 13994514f5e3Sopenharmony_ci if (StartsWith(optarg, "0x")) { 14004514f5e3Sopenharmony_ci const int HEX = 16; 14014514f5e3Sopenharmony_ci *argUInt64 = std::strtoull(optarg, nullptr, HEX); 14024514f5e3Sopenharmony_ci } else { 14034514f5e3Sopenharmony_ci const int DEC = 10; 14044514f5e3Sopenharmony_ci *argUInt64 = std::strtoull(optarg, nullptr, DEC); 14054514f5e3Sopenharmony_ci } 14064514f5e3Sopenharmony_ci 14074514f5e3Sopenharmony_ci if (errno == ERANGE) { 14084514f5e3Sopenharmony_ci LOG_ECMA(ERROR) << "getopt: \"" << option << "\" argument has invalid parameter value \"" << optarg <<"\"\n"; 14094514f5e3Sopenharmony_ci return false; 14104514f5e3Sopenharmony_ci } 14114514f5e3Sopenharmony_ci return true; 14124514f5e3Sopenharmony_ci} 14134514f5e3Sopenharmony_ci 14144514f5e3Sopenharmony_civoid JSRuntimeOptions::ParseListArgParam(const std::string &option, arg_list_t *argListStr, std::string delimiter) 14154514f5e3Sopenharmony_ci{ 14164514f5e3Sopenharmony_ci argListStr->clear(); 14174514f5e3Sopenharmony_ci std::size_t strIndex = 0; 14184514f5e3Sopenharmony_ci std::size_t pos = option.find_first_of(delimiter, strIndex); 14194514f5e3Sopenharmony_ci while ((pos < option.size()) && (pos > strIndex)) { 14204514f5e3Sopenharmony_ci argListStr->push_back(option.substr(strIndex, pos - strIndex)); 14214514f5e3Sopenharmony_ci strIndex = pos; 14224514f5e3Sopenharmony_ci strIndex = option.find_first_not_of(delimiter, strIndex); 14234514f5e3Sopenharmony_ci pos = option.find_first_of(delimiter, strIndex); 14244514f5e3Sopenharmony_ci } 14254514f5e3Sopenharmony_ci if (pos > strIndex) { 14264514f5e3Sopenharmony_ci argListStr->push_back(option.substr(strIndex, pos - strIndex)); 14274514f5e3Sopenharmony_ci } 14284514f5e3Sopenharmony_ci return; 14294514f5e3Sopenharmony_ci} 14304514f5e3Sopenharmony_ci 14314514f5e3Sopenharmony_civoid JSRuntimeOptions::BindCPUCoreForTargetCompilation() 14324514f5e3Sopenharmony_ci{ 14334514f5e3Sopenharmony_ci if (!deviceIsScreenOff_ || deviceThermalLevel_ > 0) { 14344514f5e3Sopenharmony_ci BindSmallCpuCore(); 14354514f5e3Sopenharmony_ci } else { 14364514f5e3Sopenharmony_ci BindMidCpuCore(); 14374514f5e3Sopenharmony_ci } 14384514f5e3Sopenharmony_ci} 14394514f5e3Sopenharmony_ci 14404514f5e3Sopenharmony_civoid JSRuntimeOptions::SetOptionsForTargetCompilation() 14414514f5e3Sopenharmony_ci{ 14424514f5e3Sopenharmony_ci if (IsTargetCompilerMode()) { 14434514f5e3Sopenharmony_ci SetTargetTriple("aarch64-unknown-linux-gnu"); 14444514f5e3Sopenharmony_ci SetMaxAotMethodSize(MAX_APP_COMPILE_METHOD_SIZE); 14454514f5e3Sopenharmony_ci SetEnableOptTrackField(false); 14464514f5e3Sopenharmony_ci SetEnableOptInlining(false); 14474514f5e3Sopenharmony_ci SetEnableArrayBoundsCheckElimination(false); 14484514f5e3Sopenharmony_ci if (IsPartialCompilerMode()) { 14494514f5e3Sopenharmony_ci SetEnableOptPGOType(true); 14504514f5e3Sopenharmony_ci if (IsPGOProfilerPathEmpty()) { 14514514f5e3Sopenharmony_ci LOG_ECMA(DEBUG) << "no pgo profile file in partial mode!"; 14524514f5e3Sopenharmony_ci } 14534514f5e3Sopenharmony_ci } else { 14544514f5e3Sopenharmony_ci SetEnableOptPGOType(false); 14554514f5e3Sopenharmony_ci SetPGOProfilerPath(""); 14564514f5e3Sopenharmony_ci } 14574514f5e3Sopenharmony_ci BindCPUCoreForTargetCompilation(); 14584514f5e3Sopenharmony_ci } 14594514f5e3Sopenharmony_ci if (IsCompilerPipelineHostAOT()) { 14604514f5e3Sopenharmony_ci SetTargetTriple("aarch64-unknown-linux-gnu"); 14614514f5e3Sopenharmony_ci SetMaxAotMethodSize(MAX_APP_COMPILE_METHOD_SIZE); 14624514f5e3Sopenharmony_ci SetEnableOptTrackField(false); 14634514f5e3Sopenharmony_ci SetEnableOptInlining(false); 14644514f5e3Sopenharmony_ci SetEnableArrayBoundsCheckElimination(false); 14654514f5e3Sopenharmony_ci SetEnableOptPGOType(true); 14664514f5e3Sopenharmony_ci SetFastAOTCompileMode(true); 14674514f5e3Sopenharmony_ci SetOptLevel(DEFAULT_OPT_LEVEL); 14684514f5e3Sopenharmony_ci SetCompilerEnableLiteCG(true); 14694514f5e3Sopenharmony_ci SetEnableLoweringBuiltin(false); 14704514f5e3Sopenharmony_ci } 14714514f5e3Sopenharmony_ci} 14724514f5e3Sopenharmony_ci} 1473