2021-10-19 03:55:00 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2021 Huawei Device Co., Ltd.
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef ECMASCRIPT_JS_RUNTIME_OPTIONS_H_
|
|
|
|
#define ECMASCRIPT_JS_RUNTIME_OPTIONS_H_
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
#include <optional>
|
|
|
|
#include <string>
|
|
|
|
#include <string_view>
|
|
|
|
#include <vector>
|
|
|
|
|
2022-08-17 08:53:35 +00:00
|
|
|
#include "ecmascript/compiler/bc_call_signature.h"
|
|
|
|
#include "ecmascript/mem/mem_common.h"
|
|
|
|
|
2021-10-19 03:55:00 +00:00
|
|
|
// namespace panda {
|
|
|
|
namespace panda::ecmascript {
|
2022-09-20 08:00:16 +00:00
|
|
|
using arg_list_t = std::vector<std::string>;
|
2022-01-07 09:36:04 +00:00
|
|
|
enum ArkProperties {
|
2023-04-23 01:52:14 +00:00
|
|
|
DEFAULT = -1, // default value 1000001011100 -> 0x105c
|
2022-01-07 09:36:04 +00:00
|
|
|
OPTIONAL_LOG = 1,
|
|
|
|
GC_STATS_PRINT = 1 << 1,
|
2023-01-29 03:40:13 +00:00
|
|
|
PARALLEL_GC = 1 << 2, // default enable
|
|
|
|
CONCURRENT_MARK = 1 << 3, // default enable
|
|
|
|
CONCURRENT_SWEEP = 1 << 4, // default enable
|
2022-01-26 02:08:18 +00:00
|
|
|
THREAD_CHECK = 1 << 5,
|
2023-01-29 03:40:13 +00:00
|
|
|
ENABLE_ARKTOOLS = 1 << 6, // default enable
|
2022-06-07 08:44:17 +00:00
|
|
|
ENABLE_SNAPSHOT_SERIALIZE = 1 << 7,
|
|
|
|
ENABLE_SNAPSHOT_DESERIALIZE = 1 << 8,
|
2022-09-23 02:18:02 +00:00
|
|
|
EXCEPTION_BACKTRACE = 1 << 9,
|
2023-01-17 13:12:48 +00:00
|
|
|
GLOBAL_OBJECT_LEAK_CHECK = 1 << 10,
|
|
|
|
GLOBAL_PRIMITIVE_LEAK_CHECK = 1 << 11,
|
2023-01-29 03:40:13 +00:00
|
|
|
ENABLE_IDLE_GC = 1 << 12, // default enable
|
2023-06-14 02:49:31 +00:00
|
|
|
CPU_PROFILER_COLD_START_MAIN_THREAD = 1 << 13,
|
2023-01-31 07:38:31 +00:00
|
|
|
ENABLE_CPU_PROFILER_VM_TAG = 1 << 14,
|
2023-04-23 01:52:14 +00:00
|
|
|
ENABLE_GC_TRACER = 1 << 15,
|
2023-06-14 02:49:31 +00:00
|
|
|
CPU_PROFILER_COLD_START_WORKER_THREAD = 1 << 16,
|
|
|
|
CPU_PROFILER_ANY_TIME_MAIN_THREAD = 1 << 17,
|
|
|
|
CPU_PROFILER_ANY_TIME_WORKER_THREAD = 1 << 18
|
2022-01-07 09:36:04 +00:00
|
|
|
};
|
|
|
|
|
2022-03-10 09:34:02 +00:00
|
|
|
// asm interpreter control parsed option
|
|
|
|
struct AsmInterParsedOption {
|
|
|
|
int handleStart {-1};
|
|
|
|
int handleEnd {-1};
|
|
|
|
bool enableAsm {false};
|
|
|
|
};
|
|
|
|
|
2022-11-22 10:54:39 +00:00
|
|
|
extern const std::string PUBLIC_API COMMON_HELP_HEAD_MSG;
|
|
|
|
extern const std::string PUBLIC_API STUB_HELP_HEAD_MSG;
|
2023-02-22 09:36:20 +00:00
|
|
|
extern const std::string PUBLIC_API COMPILER_HELP_HEAD_MSG;
|
2022-11-22 10:54:39 +00:00
|
|
|
extern const std::string PUBLIC_API HELP_OPTION_MSG;
|
2022-09-20 08:00:16 +00:00
|
|
|
|
|
|
|
enum CommandValues {
|
|
|
|
OPTION_DEFAULT,
|
|
|
|
OPTION_ENABLE_ARK_TOOLS,
|
|
|
|
OPTION_STUB_FILE,
|
|
|
|
OPTION_ENABLE_FORCE_GC,
|
|
|
|
OPTION_FORCE_FULL_GC,
|
|
|
|
OPTION_ARK_PROPERTIES,
|
2023-01-29 03:40:13 +00:00
|
|
|
OPTION_ARK_BUNDLENAME,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_GC_THREADNUM,
|
2023-04-21 06:11:22 +00:00
|
|
|
OPTION_GC_LONG_PAUSED_TIME,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_AOT_FILE,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_TARGET_TRIPLE,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_ASM_OPT_LEVEL,
|
|
|
|
OPTION_RELOCATION_MODE,
|
2023-04-21 06:11:22 +00:00
|
|
|
OPTION_MAX_UNMOVABLE_SPACE,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_ENABLE_ASM_INTERPRETER,
|
2023-04-24 03:43:21 +00:00
|
|
|
OPTION_ENABLE_BUILTINS_LAZY,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_ASM_OPCODE_DISABLE_RANGE,
|
|
|
|
OPTION_SERIALIZER_BUFFER_SIZE_LIMIT,
|
|
|
|
OPTION_HEAP_SIZE_LIMIT,
|
|
|
|
OPTION_ENABLE_IC,
|
|
|
|
OPTION_ICU_DATA_PATH,
|
|
|
|
OPTION_STARTUP_TIME,
|
|
|
|
OPTION_COMPILER_LOG_OPT,
|
2022-09-22 08:01:36 +00:00
|
|
|
OPTION_COMPILER_LOG_METHODS,
|
2023-01-30 06:39:03 +00:00
|
|
|
OPTION_COMPILER_TYPE_THRESHOLD,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_ENABLE_RUNTIME_STAT,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_ASSERT_TYPES,
|
2023-06-09 15:36:37 +00:00
|
|
|
OPTION_COMPILER_PRINT_TYPE_INFO,
|
2022-11-17 11:12:49 +00:00
|
|
|
OPTION_COMPILER_LOG_SNAPSHOT,
|
2022-11-10 09:17:49 +00:00
|
|
|
OPTION_COMPILER_LOG_TIME,
|
2023-04-21 06:11:22 +00:00
|
|
|
OPTION_ENABLE_WORKER,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_BUILTINS_DTS,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_TRACE_BC,
|
|
|
|
OPTION_COMPILER_TRACE_DEOPT,
|
2023-05-10 13:22:15 +00:00
|
|
|
OPTION_COMPILER_TRACE_INLINE,
|
|
|
|
OPTION_COMPILER_MAX_INLINE_BYTECODES,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_DEOPT_THRESHOLD,
|
|
|
|
OPTION_COMPILER_STRESS_DEOPT,
|
|
|
|
OPTION_COMPILER_OPT_CODE_PROFILER,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_LOG_LEVEL,
|
|
|
|
OPTION_LOG_DEBUG,
|
|
|
|
OPTION_LOG_INFO,
|
|
|
|
OPTION_LOG_WARNING,
|
|
|
|
OPTION_LOG_ERROR,
|
|
|
|
OPTION_LOG_FATAL,
|
|
|
|
OPTION_LOG_COMPONENTS,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_OPT_MAX_METHOD,
|
2023-05-05 06:53:42 +00:00
|
|
|
OPTION_COMPILER_MODULE_METHODS,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_ENTRY_POINT,
|
|
|
|
OPTION_MERGE_ABC,
|
2023-12-19 12:41:49 +00:00
|
|
|
OPTION_ENABLE_CONTEXT,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_OPT_TYPE_LOWERING,
|
|
|
|
OPTION_COMPILER_OPT_EARLY_ELIMINATION,
|
|
|
|
OPTION_COMPILER_OPT_LATER_ELIMINATION,
|
|
|
|
OPTION_COMPILER_OPT_VALUE_NUMBERING,
|
|
|
|
OPTION_COMPILER_OPT_INLINING,
|
|
|
|
OPTION_COMPILER_OPT_PGOTYPE,
|
2023-07-12 10:42:42 +00:00
|
|
|
OPTION_COMPILER_OPT_TRACK_FIELD,
|
2023-04-27 11:21:32 +00:00
|
|
|
OPTION_COMPILER_OPT_GLOBAL_TYPEINFER,
|
2022-09-20 08:00:16 +00:00
|
|
|
OPTION_HELP,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_COMPILER_PGO_PROFILER_PATH,
|
|
|
|
OPTION_COMPILER_PGO_HOTNESS_THRESHOLD,
|
2023-09-22 09:16:17 +00:00
|
|
|
OPTION_COMPILER_PGO_SAVE_MIN_INTERVAL,
|
2022-10-17 09:02:45 +00:00
|
|
|
OPTION_ENABLE_PGO_PROFILER,
|
2022-10-11 06:32:15 +00:00
|
|
|
OPTION_OPTIONS,
|
2023-04-07 08:51:43 +00:00
|
|
|
OPTION_PRINT_EXECUTE_TIME,
|
|
|
|
OPTION_COMPILER_VERIFY_VTABLE,
|
|
|
|
OPTION_COMPILER_SELECT_METHODS,
|
2023-05-24 09:39:27 +00:00
|
|
|
OPTION_COMPILER_SKIP_METHODS,
|
|
|
|
OPTION_TARGET_COMPILER_MODE,
|
|
|
|
OPTION_HAP_PATH,
|
|
|
|
OPTION_HAP_ABC_OFFSET,
|
2023-07-02 07:54:40 +00:00
|
|
|
OPTION_HAP_ABC_SIZE,
|
2023-07-07 03:54:42 +00:00
|
|
|
OPTION_COMPILER_NOCHECK,
|
2023-07-10 03:26:49 +00:00
|
|
|
OPTION_FAST_AOT_COMPILE_MODE,
|
|
|
|
OPTION_COMPILER_OPT_LOOP_PEELING,
|
2023-08-28 06:11:40 +00:00
|
|
|
OPTION_COMPILER_OPT_ON_HEAP_CHECK,
|
2023-09-05 07:09:21 +00:00
|
|
|
OPTION_COMPILER_PKG_INFO,
|
|
|
|
OPTION_COMPILER_EXTERNAL_PKG_INFO,
|
2023-09-27 06:36:04 +00:00
|
|
|
OPTION_COMPILER_ENABLE_EXTERNAL_PKG,
|
2023-08-03 07:22:51 +00:00
|
|
|
OPTION_COMPILER_OPT_ARRAY_BOUNDS_CHECK_ELIMINATION,
|
2023-09-14 09:17:53 +00:00
|
|
|
OPTION_COMPILER_OPT_LOOP_INVARIANT_CODE_MOTION,
|
2023-09-13 07:02:07 +00:00
|
|
|
OPTION_COMPILER_OPT_CONSTANT_FOLDING,
|
2023-10-23 01:10:20 +00:00
|
|
|
OPTION_COMPILER_ENABLE_LEXENV_SPECIALIZATION,
|
2023-10-24 12:36:58 +00:00
|
|
|
OPTION_COMPILER_TRACE_INSTRUCTION_COMBINE,
|
|
|
|
OPTION_COMPILER_TRACE_VALUE_NUMBERING,
|
|
|
|
OPTION_COMPILER_OPT_INSTRUCTIONE_COMBINE,
|
|
|
|
OPTION_COMPILER_OPT_NEW_VALUE_NUMBERING,
|
2023-11-09 09:25:34 +00:00
|
|
|
OPTION_COMPILER_ENABLE_NATIVE_INLINE,
|
2023-11-16 08:11:50 +00:00
|
|
|
OPTION_COMPILER_ENABLE_LOWERING_BUILTIN,
|
2023-11-27 12:16:00 +00:00
|
|
|
OPTION_COMPILER_ENABLE_LITECG,
|
2023-12-09 01:13:27 +00:00
|
|
|
OPTION_COMPILER_ENABLE_JIT,
|
2023-12-09 08:14:08 +00:00
|
|
|
OPTION_COMPILER_JIT_HOTNESS_THRESHOLD,
|
|
|
|
OPTION_COMPILER_FORCE_JIT_COMPILE_MAIN,
|
2023-12-09 01:13:27 +00:00
|
|
|
OPTION_COMPILER_TRACE_JIT,
|
2023-12-18 07:57:47 +00:00
|
|
|
OPTION_ENABLE_ELEMENTSKIND,
|
2023-12-27 14:12:51 +00:00
|
|
|
OPTION_COMPILER_LOOP_HOIST_PROFILER,
|
2022-09-20 08:00:16 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class PUBLIC_API JSRuntimeOptions {
|
2021-10-19 03:55:00 +00:00
|
|
|
public:
|
2023-01-03 02:32:21 +00:00
|
|
|
JSRuntimeOptions() {}
|
2021-10-19 03:55:00 +00:00
|
|
|
~JSRuntimeOptions() = default;
|
|
|
|
DEFAULT_COPY_SEMANTIC(JSRuntimeOptions);
|
|
|
|
DEFAULT_MOVE_SEMANTIC(JSRuntimeOptions);
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool ParseCommand(const int argc, const char **argv);
|
|
|
|
bool SetDefaultValue(char* argv);
|
2021-10-19 03:55:00 +00:00
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableArkTools() const
|
2021-10-19 03:55:00 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (enableArkTools_) ||
|
|
|
|
((static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_ARKTOOLS) != 0);
|
2021-10-19 03:55:00 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
void SetEnableArkTools(bool value) {
|
|
|
|
enableArkTools_ = value;
|
2021-10-19 03:55:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetEnableArkTools() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_ENABLE_ARK_TOOLS);
|
2021-10-19 03:55:00 +00:00
|
|
|
}
|
|
|
|
|
2022-04-28 01:16:30 +00:00
|
|
|
bool IsEnableRuntimeStat() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return enableRuntimeStat_;
|
2022-04-28 01:16:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableRuntimeStat(bool value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
enableRuntimeStat_ = value;
|
2022-04-28 01:16:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetEnableRuntimeStat() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_ENABLE_RUNTIME_STAT);
|
2022-04-28 01:16:30 +00:00
|
|
|
}
|
|
|
|
|
2022-05-16 11:38:24 +00:00
|
|
|
std::string GetStubFile() const
|
2021-10-27 06:19:18 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return stubFile_;
|
2021-10-27 03:06:05 +00:00
|
|
|
}
|
|
|
|
|
2022-05-16 11:38:24 +00:00
|
|
|
void SetStubFile(std::string value)
|
2021-10-27 06:19:18 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
stubFile_ = std::move(value);
|
2021-10-27 03:06:05 +00:00
|
|
|
}
|
|
|
|
|
2023-09-05 07:09:21 +00:00
|
|
|
void SetCompilerPkgJsonInfo(std::string pkgJsonInfo)
|
|
|
|
{
|
|
|
|
compilerPkgInfo_ = std::move(pkgJsonInfo);
|
|
|
|
}
|
|
|
|
|
|
|
|
const std::string &GetCompilerPkgJsonInfo() const
|
|
|
|
{
|
|
|
|
return compilerPkgInfo_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetCompilerExternalPkgJsonInfo(std::string pkgJsonInfo)
|
|
|
|
{
|
|
|
|
compilerExternalPkgInfo_ = std::move(pkgJsonInfo);
|
|
|
|
}
|
|
|
|
|
|
|
|
const std::string &GetCompilerExternalPkgJsonInfo() const
|
|
|
|
{
|
|
|
|
return compilerExternalPkgInfo_;
|
|
|
|
}
|
|
|
|
|
2023-09-27 06:36:04 +00:00
|
|
|
void SetCompilerEnableExternalPkg(bool compilerEnableExternalPkg)
|
|
|
|
{
|
|
|
|
compilerEnableExternalPkg_ = compilerEnableExternalPkg;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetCompilerEnableExternalPkg() const
|
|
|
|
{
|
|
|
|
return compilerEnableExternalPkg_;
|
|
|
|
}
|
|
|
|
|
2022-05-16 11:38:24 +00:00
|
|
|
bool WasStubFileSet() const
|
2021-10-27 06:19:18 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_STUB_FILE);
|
2022-02-23 08:50:04 +00:00
|
|
|
}
|
|
|
|
|
2022-10-15 07:55:29 +00:00
|
|
|
void SetEnableAOT(bool value)
|
|
|
|
{
|
|
|
|
enableAOT_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetEnableAOT() const
|
|
|
|
{
|
|
|
|
return enableAOT_;
|
|
|
|
}
|
|
|
|
|
2022-02-23 08:50:04 +00:00
|
|
|
std::string GetAOTOutputFile() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return aotOutputFile_;
|
2022-02-23 08:50:04 +00:00
|
|
|
}
|
|
|
|
|
2023-02-21 11:31:52 +00:00
|
|
|
void SetAOTOutputFile(const std::string& value)
|
2022-02-23 08:50:04 +00:00
|
|
|
{
|
2023-02-21 11:31:52 +00:00
|
|
|
aotOutputFile_ = panda::os::file::File::GetExtendedFilePath(value);
|
2022-02-23 08:50:04 +00:00
|
|
|
}
|
|
|
|
|
2022-06-08 06:43:48 +00:00
|
|
|
bool WasAOTOutputFileSet() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_AOT_FILE);
|
2022-06-08 06:43:48 +00:00
|
|
|
}
|
|
|
|
|
2022-04-25 12:08:55 +00:00
|
|
|
std::string GetTargetTriple() const
|
2022-02-23 08:50:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return targetTriple_;
|
2022-02-23 08:50:04 +00:00
|
|
|
}
|
|
|
|
|
2022-04-25 12:08:55 +00:00
|
|
|
void SetTargetTriple(std::string value)
|
2022-02-23 08:50:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
targetTriple_ = std::move(value);
|
2022-04-25 12:08:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t GetOptLevel() const
|
2022-02-23 08:50:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return asmOptLevel_;
|
2022-02-23 08:50:04 +00:00
|
|
|
}
|
|
|
|
|
2022-04-25 12:08:55 +00:00
|
|
|
void SetOptLevel(size_t value)
|
2022-02-23 08:50:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
asmOptLevel_ = value;
|
2021-10-27 03:06:05 +00:00
|
|
|
}
|
|
|
|
|
2022-06-17 02:22:26 +00:00
|
|
|
size_t GetRelocMode() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return relocationMode_;
|
2022-06-17 02:22:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetRelocMode(size_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
relocationMode_ = value;
|
2022-06-17 02:22:26 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableForceGC() const
|
2021-12-17 09:18:10 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return enableForceGc_;
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableForceGC(bool value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
enableForceGc_ = value;
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool ForceFullGC() const
|
2021-12-17 09:18:10 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return forceFullGc_;
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
2022-02-16 07:34:31 +00:00
|
|
|
void SetForceFullGC(bool value)
|
2021-12-17 09:18:10 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
forceFullGc_ = value;
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
2022-05-27 09:56:07 +00:00
|
|
|
void SetGcThreadNum(size_t num)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
gcThreadNum_ = num;
|
2022-05-27 09:56:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t GetGcThreadNum() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return gcThreadNum_;
|
2022-05-27 09:56:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLongPauseTime(size_t time)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
longPauseTime_ = time;
|
2022-05-27 09:56:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t GetLongPauseTime() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return longPauseTime_;
|
2022-05-27 09:56:07 +00:00
|
|
|
}
|
|
|
|
|
2022-01-07 09:36:04 +00:00
|
|
|
void SetArkProperties(int prop)
|
2021-12-17 09:18:10 +00:00
|
|
|
{
|
2022-01-07 09:36:04 +00:00
|
|
|
if (prop != ArkProperties::DEFAULT) {
|
2022-09-20 08:00:16 +00:00
|
|
|
arkProperties_ = prop;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
2023-01-29 03:40:13 +00:00
|
|
|
void SetArkBundleName(std::string bundleName)
|
|
|
|
{
|
|
|
|
if (bundleName != "") {
|
|
|
|
arkBundleName_ = bundleName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-07 09:36:04 +00:00
|
|
|
int GetDefaultProperties()
|
2021-12-17 09:18:10 +00:00
|
|
|
{
|
2022-11-25 09:08:52 +00:00
|
|
|
return ArkProperties::PARALLEL_GC | ArkProperties::CONCURRENT_MARK | ArkProperties::CONCURRENT_SWEEP |
|
2023-01-11 09:11:26 +00:00
|
|
|
ArkProperties::ENABLE_ARKTOOLS | ArkProperties::ENABLE_IDLE_GC;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int GetArkProperties()
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return arkProperties_;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
2023-01-29 03:40:13 +00:00
|
|
|
std::string GetArkBundleName() const
|
|
|
|
{
|
|
|
|
return arkBundleName_;
|
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableOptionalLog() const
|
2022-01-07 09:36:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::OPTIONAL_LOG) != 0;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableGCStatsPrint() const
|
2022-01-07 09:36:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::GC_STATS_PRINT) != 0;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableParallelGC() const
|
2022-01-07 09:36:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::PARALLEL_GC) != 0;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableConcurrentMark() const
|
2022-01-07 09:36:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CONCURRENT_MARK) != 0;
|
2022-01-07 09:36:04 +00:00
|
|
|
}
|
|
|
|
|
2022-09-23 02:18:02 +00:00
|
|
|
bool EnableExceptionBacktrace() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::EXCEPTION_BACKTRACE) != 0;
|
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableConcurrentSweep() const
|
2022-01-07 09:36:04 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CONCURRENT_SWEEP) != 0;
|
2021-12-17 09:18:10 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableThreadCheck() const
|
2022-01-26 02:08:18 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::THREAD_CHECK) != 0;
|
2022-02-22 12:16:40 +00:00
|
|
|
}
|
|
|
|
|
2023-01-11 09:11:26 +00:00
|
|
|
bool EnableIdleGC() const
|
|
|
|
{
|
2023-11-29 10:25:48 +00:00
|
|
|
return false;
|
2023-01-11 09:11:26 +00:00
|
|
|
}
|
|
|
|
|
2023-04-23 01:52:14 +00:00
|
|
|
bool EnableGCTracer() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_GC_TRACER) != 0;
|
|
|
|
}
|
|
|
|
|
2023-01-17 13:12:48 +00:00
|
|
|
bool EnableGlobalObjectLeakCheck() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::GLOBAL_OBJECT_LEAK_CHECK) != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableGlobalPrimitiveLeakCheck() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::GLOBAL_PRIMITIVE_LEAK_CHECK) != 0;
|
|
|
|
}
|
|
|
|
|
2023-01-12 07:29:25 +00:00
|
|
|
bool EnableGlobalLeakCheck() const
|
|
|
|
{
|
2023-01-17 13:12:48 +00:00
|
|
|
return EnableGlobalObjectLeakCheck() || EnableGlobalPrimitiveLeakCheck();
|
2023-01-12 07:29:25 +00:00
|
|
|
}
|
|
|
|
|
2023-06-14 02:49:31 +00:00
|
|
|
bool EnableCpuProfilerColdStartMainThread() const
|
2023-01-29 03:40:13 +00:00
|
|
|
{
|
2023-06-14 02:49:31 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CPU_PROFILER_COLD_START_MAIN_THREAD) != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableCpuProfilerColdStartWorkerThread() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CPU_PROFILER_COLD_START_WORKER_THREAD) != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableCpuProfilerAnyTimeMainThread() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CPU_PROFILER_ANY_TIME_MAIN_THREAD) != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableCpuProfilerAnyTimeWorkerThread() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CPU_PROFILER_ANY_TIME_WORKER_THREAD) != 0;
|
2023-01-29 03:40:13 +00:00
|
|
|
}
|
|
|
|
|
2023-01-31 07:38:31 +00:00
|
|
|
bool EnableCpuProfilerVMTag() const
|
|
|
|
{
|
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_CPU_PROFILER_VM_TAG) != 0;
|
|
|
|
}
|
|
|
|
|
2023-01-12 07:29:25 +00:00
|
|
|
bool IsStartGlobalLeakCheck() const
|
|
|
|
{
|
|
|
|
return startGlobalLeakCheck_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SwitchStartGlobalLeakCheck()
|
|
|
|
{
|
|
|
|
startGlobalLeakCheck_ = !startGlobalLeakCheck_;
|
|
|
|
}
|
|
|
|
|
2022-06-07 08:44:17 +00:00
|
|
|
bool EnableSnapshotSerialize() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_SNAPSHOT_SERIALIZE) != 0;
|
2022-06-07 08:44:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableSnapshotDeserialize() const
|
|
|
|
{
|
2022-10-10 02:08:43 +00:00
|
|
|
if (WIN_OR_MAC_OR_IOS_PLATFORM) {
|
2022-06-07 08:44:17 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_SNAPSHOT_DESERIALIZE) != 0;
|
2022-06-07 08:44:17 +00:00
|
|
|
}
|
|
|
|
|
2023-02-07 08:33:15 +00:00
|
|
|
void DisableReportModuleResolvingFailure()
|
|
|
|
{
|
|
|
|
reportModuleResolvingFailure_ = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool EnableReportModuleResolvingFailure() const
|
|
|
|
{
|
|
|
|
return reportModuleResolvingFailure_;
|
|
|
|
}
|
|
|
|
|
2022-05-27 09:56:07 +00:00
|
|
|
bool WasSetMaxNonmovableSpaceCapacity() const
|
2022-02-22 12:16:40 +00:00
|
|
|
{
|
2023-04-21 06:11:22 +00:00
|
|
|
return WasOptionSet(OPTION_MAX_UNMOVABLE_SPACE);
|
2022-02-22 12:16:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t MaxNonmovableSpaceCapacity() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return maxNonmovableSpaceCapacity_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetMaxNonmovableSpaceCapacity(uint32_t value)
|
|
|
|
{
|
|
|
|
maxNonmovableSpaceCapacity_ = value;
|
2022-02-22 12:16:40 +00:00
|
|
|
}
|
|
|
|
|
2022-05-16 02:20:46 +00:00
|
|
|
void SetEnableAsmInterpreter(bool value)
|
2022-03-10 09:34:02 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
enableAsmInterpreter_ = value;
|
2022-05-16 02:20:46 +00:00
|
|
|
}
|
|
|
|
|
2022-06-08 06:43:48 +00:00
|
|
|
bool GetEnableAsmInterpreter() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return enableAsmInterpreter_;
|
2022-06-08 06:43:48 +00:00
|
|
|
}
|
|
|
|
|
2023-04-24 03:43:21 +00:00
|
|
|
void SetEnableBuiltinsLazy(bool value)
|
|
|
|
{
|
|
|
|
enableBuiltinsLazy_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetEnableBuiltinsLazy() const
|
|
|
|
{
|
|
|
|
return enableBuiltinsLazy_;
|
|
|
|
}
|
|
|
|
|
2022-05-16 02:20:46 +00:00
|
|
|
void SetAsmOpcodeDisableRange(std::string value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
asmOpcodeDisableRange_ = std::move(value);
|
2022-03-10 09:34:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void ParseAsmInterOption()
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
asmInterParsedOption_.enableAsm = enableAsmInterpreter_;
|
|
|
|
std::string strAsmOpcodeDisableRange = asmOpcodeDisableRange_;
|
2022-05-16 02:20:46 +00:00
|
|
|
if (strAsmOpcodeDisableRange.empty()) {
|
2022-03-10 09:34:02 +00:00
|
|
|
return;
|
|
|
|
}
|
2022-03-16 10:12:15 +00:00
|
|
|
|
2022-03-10 09:34:02 +00:00
|
|
|
// asm interpreter handle disable range
|
2022-05-16 02:20:46 +00:00
|
|
|
size_t pos = strAsmOpcodeDisableRange.find(",");
|
|
|
|
if (pos != std::string::npos) {
|
|
|
|
std::string strStart = strAsmOpcodeDisableRange.substr(0, pos);
|
|
|
|
std::string strEnd = strAsmOpcodeDisableRange.substr(pos + 1);
|
2022-12-26 10:40:19 +00:00
|
|
|
int start = strStart.empty() ? 0 : std::stoi(strStart);
|
2022-05-16 02:20:46 +00:00
|
|
|
int end = strEnd.empty() ? kungfu::BYTECODE_STUB_END_ID : std::stoi(strEnd);
|
2022-11-25 09:08:52 +00:00
|
|
|
if (start >= 0 && start < kungfu::BytecodeStubCSigns::NUM_OF_ALL_NORMAL_STUBS &&
|
|
|
|
end >= 0 && end < kungfu::BytecodeStubCSigns::NUM_OF_ALL_NORMAL_STUBS &&
|
|
|
|
start <= end) {
|
2022-05-16 02:20:46 +00:00
|
|
|
asmInterParsedOption_.handleStart = start;
|
|
|
|
asmInterParsedOption_.handleEnd = end;
|
2022-03-10 09:34:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
AsmInterParsedOption GetAsmInterParsedOption() const
|
|
|
|
{
|
|
|
|
return asmInterParsedOption_;
|
|
|
|
}
|
|
|
|
|
2022-07-27 09:11:09 +00:00
|
|
|
std::string GetCompilerLogOption() const
|
2022-04-14 08:14:34 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return compilerLogOpt_;
|
2022-04-14 08:14:34 +00:00
|
|
|
}
|
|
|
|
|
2022-07-27 09:11:09 +00:00
|
|
|
void SetCompilerLogOption(std::string value)
|
2022-04-14 08:14:34 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
compilerLogOpt_ = std::move(value);
|
2022-04-14 08:14:34 +00:00
|
|
|
}
|
|
|
|
|
2022-07-27 09:11:09 +00:00
|
|
|
bool WasSetCompilerLogOption() const
|
2022-04-14 08:14:34 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return 1ULL << static_cast<uint64_t>(OPTION_COMPILER_LOG_OPT) & wasSet_ &&
|
|
|
|
GetCompilerLogOption().find("none") == std::string::npos;
|
2022-07-27 09:11:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetMethodsListForLog() const
|
|
|
|
{
|
2022-09-22 08:01:36 +00:00
|
|
|
return compilerLogMethods_;
|
2022-07-27 09:11:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetMethodsListForLog(std::string value)
|
|
|
|
{
|
2022-09-22 08:01:36 +00:00
|
|
|
compilerLogMethods_ = std::move(value);
|
2022-07-27 09:11:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetMethodsListForLog() const
|
|
|
|
{
|
2022-09-22 08:01:36 +00:00
|
|
|
return 1ULL << static_cast<uint64_t>(OPTION_COMPILER_LOG_METHODS) & wasSet_ &&
|
2022-07-27 09:11:09 +00:00
|
|
|
GetCompilerLogOption().find("none") == std::string::npos &&
|
|
|
|
GetCompilerLogOption().find("all") == std::string::npos;
|
2022-04-14 08:14:34 +00:00
|
|
|
}
|
|
|
|
|
2022-11-17 11:12:49 +00:00
|
|
|
void SetCompilerLogSnapshot(bool value)
|
|
|
|
{
|
|
|
|
compilerLogSnapshot_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableCompilerLogSnapshot() const
|
|
|
|
{
|
|
|
|
return compilerLogSnapshot_;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetCompilerLogSnapshot() const
|
|
|
|
{
|
|
|
|
return WasOptionSet(OPTION_COMPILER_LOG_SNAPSHOT);
|
|
|
|
}
|
|
|
|
|
2022-11-10 09:17:49 +00:00
|
|
|
void SetCompilerLogTime(bool value)
|
|
|
|
{
|
|
|
|
compilerLogTime_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableCompilerLogTime() const
|
|
|
|
{
|
|
|
|
return compilerLogTime_;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetCompilerLogTime() const
|
|
|
|
{
|
|
|
|
return WasOptionSet(OPTION_COMPILER_LOG_TIME);
|
|
|
|
}
|
|
|
|
|
2022-07-12 14:05:08 +00:00
|
|
|
uint64_t GetSerializerBufferSizeLimit() const
|
2022-04-20 08:27:09 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return serializerBufferSizeLimit_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetSerializerBufferSizeLimit(uint64_t value)
|
|
|
|
{
|
|
|
|
serializerBufferSizeLimit_ = value;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t GetHeapSizeLimit() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return heapSizeLimit_;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetHeapSizeLimit(uint32_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
heapSizeLimit_ = value;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetHeapSizeLimit() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_HEAP_SIZE_LIMIT);
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
2022-06-15 03:23:16 +00:00
|
|
|
void SetIsWorker(bool isWorker)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
isWorker_ = isWorker;
|
2022-06-15 03:23:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool IsWorker() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return isWorker_;
|
2022-06-15 03:23:16 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool EnableIC() const
|
2022-04-20 08:27:09 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return enableIC_;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
void SetEnableIC(bool value)
|
2022-04-20 08:27:09 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
enableIC_ = value;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
2022-04-30 12:02:19 +00:00
|
|
|
bool WasSetEnableIC() const
|
2022-04-20 08:27:09 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_ENABLE_IC);
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetIcuDataPath() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return icuDataPath_;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetIcuDataPath(std::string value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
icuDataPath_ = std::move(value);
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetIcuDataPath() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_ICU_DATA_PATH);
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool IsStartupTime() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return startupTime_;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetStartupTime(bool value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
startupTime_ = value;
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetStartupTime() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_STARTUP_TIME);
|
2022-04-20 08:27:09 +00:00
|
|
|
}
|
|
|
|
|
2022-08-22 14:09:09 +00:00
|
|
|
bool AssertTypes() const
|
2022-06-06 11:23:59 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return assertTypes_;
|
2022-06-06 11:23:59 +00:00
|
|
|
}
|
|
|
|
|
2022-08-22 14:09:09 +00:00
|
|
|
void SetAssertTypes(bool value)
|
2022-06-06 11:23:59 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
assertTypes_ = value;
|
2022-08-22 14:09:09 +00:00
|
|
|
}
|
|
|
|
|
2023-06-09 15:36:37 +00:00
|
|
|
bool PrintTypeInfo() const
|
2022-08-22 14:09:09 +00:00
|
|
|
{
|
2023-06-09 15:36:37 +00:00
|
|
|
return printTypeInfo_;
|
2022-08-22 14:09:09 +00:00
|
|
|
}
|
|
|
|
|
2023-06-09 15:36:37 +00:00
|
|
|
void SetPrintTypeInfo(bool value)
|
2022-08-22 14:09:09 +00:00
|
|
|
{
|
2023-06-09 15:36:37 +00:00
|
|
|
printTypeInfo_ = value;
|
2022-09-20 08:00:16 +00:00
|
|
|
}
|
|
|
|
|
2023-02-21 11:31:52 +00:00
|
|
|
void SetBuiltinsDTS(const std::string& value)
|
2022-09-20 08:00:16 +00:00
|
|
|
{
|
2023-02-21 11:31:52 +00:00
|
|
|
builtinsDTS_ = panda::os::file::File::GetExtendedFilePath(value);
|
2022-06-06 11:23:59 +00:00
|
|
|
}
|
|
|
|
|
2022-07-07 07:20:02 +00:00
|
|
|
bool WasSetBuiltinsDTS() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_BUILTINS_DTS);
|
2022-07-07 07:20:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetBuiltinsDTS() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return builtinsDTS_;
|
2022-07-07 07:20:02 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 08:51:55 +00:00
|
|
|
void SetTraceBc(bool value)
|
2022-07-29 09:02:27 +00:00
|
|
|
{
|
2022-11-25 08:51:55 +00:00
|
|
|
traceBc_ = value;
|
2022-07-29 09:02:27 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 08:51:55 +00:00
|
|
|
bool IsTraceBC() const
|
2022-07-29 09:02:27 +00:00
|
|
|
{
|
2022-11-25 08:51:55 +00:00
|
|
|
return traceBc_;
|
2022-07-29 09:02:27 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 08:51:55 +00:00
|
|
|
bool WasSetTraceBc() const
|
2022-07-29 09:02:27 +00:00
|
|
|
{
|
2023-04-07 08:51:43 +00:00
|
|
|
return WasOptionSet(OPTION_COMPILER_TRACE_BC);
|
2022-07-29 09:02:27 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
std::string GetLogLevel() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logLevel_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogLevel(std::string value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logLevel_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogLevel() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_LEVEL);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogComponents() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logComponents_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogComponents(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logComponents_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogComponents() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_COMPONENTS);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogDebug() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logDebug_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogDebug(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logDebug_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogDebug() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_DEBUG);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogInfo() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logInfo_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogInfo(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logInfo_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogInfo() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_INFO);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogWarning() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logWarning_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogWarning(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logWarning_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogWarning() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_WARNING);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogError() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logError_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogError(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logError_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogError() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_ERROR);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
arg_list_t GetLogFatal() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return logFatal_;
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetLogFatal(arg_list_t value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
logFatal_ = std::move(value);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
bool WasSetLogFatal() const
|
2022-08-17 08:53:35 +00:00
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_LOG_FATAL);
|
2022-08-17 08:53:35 +00:00
|
|
|
}
|
|
|
|
|
2022-08-18 03:52:41 +00:00
|
|
|
size_t GetMaxAotMethodSize() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return maxAotMethodSize_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetMaxAotMethodSize(uint32_t value)
|
|
|
|
{
|
|
|
|
maxAotMethodSize_ = value;
|
2022-08-18 03:52:41 +00:00
|
|
|
}
|
|
|
|
|
2023-01-30 06:39:03 +00:00
|
|
|
double GetTypeThreshold() const
|
|
|
|
{
|
|
|
|
return typeThreshold_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetTypeThreshold(double threshold)
|
|
|
|
{
|
|
|
|
typeThreshold_ = threshold;
|
|
|
|
}
|
|
|
|
|
2022-09-09 08:44:33 +00:00
|
|
|
std::string GetEntryPoint() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return entryPoint_;
|
2022-09-09 08:44:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void SetEntryPoint(std::string value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
entryPoint_ = std::move(value);
|
2022-09-09 08:44:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool WasSetEntryPoint() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return WasOptionSet(OPTION_ENTRY_POINT);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetMergeAbc() const
|
|
|
|
{
|
|
|
|
return mergeAbc_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetMergeAbc(bool value)
|
|
|
|
{
|
|
|
|
mergeAbc_ = value;
|
2022-09-09 08:44:33 +00:00
|
|
|
}
|
|
|
|
|
2023-12-19 12:41:49 +00:00
|
|
|
void SetEnableContext(bool value)
|
|
|
|
{
|
|
|
|
enableContext_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableContext()
|
|
|
|
{
|
|
|
|
return enableContext_;
|
|
|
|
}
|
|
|
|
|
2022-10-11 06:32:15 +00:00
|
|
|
void SetEnablePrintExecuteTime(bool value)
|
|
|
|
{
|
|
|
|
enablePrintExecuteTime_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnablePrintExecuteTime()
|
|
|
|
{
|
|
|
|
return enablePrintExecuteTime_;
|
|
|
|
}
|
|
|
|
|
2023-12-18 07:57:47 +00:00
|
|
|
void SetEnableElementsKind(bool value)
|
|
|
|
{
|
|
|
|
enableElementsKind_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableElementsKind() const
|
|
|
|
{
|
|
|
|
return enableElementsKind_;
|
|
|
|
}
|
|
|
|
|
2022-10-17 09:02:45 +00:00
|
|
|
void SetEnablePGOProfiler(bool value)
|
2022-10-20 07:49:28 +00:00
|
|
|
{
|
2022-10-17 09:02:45 +00:00
|
|
|
enablePGOProfiler_ = value;
|
2022-10-20 07:49:28 +00:00
|
|
|
}
|
|
|
|
|
2022-10-17 09:02:45 +00:00
|
|
|
bool IsEnablePGOProfiler() const
|
2022-10-20 07:49:28 +00:00
|
|
|
{
|
2022-10-17 09:02:45 +00:00
|
|
|
return enablePGOProfiler_;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t GetPGOHotnessThreshold() const
|
|
|
|
{
|
|
|
|
return pgoHotnessThreshold_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetPGOHotnessThreshold(uint32_t threshold)
|
|
|
|
{
|
|
|
|
pgoHotnessThreshold_ = threshold;
|
|
|
|
}
|
|
|
|
|
2023-09-22 09:16:17 +00:00
|
|
|
uint32_t GetPGOSaveMinInterval() const
|
|
|
|
{
|
|
|
|
return pgoSaveMinInterval_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetPGOSaveMinInterval(uint32_t value)
|
|
|
|
{
|
|
|
|
pgoSaveMinInterval_ = value;
|
|
|
|
}
|
|
|
|
|
2022-10-17 09:02:45 +00:00
|
|
|
std::string GetPGOProfilerPath() const
|
|
|
|
{
|
|
|
|
return pgoProfilerPath_;
|
|
|
|
}
|
|
|
|
|
2023-02-21 11:31:52 +00:00
|
|
|
void SetPGOProfilerPath(const std::string& value)
|
2022-10-17 09:02:45 +00:00
|
|
|
{
|
2023-02-21 11:31:52 +00:00
|
|
|
pgoProfilerPath_ = panda::os::file::File::GetExtendedFilePath(value);
|
2022-10-20 07:49:28 +00:00
|
|
|
}
|
|
|
|
|
2023-05-24 09:39:27 +00:00
|
|
|
bool IsPGOProfilerPathEmpty() const
|
|
|
|
{
|
|
|
|
return pgoProfilerPath_.empty();
|
|
|
|
}
|
|
|
|
|
2022-09-17 07:56:09 +00:00
|
|
|
void SetEnableTypeLowering(bool value)
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
enableTypeLowering_ = value;
|
2022-09-17 07:56:09 +00:00
|
|
|
}
|
|
|
|
|
2023-08-03 07:22:51 +00:00
|
|
|
bool IsEnableArrayBoundsCheckElimination() const
|
|
|
|
{
|
|
|
|
return enableArrayBoundsCheckElimination_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableArrayBoundsCheckElimination(bool value)
|
|
|
|
{
|
|
|
|
enableArrayBoundsCheckElimination_ = value;
|
|
|
|
}
|
|
|
|
|
2022-09-17 07:56:09 +00:00
|
|
|
bool IsEnableTypeLowering() const
|
|
|
|
{
|
2022-09-20 08:00:16 +00:00
|
|
|
return enableTypeLowering_;
|
2022-09-17 07:56:09 +00:00
|
|
|
}
|
|
|
|
|
2023-04-07 08:51:43 +00:00
|
|
|
void SetEnableEarlyElimination(bool value)
|
|
|
|
{
|
|
|
|
enableEarlyElimination_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableEarlyElimination() const
|
|
|
|
{
|
|
|
|
return enableEarlyElimination_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableLaterElimination(bool value)
|
|
|
|
{
|
|
|
|
enableLaterElimination_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableLaterElimination() const
|
|
|
|
{
|
|
|
|
return enableLaterElimination_;
|
|
|
|
}
|
|
|
|
|
2023-10-24 12:36:58 +00:00
|
|
|
void SetEnableInstrcutionCombine(bool value)
|
|
|
|
{
|
|
|
|
enableInstrcutionCombine = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableInstrcutionCombine() const
|
|
|
|
{
|
|
|
|
return enableInstrcutionCombine;
|
|
|
|
}
|
|
|
|
|
2023-04-07 08:51:43 +00:00
|
|
|
void SetEnableValueNumbering(bool value)
|
|
|
|
{
|
|
|
|
enableValueNumbering_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableValueNumbering() const
|
|
|
|
{
|
|
|
|
return enableValueNumbering_;
|
|
|
|
}
|
|
|
|
|
2023-12-27 14:12:51 +00:00
|
|
|
|
2023-12-09 01:13:27 +00:00
|
|
|
void SetEnableJIT(bool value)
|
|
|
|
{
|
|
|
|
enableJIT_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableJIT() const
|
|
|
|
{
|
|
|
|
return enableJIT_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetJitHotnessThreshold(uint16_t value)
|
|
|
|
{
|
|
|
|
jitHotnessThreshold_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t GetJitHotnessThreshold() const
|
|
|
|
{
|
|
|
|
return jitHotnessThreshold_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetForceJitCompileMain(bool value)
|
|
|
|
{
|
|
|
|
forceJitCompileMain_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableForceJitCompileMain()
|
|
|
|
{
|
|
|
|
return forceJitCompileMain_;
|
|
|
|
}
|
|
|
|
|
2023-09-21 13:20:55 +00:00
|
|
|
void SetEnableNewValueNumbering(bool value)
|
|
|
|
{
|
|
|
|
enableNewValueNumbering_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableNewValueNumbering() const
|
|
|
|
{
|
|
|
|
return enableNewValueNumbering_;
|
|
|
|
}
|
|
|
|
|
2023-03-13 06:37:22 +00:00
|
|
|
void SetEnableOptInlining(bool value)
|
|
|
|
{
|
|
|
|
enableOptInlining_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptInlining() const
|
|
|
|
{
|
|
|
|
return enableOptInlining_;
|
|
|
|
}
|
|
|
|
|
2023-03-08 07:05:35 +00:00
|
|
|
void SetEnableOptPGOType(bool value)
|
|
|
|
{
|
|
|
|
enableOptPGOType_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptPGOType() const
|
|
|
|
{
|
|
|
|
return enableOptPGOType_;
|
|
|
|
}
|
|
|
|
|
2023-07-12 10:42:42 +00:00
|
|
|
void SetEnableOptTrackField(bool value)
|
|
|
|
{
|
|
|
|
enableOptTrackField_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptTrackField() const
|
|
|
|
{
|
|
|
|
return enableOptTrackField_;
|
|
|
|
}
|
|
|
|
|
2023-04-27 11:21:32 +00:00
|
|
|
void SetEnableGlobalTypeInfer(bool value)
|
|
|
|
{
|
|
|
|
enableGlobalTypeInfer_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableGlobalTypeInfer() const
|
|
|
|
{
|
|
|
|
return enableGlobalTypeInfer_;
|
|
|
|
}
|
|
|
|
|
2023-05-05 06:53:42 +00:00
|
|
|
uint32_t GetCompilerModuleMethods() const
|
|
|
|
{
|
|
|
|
return compilerModuleMethods_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetCompilerModuleMethods(uint32_t compilerModuleMethods)
|
|
|
|
{
|
|
|
|
compilerModuleMethods_ = compilerModuleMethods;
|
|
|
|
}
|
|
|
|
|
2022-09-20 08:00:16 +00:00
|
|
|
void WasSet(int opt)
|
|
|
|
{
|
|
|
|
wasSet_ |= 1ULL << static_cast<uint64_t>(opt);
|
|
|
|
}
|
2022-11-25 06:44:53 +00:00
|
|
|
|
2022-11-25 08:51:55 +00:00
|
|
|
void SetTraceDeopt(bool value)
|
2022-11-25 06:44:53 +00:00
|
|
|
{
|
2022-11-28 08:16:35 +00:00
|
|
|
traceDeopt_ = value;
|
2022-11-25 06:44:53 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 08:51:55 +00:00
|
|
|
bool GetTraceDeopt() const
|
2022-11-25 06:44:53 +00:00
|
|
|
{
|
2022-11-25 08:51:55 +00:00
|
|
|
return traceDeopt_;
|
2022-11-25 06:44:53 +00:00
|
|
|
}
|
2022-12-13 11:30:54 +00:00
|
|
|
|
2023-02-06 07:31:06 +00:00
|
|
|
void SetDeoptThreshold(uint8_t value)
|
2022-12-13 11:30:54 +00:00
|
|
|
{
|
|
|
|
deoptThreshold_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t GetDeoptThreshold() const
|
|
|
|
{
|
|
|
|
return deoptThreshold_;
|
|
|
|
}
|
2022-12-14 09:07:53 +00:00
|
|
|
|
2023-04-07 08:51:43 +00:00
|
|
|
void SetStressDeopt(bool value)
|
|
|
|
{
|
|
|
|
stressDeopt_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetStressDeopt() const
|
|
|
|
{
|
|
|
|
return stressDeopt_;
|
|
|
|
}
|
|
|
|
|
2022-12-14 09:07:53 +00:00
|
|
|
void SetOptCodeProfiler(bool value)
|
|
|
|
{
|
|
|
|
optCodeProfiler_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetOptCodeProfiler() const
|
|
|
|
{
|
|
|
|
return optCodeProfiler_;
|
|
|
|
}
|
2023-04-07 08:51:43 +00:00
|
|
|
|
|
|
|
void SetVerifyVTable(bool value)
|
|
|
|
{
|
|
|
|
verifyVTable_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetVerifyVTable() const
|
|
|
|
{
|
|
|
|
return verifyVTable_;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetCompilerSelectMethods() const
|
|
|
|
{
|
|
|
|
return compilerSelectMethods_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetCompilerSelectMethods(std::string value)
|
|
|
|
{
|
|
|
|
compilerSelectMethods_ = std::move(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetCompilerSkipMethods() const
|
|
|
|
{
|
|
|
|
return compilerSkipMethods_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetCompilerSkipMethods(std::string value)
|
|
|
|
{
|
|
|
|
compilerSkipMethods_ = std::move(value);
|
|
|
|
}
|
|
|
|
|
2023-05-10 13:22:15 +00:00
|
|
|
void SetTraceInline(bool value)
|
|
|
|
{
|
|
|
|
traceInline_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetTraceInline() const
|
|
|
|
{
|
|
|
|
return traceInline_;
|
|
|
|
}
|
|
|
|
|
2023-09-21 13:20:55 +00:00
|
|
|
void SetTraceValueNumbering(bool value)
|
|
|
|
{
|
|
|
|
traceValueNumbering_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetTraceValueNumbering() const
|
|
|
|
{
|
|
|
|
return traceValueNumbering_;
|
|
|
|
}
|
2023-12-27 14:12:51 +00:00
|
|
|
|
2023-12-09 01:13:27 +00:00
|
|
|
void SetTraceJIT(bool value)
|
|
|
|
{
|
|
|
|
traceJIT_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetTraceJIT() const
|
|
|
|
{
|
|
|
|
return traceJIT_;
|
|
|
|
}
|
2023-09-21 13:20:55 +00:00
|
|
|
|
2023-10-24 12:36:58 +00:00
|
|
|
void SetTraceInstructionCombine(bool value)
|
|
|
|
{
|
|
|
|
traceInstructionCombine_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetTraceInstructionCombine() const
|
|
|
|
{
|
|
|
|
return traceInstructionCombine_;
|
|
|
|
}
|
|
|
|
|
2023-05-10 13:22:15 +00:00
|
|
|
void SetMaxInlineBytecodes(size_t value)
|
|
|
|
{
|
|
|
|
maxInlineBytecodes_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
size_t GetMaxInlineBytecodes()
|
|
|
|
{
|
|
|
|
return maxInlineBytecodes_;
|
|
|
|
}
|
2023-05-24 09:39:27 +00:00
|
|
|
|
|
|
|
void SetTargetCompilerMode(std::string mode)
|
|
|
|
{
|
|
|
|
targetCompilerMode_ = std::move(mode);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetTargetCompilerMode() const
|
|
|
|
{
|
|
|
|
return targetCompilerMode_;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsTargetCompilerMode() const
|
|
|
|
{
|
|
|
|
return IsPartialCompilerMode() || IsFullCompilerMode();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsPartialCompilerMode() const
|
|
|
|
{
|
|
|
|
return targetCompilerMode_ == "partial";
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsFullCompilerMode() const
|
|
|
|
{
|
|
|
|
return targetCompilerMode_ == "full";
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetHapPath(std::string path)
|
|
|
|
{
|
|
|
|
hapPath_ = std::move(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string GetHapPath() const
|
|
|
|
{
|
|
|
|
return hapPath_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetHapAbcOffset(uint32_t offset)
|
|
|
|
{
|
|
|
|
hapAbcOffset_ = offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t GetHapAbcOffset() const
|
|
|
|
{
|
|
|
|
return hapAbcOffset_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetHapAbcSize(uint32_t size)
|
|
|
|
{
|
|
|
|
hapAbcSize_ = size;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t GetHapAbcSize() const
|
|
|
|
{
|
|
|
|
return hapAbcSize_;
|
|
|
|
}
|
|
|
|
|
2023-07-02 07:54:40 +00:00
|
|
|
void SetCompilerNoCheck(bool value)
|
|
|
|
{
|
|
|
|
compilerNoCheck_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsCompilerNoCheck() const
|
|
|
|
{
|
|
|
|
return compilerNoCheck_;
|
|
|
|
}
|
|
|
|
|
2023-05-30 12:38:41 +00:00
|
|
|
void SetTargetBuiltinsDtsPath();
|
|
|
|
|
|
|
|
void SetOptionsForTargetCompilation();
|
|
|
|
|
2023-07-07 03:54:42 +00:00
|
|
|
void SetFastAOTCompileMode(bool value)
|
|
|
|
{
|
|
|
|
fastAOTCompileMode_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetFastAOTCompileMode() const
|
|
|
|
{
|
|
|
|
return fastAOTCompileMode_;
|
|
|
|
}
|
|
|
|
|
2023-07-10 03:26:49 +00:00
|
|
|
void SetEnableOptLoopPeeling(bool value)
|
|
|
|
{
|
|
|
|
enableOptLoopPeeling_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptLoopPeeling() const
|
|
|
|
{
|
|
|
|
return enableOptLoopPeeling_;
|
|
|
|
}
|
|
|
|
|
2023-09-14 09:17:53 +00:00
|
|
|
void SetEnableOptLoopInvariantCodeMotion(bool value)
|
|
|
|
{
|
|
|
|
enableOptLoopInvariantCodeMotion_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptLoopInvariantCodeMotion() const
|
|
|
|
{
|
|
|
|
return enableOptLoopInvariantCodeMotion_;
|
|
|
|
}
|
|
|
|
|
2023-09-13 07:02:07 +00:00
|
|
|
bool IsEnableOptConstantFolding() const
|
|
|
|
{
|
|
|
|
return enableOptConstantFolding_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableOptConstantFolding(bool value)
|
|
|
|
{
|
|
|
|
enableOptConstantFolding_ = value;
|
|
|
|
}
|
|
|
|
|
2023-08-28 06:11:40 +00:00
|
|
|
void SetEnableOptOnHeapCheck(bool value)
|
|
|
|
{
|
|
|
|
enableOptOnHeapCheck_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool IsEnableOptOnHeapCheck() const
|
|
|
|
{
|
|
|
|
return enableOptOnHeapCheck_;
|
|
|
|
}
|
|
|
|
|
2023-10-23 01:10:20 +00:00
|
|
|
bool IsEnableLexenvSpecialization() const
|
|
|
|
{
|
|
|
|
return enableLexenvSpecialization_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableLexenvSpecialization(bool value)
|
|
|
|
{
|
|
|
|
enableLexenvSpecialization_ = value;
|
|
|
|
}
|
|
|
|
|
2023-11-01 10:52:52 +00:00
|
|
|
bool IsEnableNativeInline() const
|
|
|
|
{
|
|
|
|
return enableNativeInline_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableNativeInline(bool value)
|
|
|
|
{
|
|
|
|
enableNativeInline_ = value;
|
|
|
|
}
|
|
|
|
|
2023-11-09 09:25:34 +00:00
|
|
|
bool IsEnableLoweringBuiltin() const
|
|
|
|
{
|
|
|
|
return enableLoweringBuiltin_;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetEnableLoweringBuiltin(bool value)
|
|
|
|
{
|
|
|
|
enableLoweringBuiltin_ = value;
|
|
|
|
}
|
|
|
|
|
2023-11-27 12:16:00 +00:00
|
|
|
void SetCompilerEnableLiteCG(bool value)
|
2023-11-16 08:11:50 +00:00
|
|
|
{
|
|
|
|
enableLiteCG_ = value;
|
|
|
|
}
|
|
|
|
|
2023-11-27 12:16:00 +00:00
|
|
|
bool IsCompilerEnableLiteCG() const
|
2023-11-16 08:11:50 +00:00
|
|
|
{
|
|
|
|
return enableLiteCG_;
|
|
|
|
}
|
|
|
|
|
2023-12-27 14:12:51 +00:00
|
|
|
void SetLoopHoistProfiler(bool value)
|
|
|
|
{
|
|
|
|
enableLoopHoistProfiler_ = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool GetLoopHoistProfiler() const
|
|
|
|
{
|
|
|
|
return enableLoopHoistProfiler_;
|
|
|
|
}
|
|
|
|
|
2021-10-19 03:55:00 +00:00
|
|
|
private:
|
2022-09-20 08:00:16 +00:00
|
|
|
static bool StartsWith(const std::string &haystack, const std::string &needle)
|
|
|
|
{
|
|
|
|
return std::equal(needle.begin(), needle.end(), haystack.begin());
|
|
|
|
}
|
|
|
|
|
|
|
|
bool WasOptionSet(int option) const
|
|
|
|
{
|
|
|
|
return ((1ULL << static_cast<uint64_t>(option)) & wasSet_) != 0;
|
|
|
|
}
|
|
|
|
|
2022-09-22 08:01:36 +00:00
|
|
|
bool ParseBoolParam(bool* argBool);
|
2023-01-30 06:39:03 +00:00
|
|
|
bool ParseDoubleParam(const std::string &option, double* argDouble);
|
2022-09-20 08:00:16 +00:00
|
|
|
bool ParseIntParam(const std::string &option, int* argInt);
|
|
|
|
bool ParseUint32Param(const std::string &option, uint32_t *argUInt32);
|
|
|
|
bool ParseUint64Param(const std::string &option, uint64_t *argUInt64);
|
|
|
|
void ParseListArgParam(const std::string &option, arg_list_t *argListStr, std::string delimiter);
|
|
|
|
|
2022-09-27 12:38:01 +00:00
|
|
|
bool enableArkTools_ {true};
|
2022-09-20 08:00:16 +00:00
|
|
|
std::string stubFile_ {"stub.an"};
|
2023-09-05 07:09:21 +00:00
|
|
|
std::string compilerPkgInfo_ {};
|
|
|
|
std::string compilerExternalPkgInfo_ {};
|
2023-11-26 23:38:31 +00:00
|
|
|
bool compilerEnableExternalPkg_ {true};
|
2022-09-20 08:00:16 +00:00
|
|
|
bool enableForceGc_ {true};
|
|
|
|
bool forceFullGc_ {true};
|
|
|
|
int arkProperties_ = GetDefaultProperties();
|
2023-01-29 03:40:13 +00:00
|
|
|
std::string arkBundleName_ = {""};
|
2022-09-20 08:00:16 +00:00
|
|
|
uint32_t gcThreadNum_ {7}; // 7: default thread num
|
|
|
|
uint32_t longPauseTime_ {40}; // 40: default pause time
|
2022-12-05 14:55:52 +00:00
|
|
|
std::string aotOutputFile_ {""};
|
2023-04-07 08:51:43 +00:00
|
|
|
std::string targetTriple_ {TARGET_X64};
|
2023-08-26 11:49:59 +00:00
|
|
|
uint32_t asmOptLevel_ {2};
|
2022-09-20 08:00:16 +00:00
|
|
|
uint32_t relocationMode_ {2}; // 2: default relocation mode
|
|
|
|
uint32_t maxNonmovableSpaceCapacity_ {4_MB};
|
|
|
|
bool enableAsmInterpreter_ {true};
|
2023-04-24 03:43:21 +00:00
|
|
|
bool enableBuiltinsLazy_ {true};
|
2022-09-20 08:00:16 +00:00
|
|
|
std::string asmOpcodeDisableRange_ {""};
|
2022-05-16 02:20:46 +00:00
|
|
|
AsmInterParsedOption asmInterParsedOption_;
|
2022-09-20 08:00:16 +00:00
|
|
|
uint64_t serializerBufferSizeLimit_ {2_GB};
|
|
|
|
uint32_t heapSizeLimit_ {512_MB};
|
|
|
|
bool enableIC_ {true};
|
|
|
|
std::string icuDataPath_ {"default"};
|
|
|
|
bool startupTime_ {false};
|
|
|
|
std::string compilerLogOpt_ {"none"};
|
2022-09-22 08:01:36 +00:00
|
|
|
std::string compilerLogMethods_ {"none"};
|
2022-11-17 11:12:49 +00:00
|
|
|
bool compilerLogSnapshot_ {false};
|
2022-11-10 09:17:49 +00:00
|
|
|
bool compilerLogTime_ {false};
|
2022-09-20 08:00:16 +00:00
|
|
|
bool enableRuntimeStat_ {false};
|
|
|
|
bool assertTypes_ {false};
|
2023-06-09 15:36:37 +00:00
|
|
|
bool printTypeInfo_ {false};
|
2022-09-20 08:00:16 +00:00
|
|
|
bool isWorker_ {false};
|
|
|
|
std::string builtinsDTS_ {""};
|
2022-11-25 08:51:55 +00:00
|
|
|
bool traceBc_ {false};
|
2022-09-20 08:00:16 +00:00
|
|
|
std::string logLevel_ {"error"};
|
|
|
|
arg_list_t logDebug_ {{"all"}};
|
|
|
|
arg_list_t logInfo_ {{"all"}};
|
|
|
|
arg_list_t logWarning_ {{"all"}};
|
|
|
|
arg_list_t logError_ {{"all"}};
|
|
|
|
arg_list_t logFatal_ {{"all"}};
|
|
|
|
arg_list_t logComponents_ {{"all"}};
|
2022-10-15 07:55:29 +00:00
|
|
|
bool enableAOT_ {false};
|
2022-09-20 08:00:16 +00:00
|
|
|
uint32_t maxAotMethodSize_ {32_KB};
|
2023-01-30 06:39:03 +00:00
|
|
|
double typeThreshold_ {-1};
|
2022-09-20 08:00:16 +00:00
|
|
|
std::string entryPoint_ {"_GLOBAL::func_main_0"};
|
|
|
|
bool mergeAbc_ {false};
|
2023-08-03 07:22:51 +00:00
|
|
|
bool enableArrayBoundsCheckElimination_ {false};
|
2022-09-20 08:00:16 +00:00
|
|
|
bool enableTypeLowering_ {true};
|
2023-04-07 08:51:43 +00:00
|
|
|
bool enableEarlyElimination_ {true};
|
|
|
|
bool enableLaterElimination_ {true};
|
2023-05-10 12:44:07 +00:00
|
|
|
bool enableValueNumbering_ {true};
|
2023-12-18 07:57:47 +00:00
|
|
|
bool enableElementsKind_ {false};
|
2023-10-24 12:36:58 +00:00
|
|
|
bool enableInstrcutionCombine {true};
|
2023-09-21 13:20:55 +00:00
|
|
|
bool enableNewValueNumbering_ {true};
|
2023-07-13 07:33:58 +00:00
|
|
|
bool enableOptInlining_ {true};
|
2023-03-08 07:05:35 +00:00
|
|
|
bool enableOptPGOType_ {true};
|
2023-12-09 01:13:27 +00:00
|
|
|
bool enableJIT_{false};
|
|
|
|
uint16_t jitHotnessThreshold_ {2};
|
|
|
|
bool forceJitCompileMain_{false};
|
2023-04-27 11:21:32 +00:00
|
|
|
bool enableGlobalTypeInfer_ {false};
|
2023-08-26 11:49:59 +00:00
|
|
|
bool enableOptTrackField_ {true};
|
2023-05-05 06:53:42 +00:00
|
|
|
uint32_t compilerModuleMethods_ {100};
|
2022-09-20 08:00:16 +00:00
|
|
|
uint64_t wasSet_ {0};
|
2023-12-19 12:41:49 +00:00
|
|
|
bool enableContext_ {false};
|
2022-10-11 06:32:15 +00:00
|
|
|
bool enablePrintExecuteTime_ {false};
|
2022-10-17 09:02:45 +00:00
|
|
|
bool enablePGOProfiler_ {false};
|
2023-02-07 08:33:15 +00:00
|
|
|
bool reportModuleResolvingFailure_ {true};
|
2023-05-27 08:50:29 +00:00
|
|
|
uint32_t pgoHotnessThreshold_ {1};
|
2022-10-17 09:02:45 +00:00
|
|
|
std::string pgoProfilerPath_ {""};
|
2023-09-22 09:16:17 +00:00
|
|
|
uint32_t pgoSaveMinInterval_ {30};
|
2022-12-14 09:07:53 +00:00
|
|
|
bool traceDeopt_ {false};
|
2023-02-06 07:31:06 +00:00
|
|
|
uint8_t deoptThreshold_ {10};
|
2023-04-07 08:51:43 +00:00
|
|
|
bool stressDeopt_ {false};
|
2022-12-14 09:07:53 +00:00
|
|
|
bool optCodeProfiler_ {false};
|
2023-01-12 07:29:25 +00:00
|
|
|
bool startGlobalLeakCheck_ {false};
|
2023-04-07 08:51:43 +00:00
|
|
|
bool verifyVTable_ {false};
|
|
|
|
std::string compilerSelectMethods_ {""};
|
|
|
|
std::string compilerSkipMethods_ {""};
|
2023-05-10 13:22:15 +00:00
|
|
|
bool traceInline_ {false};
|
2023-12-09 01:13:27 +00:00
|
|
|
bool traceJIT_{false};
|
2023-09-21 13:20:55 +00:00
|
|
|
bool traceValueNumbering_{false};
|
2023-10-24 12:36:58 +00:00
|
|
|
bool traceInstructionCombine_{false};
|
2023-08-26 11:49:59 +00:00
|
|
|
size_t maxInlineBytecodes_ {45};
|
2023-05-24 09:39:27 +00:00
|
|
|
std::string targetCompilerMode_ {""};
|
|
|
|
std::string hapPath_ {""};
|
|
|
|
uint32_t hapAbcOffset_ {0};
|
|
|
|
uint32_t hapAbcSize_ {0};
|
2023-07-02 07:54:40 +00:00
|
|
|
bool compilerNoCheck_ {false};
|
2023-08-26 11:49:59 +00:00
|
|
|
bool fastAOTCompileMode_ {false};
|
|
|
|
bool enableOptLoopPeeling_ {true};
|
2023-09-13 07:02:07 +00:00
|
|
|
bool enableOptConstantFolding_ {true};
|
2023-08-26 11:49:59 +00:00
|
|
|
bool enableOptOnHeapCheck_ {true};
|
2023-09-14 09:17:53 +00:00
|
|
|
bool enableOptLoopInvariantCodeMotion_ {false};
|
2023-11-22 01:15:28 +00:00
|
|
|
bool enableLexenvSpecialization_ {false};
|
2023-11-01 10:52:52 +00:00
|
|
|
bool enableNativeInline_ {false};
|
2023-12-28 17:53:11 +00:00
|
|
|
bool enableLoweringBuiltin_ {true};
|
2023-11-16 08:11:50 +00:00
|
|
|
bool enableLiteCG_ {false};
|
2023-12-27 14:12:51 +00:00
|
|
|
bool enableLoopHoistProfiler_ {false};
|
2021-10-19 03:55:00 +00:00
|
|
|
};
|
|
|
|
} // namespace panda::ecmascript
|
|
|
|
|
2022-05-13 08:42:12 +00:00
|
|
|
#endif // ECMASCRIPT_JS_RUNTIME_OPTIONS_H_
|