arkcompiler_ets_runtime/ecmascript/js_runtime_options.h

2056 lines
46 KiB
C
Raw Normal View History

/*
* 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_
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include "ecmascript/compiler/bc_call_signature.h"
#include "ecmascript/mem/mem_common.h"
// namespace panda {
namespace panda::ecmascript {
using arg_list_t = std::vector<std::string>;
enum ArkProperties {
DEFAULT = -1, // default value 000'0000'0001'0000'0101'1100 -> 0x105c
OPTIONAL_LOG = 1,
GC_STATS_PRINT = 1 << 1,
PARALLEL_GC = 1 << 2, // default enable
CONCURRENT_MARK = 1 << 3, // default enable
CONCURRENT_SWEEP = 1 << 4, // default enable
THREAD_CHECK = 1 << 5,
ENABLE_ARKTOOLS = 1 << 6, // default enable
ENABLE_SNAPSHOT_SERIALIZE = 1 << 7,
ENABLE_SNAPSHOT_DESERIALIZE = 1 << 8,
EXCEPTION_BACKTRACE = 1 << 9,
GLOBAL_OBJECT_LEAK_CHECK = 1 << 10,
GLOBAL_PRIMITIVE_LEAK_CHECK = 1 << 11,
ENABLE_IDLE_GC = 1 << 12, // default enable
CPU_PROFILER_COLD_START_MAIN_THREAD = 1 << 13,
ENABLE_CPU_PROFILER_VM_TAG = 1 << 14,
ENABLE_GC_TRACER = 1 << 15,
CPU_PROFILER_COLD_START_WORKER_THREAD = 1 << 16,
CPU_PROFILER_ANY_TIME_MAIN_THREAD = 1 << 17,
CPU_PROFILER_ANY_TIME_WORKER_THREAD = 1 << 18,
ENABLE_HEAP_VERIFY = 1 << 19,
ENABLE_MICROJOB_TRACE = 1 << 20,
ENABLE_INIT_OLD_SOCKET_SESSION = 1 << 21,
// Use DISABLE to adapt to the exsiting ArkProperties in testing scripts.
DISABLE_SHARED_CONCURRENT_MARK = 1 << 22,
ENABLE_ESM_TRACE = 1 << 24,
ENABLE_MODULE_LOG = 1 << 25
};
// asm interpreter control parsed option
struct AsmInterParsedOption {
int handleStart {-1};
int handleEnd {-1};
bool enableAsm {false};
};
extern const std::string PUBLIC_API COMMON_HELP_HEAD_MSG;
extern const std::string PUBLIC_API STUB_HELP_HEAD_MSG;
extern const std::string PUBLIC_API COMPILER_HELP_HEAD_MSG;
extern const std::string PUBLIC_API HELP_OPTION_MSG;
enum CommandValues {
OPTION_DEFAULT,
OPTION_HELP,
OPTION_ENABLE_ARK_TOOLS,
OPTION_STUB_FILE,
OPTION_ENABLE_FORCE_GC,
OPTION_FORCE_FULL_GC,
OPTION_ENABLE_FORCE_SHARED_GC_FREQUENCY,
OPTION_ARK_PROPERTIES,
OPTION_ARK_BUNDLENAME,
OPTION_GC_THREADNUM,
OPTION_GC_LONG_PAUSED_TIME,
OPTION_AOT_FILE,
OPTION_COMPILER_TARGET_TRIPLE,
OPTION_ASM_OPT_LEVEL,
OPTION_RELOCATION_MODE,
OPTION_MAX_UNMOVABLE_SPACE,
OPTION_ENABLE_ASM_INTERPRETER,
OPTION_ENABLE_BUILTINS_LAZY,
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,
OPTION_COMPILER_LOG_METHODS,
OPTION_COMPILER_TYPE_THRESHOLD,
OPTION_ENABLE_RUNTIME_STAT,
OPTION_COMPILER_LOG_SNAPSHOT,
OPTION_COMPILER_LOG_TIME,
OPTION_ENABLE_WORKER,
OPTION_COMPILER_TRACE_BC,
OPTION_COMPILER_TRACE_DEOPT,
OPTION_COMPILER_TRACE_INLINE,
OPTION_COMPILER_MAX_INLINE_BYTECODES,
OPTION_COMPILER_DEOPT_THRESHOLD,
OPTION_COMPILER_STRESS_DEOPT,
OPTION_COMPILER_OPT_CODE_PROFILER,
OPTION_COMPILER_OPT_BC_RANGE,
OPTION_LOG_LEVEL,
OPTION_LOG_DEBUG,
OPTION_LOG_INFO,
OPTION_LOG_WARNING,
OPTION_LOG_ERROR,
OPTION_LOG_FATAL,
OPTION_LOG_COMPONENTS,
OPTION_COMPILER_OPT_MAX_METHOD,
OPTION_COMPILER_MODULE_METHODS,
OPTION_ENTRY_POINT,
OPTION_MERGE_ABC,
OPTION_ENABLE_CONTEXT,
OPTION_COMPILER_OPT_TYPE_LOWERING,
OPTION_COMPILER_OPT_EARLY_ELIMINATION,
OPTION_COMPILER_OPT_LATER_ELIMINATION,
OPTION_COMPILER_OPT_STRING,
OPTION_COMPILER_OPT_VALUE_NUMBERING,
OPTION_COMPILER_OPT_INLINING,
OPTION_COMPILER_OPT_PGOTYPE,
OPTION_COMPILER_OPT_TRACK_FIELD,
OPTION_COMPILER_PGO_PROFILER_PATH,
OPTION_COMPILER_PGO_HOTNESS_THRESHOLD,
OPTION_COMPILER_PGO_SAVE_MIN_INTERVAL,
OPTION_ENABLE_PGO_PROFILER,
OPTION_PRINT_EXECUTE_TIME,
OPTION_SPLIT_ONE,
OPTION_ENABLE_EDEN_GC,
OPTION_COMPILER_DEVICE_STATE,
OPTION_COMPILER_VERIFY_VTABLE,
OPTION_COMPILER_SELECT_METHODS,
OPTION_COMPILER_SKIP_METHODS,
OPTION_TARGET_COMPILER_MODE,
OPTION_HAP_PATH,
OPTION_HAP_ABC_OFFSET,
OPTION_HAP_ABC_SIZE,
OPTION_COMPILER_NOCHECK,
OPTION_COMPILER_PIPELINE_HOST_AOT,
OPTION_FAST_AOT_COMPILE_MODE,
OPTION_COMPILER_OPT_LOOP_PEELING,
OPTION_COMPILER_OPT_ON_HEAP_CHECK,
OPTION_COMPILER_PKG_INFO,
OPTION_COMPILER_EXTERNAL_PKG_INFO,
OPTION_COMPILER_ENABLE_EXTERNAL_PKG,
OPTION_COMPILER_FRAMEWORK_ABC_PATH,
OPTION_COMPILER_OPT_ARRAY_BOUNDS_CHECK_ELIMINATION,
OPTION_COMPILER_OPT_LOOP_INVARIANT_CODE_MOTION,
OPTION_COMPILER_OPT_CONSTANT_FOLDING,
OPTION_COMPILER_ENABLE_LEXENV_SPECIALIZATION,
OPTION_COMPILER_TRACE_INSTRUCTION_COMBINE,
OPTION_COMPILER_TRACE_VALUE_NUMBERING,
OPTION_COMPILER_OPT_INSTRUCTIONE_COMBINE,
OPTION_COMPILER_OPT_NEW_VALUE_NUMBERING,
OPTION_COMPILER_ENABLE_NATIVE_INLINE,
OPTION_COMPILER_ENABLE_LOWERING_BUILTIN,
OPTION_COMPILER_ENABLE_LITECG,
OPTION_COMPILER_ENABLE_JIT,
OPTION_COMPILER_ENABLE_OSR,
OPTION_COMPILER_JIT_HOTNESS_THRESHOLD,
OPTION_COMPILER_JIT_CALL_THRESHOLD,
OPTION_COMPILER_OSR_HOTNESS_THRESHOLD,
OPTION_COMPILER_FORCE_JIT_COMPILE_MAIN,
OPTION_COMPILER_TRACE_JIT,
OPTION_COMPILER_ENABLE_JIT_PGO,
OPTION_COMPILER_ENABLE_AOT_PGO,
OPTION_COMPILER_ENABLE_FRAMEWORK_AOT,
OPTION_COMPILER_ENABLE_PROPFILE_DUMP,
OPTION_ENABLE_ELEMENTSKIND,
OPTION_COMPILER_TYPED_OP_PROFILER,
OPTION_COMPILER_OPT_BRANCH_PROFILING,
OPTION_TEST_ASSERT,
OPTION_COMPILER_METHODS_RANGE,
OPTION_COMPILER_CODEGEN_OPT,
OPTION_COMPILER_OPT_BC_RANGE_HELP,
OPTION_COMPILER_MEMORY_ANALYSIS,
OPTION_COMPILER_CHECK_PGO_VERSION,
OPTION_COMPILER_OPT_ESCAPE_ANALYSIS,
OPTION_COMPILER_TRACE_ESCAPE_ANALYSIS,
OPTION_ENABLE_JITFORT,
OPTION_CODESIGN_DISABLE,
OPTION_ENABLE_ASYNC_COPYTOFORT,
OPTION_LAST,
OPTION_COMPILER_OPT_INDUCTION_VARIABLE,
OPTION_COMPILER_TRACE_INDUCTION_VARIABLE,
enable baseline compiler add baseline builtins Change-Id: Ib8d7c392c62e21eab19b17e45c0fafb499cbbed9 support running baseline compiler by option --compiler-force-baseline-compile-main=true Change-Id: I7c7337faf9fad39ccffb2de28d46403e2f6cb22b baseline jit part3 Change-Id: I36e8dd6a6fa6fffb738029a8620bbcd01df1e017 baseline part4 Change-Id: Ib45bcf7255a85aa48f864a6021adf819927e6a13 baseline part5 move baseline into compiler folder Change-Id: Ia8781c95ae00c4f300e7267a6da0078b5d04e4c8 !185 support BaselinePrologue * support BaselinePrologue part3 * support BaselinePrologue part2 * support BaselinePrologue !187 [BaselineJit] support load baseline builtins * [BaselineJit]support load baseline builtins !186[BaselineJIT] workaround for baselinejit support install code * install code part3 * install code part2 * baseline jit support intall code !188 [BaselineJit] support CallBuiltin * [BaselineJit] baseline support CallBuiltin !189 [BaselineJIT]implement StackOffset class * [BaselineJIT]implement StackOffset class !190 [BaselineJIT]refactor BaselineAssembler and MacroAssembler * [BaselineJIT]refactor BaselineAssembler and MacroAssembler !191 [BaselineJIT] refactor class BaselineCompiler * [BaselineJIT] refactor class BaselineCompiler !192 [BaselineJIT] callbuiltin support new parameter type new parameter type: int32_t,SpecialParameter,VirtualRegister !193 [BaselineJIT]modify BaselineLoadObjByName function * [BaselineJIT]modify BaselineLoadObjByName function !194 [BaselineJIT] support new builtins * [BaselineJIT] add BaselineTryLdGLobalByNameImm8ID16, BaselineStToGlobalRecordImm16ID16, BaselineLdaStrID16 !196 [BaselineJIT]bugfix for BaselinePrologue, align the rsp * [BaselineJIT]bugfix for BaselinePrologue, align the rsp !197 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !198 [BaselineJIT]workaround for helloworld testcase, helloworld can run successfully * workaround for helloworld testcase, helloworld can run successfully !200 [BaselineJIT]adapt profile collection * [BaselineJIT]adapt profile collection !201 [BaselineJIT]refactor baseline jit * [BaselineJIT]refactor baseline jit !203 [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async * [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async !202 [BaselineJIT]enable update hotness * [BaselineJIT]enable update hotness !205 [BaselineJIT]adapt JSCallDispatch interface * [BaselineJIT]adapt JSCallDispatch interface Change-Id: I4efce4346f985c7e074d7fc4bbfe3b081272e950 !195 [Baseline JIT] bytecode to builtin funs * !206 enable bytecode builtins and call CHECK_PENDING_EXCEPTION * [Baseline JIT] builtins:StobjbynameImm9Id16V8,StobjbynameImm16Id16V8,S… * [Baseline JIT] builtins:CopyrestargsImm8,LdlexvarImm4Imm4,StlexvarImm4… * [Baseline JIT] builtins: LdsuperbyvalueImm8V8,LdsuperbyvalueImm16V8,St… * [Baseline JIT] builtins: DelobjpropV8,AsyncfunctionawaituncaughtV8,Cop… * !204 enable bytecode builtins * [Baseline JIT] builtins: DefineclasswithbufferImm8Id16Id16Imm16V8,Defi… * [Baseline JIT] builtins: LdthisbynameImm8Id16,Definegettersetterbyval… * [Baseline JIT] builtins: Callarg0Imm8,SupercallspreadImm8V8,ApplyImm8V… * !199 enable bytecode builtin func * [Baseline JIT] builtins: StrictnoteqImm8V8,StricteqImm8V8,Istrue,Isfal… * [Baseline JIT] builtins: NegImm8,NotImm8,IncImm8,DecImm8,IsinImm8V8,In… * [Baseline JIT] builtins: And2Imm8V8,Or2Imm8V8,Xor2Imm8V8,ExpImm8V8,Typ… * [Baseline JIT] builtins:LessImm8V8,LesseqImm8V8,GreaterImm8V8,Greatere… * [Baseline JIT] builtins:Add2Imm8V8,SUB2_IMM8_V8,MUL2_IMM8_V8,DIV2_IMM8… * [Baseline JIT] builtins:CreateobjectwithbufferImm8Id16,Createobjectwit… * [Baseline JIT]builtins:Createemptyobject,CreateemptyarrayImm8,Createem… * [Baseline JIT] builtins:GetiteratorImm16,Asyncfunctionenter,Createasyn… * [Baseline JIT] builtins:ldsymbol,ldglobal,Poplexenv,Getunmappedargs,Ge… * [BaselineJIT] builtins: add base class !209 handle opcode in baseline compiler * handle opcode in baseline compiler !210 [baseline jit]: add baseline stub call signature target kind info * [baseline jit]: add baseline stub call signature target kind info !212 [BaselineJIT]baseline builtin bugfix * [BaselineJIT]baseline builtin bugfix !207 [BaselineJIT]support BaselineBuiltinFrame * [BaselineJIT]support BaselineBuiltinFrame !214 [BaselineJIT]baseline builtin bugfix of using JSCallDispatch * [BaselineJIT]baseline builtin bugfix JSCallDispatch Change-Id: Id67b991df5dee753a38c284234d15b02f0d8a091 !215 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !216 [baseline jit]update bytecode builtins * [baseline jit]update bytecode builtins !213 [BaselineJIT]support BaselineReturn and BaselineReturnundefined * [BaselineJIT]support BaselineReturn and BaselineReturnundefined !218 [BaselineJIT]baseline builtin * [BaselineJIT]baseline builtin:ldfunction,ldthis,asyncgeneratorresolvev… !217 parse baseline-jit bytecode v1.0 * parse bytecode in baseline-jit !220 [BaselineJIT]baseline refactor ParameterIndex * [BaselineJIT]baseline refactor ParameterIndex !223 [BaselineJIT]get function and method from stack, avoiding method is used after call * [BaselineJIT]get function and method from stack, avoiding method is us… !224 [BaselineJIT]bugfix for compiling x64.release * [BaselineJIT]bugfix for compiling x64.release !226 [BaselineJIT] adapt gc for BASELINE_BUILTIN_FRAME type * [BaselineJIT]adapt gc for BASELINE_BUILTIN_FRAME type !222 [BaselineJIT] parse baseline builtin args * [BaselineJIT] parse baseline builtin args:part 2 * [BaselineJIT] parse baseline builtin args !229 parse baseline-jit bytecode v2.0 * [BaselineJIT] parse bytecode v2.0 !230 [BaselineJIT] remove including undefined_function file * [BaselineJIT] remove including undefined_function file !228 handle byte opcode of jmp v2 * [baseline jit]handle opcode of jmp V2 [BaselineJIT]rebase bugfix Change-Id: I078298849139317dfa89fb139979c1b7d938b344 !231 [BaselineJIT] fix bugs about reading bytecode * [BaselineJIT] fix bugs about read bytecode !232 [BaselineJIT] fix bug about processing arguments in stub * [BaselineJIT] fix bug about processing argument in baseline-stubs !233 handle int64_t type in CallBuiltin * [baseline jit]handle int64_t type in CallBuiltin !234 [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 * [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 !235 [BaselineJIT] fix bugs about args type * [BaselineJIT] fix type of args that passing to builtins !236 [BaselineJIT] do not pass constpool to builtins * [BaselineJIT] do not passing constpool to builtin Change-Id: I8c46d70527a3fedd841d28ac1908a02d4a66edeb !237 [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type * [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type Change-Id: I3f42ecd06266a20b2b145cfe98bcbd97a2848bab [BaselineJIT] dump_test bugfix Change-Id: I97d21960ca98cd1a6fc9b1e81b647ff9d8d5d0c2 [BaselineJIT]codecheck fix Change-Id: I93eb02e45b70f4a5bfee84fec0c8e2cdc765d348 code check bugfix part2 Change-Id: I8680dd2c098193705709691fa78e8e6f3ad8cd6c bugfix for review Change-Id: I49b28e109530b9f8b403ba22ba39948e02834021 [BaselineJIT]change file folder Change-Id: I1f46110a804f17270badcff7cdeb2058ca164161 [BaselineJIT]bugfix for review part2 Change-Id: I190406652697f9b17ac6c84dd706262046dbb5f7 !238 [BaselineJIT] fix more than 6 args builtins * [BaselineJIT] fix more than 6 args builtins !239 [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 * [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 !240 [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 * [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 !241 [BaselineJIT] fix bug of ldnan, ldinfinity * [BaselineJIT] fix bug of ldnan, ldinfinity !242 [BaselineJIT] return JSCallDispatch result * [BaselineJIT] return result of JSCallDispatch for baselinecode !245 [BaselineJIT] fix builtins return value * [BaselineJIT] fix builtins return value !244 [BaselineJIT] save result to acc * [BaselineJIT] save result to acc !243 Bugfix for StlexvarImm4Imm4 * [baselineJit]Bugfix for StlexvarImm4Imm4 !246 [BaselineJIT] remove ldfunction * [BaselineJIT] remove ldfunction !248 [BaselineJIT] save result of DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8 * [BaselineJIT] fix return !247 [baselineJit]Bugfix for Stlexvar and Ldlexvar * [baselineJit]Bugfix for Stlexvar and Ldlexvar !249 [BaselineJIT] Revert "!242[BaselineJIT] return JSCallDispatch result" * Revert "!242 [BaselineJIT] return JSCallDispatch result" !251 Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 * [baselineJit]Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 !252 [baselineJit]Bugfix for notException branch * [baselineJit]Bugfix for notException branch !250 [BaselineJIT] save result to acc in JSCallDispatch for baselinemethodcode * [BaselineJIT] save result of JSCallDispatch to acc for baselinecode !254 [BaselineJIT] fix type bug * [BaselineJIT] fix type bug !255 [BaselineJIT] fix bug of LDAI_IMM32 * [BaselineJIT] fix bug of LDAI_IMM32 !253 Bugfix for Poplexenv * [baselineJit]Bugfix for Poplexenv !256 [BaselineJIT] fix pc & refractor jscalldispatch for baseline-jit * [BaselineJIT] fix pc of baseline-jit & refactor jscalldispatch for baseline-jit !257 [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline * [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline !258 [BaselineJIT] fix using shl2 builtin bug * [BaselineJIT] fix using shl2 builtin bug !259 Bugfix and enable BaselineIstrue and BaselineIsFalse * [baselineJit]Bugfix and enable BaselineIstrue and BaselineIsFalse !260 [BaselineJIT] fix bug about passing FUNC parameter * [BaselineJIT] fix bug about passing FUNC parameter !261 [BaselineJIT] support passing parameters by stack and fix offset param bug * [BaselineJIT] support passing parameters by stack and fix offset param bug !263 [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 * [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 !262 Bugfix for jump offset * [baselineJit]Bugfix for jump offset !264 [BaselineJIT] fix intermediates v8 parameters bug * [BaselineJIT] fix intermediates v8 parameters bug Change-Id: I8bf4fdf7621770a1976925423de23693570365c9 !267 [BaselineJIT] fix bug of BaselineInstanceofImm8V8 * [BaselineJIT] fix bug of BaselineInstanceofImm8V8 !269 [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMethod runtimeStub * [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMe… !268 [BaselineJIT]support update hotness * [BaselineJIT]enable update hotness part2 * [BaselineJIT]support update hotness Change-Id: I24b02a9e015df7263b1e9d7210377add0bfc558c CI bugfix Change-Id: I2d5aef07a1f14b3c64585790cff99d64be0d6396 Signed-off-by: w00443755 <wangzhilei2@huawei.com>
2024-01-26 08:08:45 +00:00
OPTION_COMPILER_ENABLE_BASELINEJIT,
OPTION_COMPILER_BASELINEJIT_HOTNESS_THRESHOLD,
OPTION_COMPILER_FORCE_BASELINEJIT_COMPILE_MAIN,
OPTION_ENABLE_AOT_CRASH_ESCAPE,
OPTION_COMPILER_ENABLE_JIT_FAST_COMPILE,
OPTION_COMPILER_BASELINE_PGO,
OPTION_ASYNC_LOAD_ABC,
OPTION_ASYNC_LOAD_ABC_TEST,
OPTION_PGO_TRACE,
OPTION_COMPILER_TRY_CATCH_FUNCTION,
OPTION_COMPILER_PGO_FORCE_DUMP,
};
static_assert(OPTION_SPLIT_ONE == 64); // add new option at the bottom, DO NOT modify this value
class PUBLIC_API JSRuntimeOptions {
public:
JSRuntimeOptions() {}
~JSRuntimeOptions() = default;
DEFAULT_COPY_SEMANTIC(JSRuntimeOptions);
DEFAULT_MOVE_SEMANTIC(JSRuntimeOptions);
bool ParseCommand(const int argc, const char** argv);
bool SetDefaultValue(char* argv);
bool EnableArkTools() const
{
return (enableArkTools_) || ((static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_ARKTOOLS) != 0);
}
void SetEnableArkTools(bool value)
{
enableArkTools_ = value;
}
bool WasSetEnableArkTools() const
{
return WasOptionSet(OPTION_ENABLE_ARK_TOOLS);
}
bool IsEnableRuntimeStat() const
{
return enableRuntimeStat_;
}
void SetEnableRuntimeStat(bool value)
{
enableRuntimeStat_ = value;
}
bool WasSetEnableRuntimeStat() const
{
return WasOptionSet(OPTION_ENABLE_RUNTIME_STAT);
}
std::string GetStubFile() const
{
return stubFile_;
}
void SetStubFile(std::string value)
{
stubFile_ = std::move(value);
}
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_;
}
void SetCompilerEnableExternalPkg(bool compilerEnableExternalPkg)
{
compilerEnableExternalPkg_ = compilerEnableExternalPkg;
}
bool GetCompilerEnableExternalPkg() const
{
return compilerEnableExternalPkg_;
}
bool WasStubFileSet() const
{
return WasOptionSet(OPTION_STUB_FILE);
}
void SetEnableAOT(bool value)
{
enableAOT_ = value;
}
bool GetEnableAOT() const
{
return enableAOT_;
}
std::string GetAOTOutputFile() const
{
return aotOutputFile_;
}
void SetAOTOutputFile(const std::string& value)
{
aotOutputFile_ = panda::os::file::File::GetExtendedFilePath(value);
}
bool WasAOTOutputFileSet() const
{
return WasOptionSet(OPTION_AOT_FILE);
}
std::string GetTargetTriple() const
{
return targetTriple_;
}
void SetTargetTriple(std::string value)
{
targetTriple_ = std::move(value);
}
size_t GetOptLevel() const
{
return asmOptLevel_;
}
void SetOptLevel(size_t value)
{
asmOptLevel_ = value;
}
size_t GetRelocMode() const
{
return relocationMode_;
}
void SetRelocMode(size_t value)
{
relocationMode_ = value;
}
bool EnableForceGC() const
{
return enableForceGc_;
}
void SetEnableForceGC(bool value)
{
enableForceGc_ = value;
}
bool EnableEdenGC() const
{
return enableEdenGC_;
}
void SetEnableEdenGC(bool value)
{
enableEdenGC_ = value;
}
bool ForceFullGC() const
{
return forceFullGc_;
}
void SetForceFullGC(bool value)
{
forceFullGc_ = value;
}
void SetForceSharedGCFrequency(size_t frequency)
{
forceSharedGc_ = frequency;
}
uint32_t GetForceSharedGCFrequency() const
{
return forceSharedGc_;
}
void SetGcThreadNum(size_t num)
{
gcThreadNum_ = num;
}
size_t GetGcThreadNum() const
{
return gcThreadNum_;
}
void SetLongPauseTime(size_t time)
{
longPauseTime_ = time;
}
size_t GetLongPauseTime() const
{
return longPauseTime_;
}
void SetArkProperties(int prop)
{
if (prop != ArkProperties::DEFAULT) {
arkProperties_ = prop;
}
}
void SetArkBundleName(std::string bundleName)
{
if (bundleName != "") {
arkBundleName_ = bundleName;
}
}
void SetMemConfigProperty(std::string configProperty)
{
if (configProperty != "") {
std::string key;
std::string value;
for (char c: configProperty) {
if (isdigit(c)) {
value += c;
} else {
key += c;
}
}
if (key == "jsHeap") {
heapSize_ = static_cast<size_t>(stoi(value)) * 1_MB;
}
}
}
size_t GetHeapSize() const
{
return heapSize_;
}
int GetDefaultProperties()
{
return ArkProperties::PARALLEL_GC | ArkProperties::CONCURRENT_MARK | ArkProperties::CONCURRENT_SWEEP |
ArkProperties::ENABLE_ARKTOOLS | ArkProperties::ENABLE_IDLE_GC;
}
int GetArkProperties()
{
return arkProperties_;
}
std::string GetArkBundleName() const
{
return arkBundleName_;
}
bool EnableOptionalLog() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::OPTIONAL_LOG) != 0;
}
bool EnableGCStatsPrint() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::GC_STATS_PRINT) != 0;
}
bool EnableParallelGC() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::PARALLEL_GC) != 0;
}
bool EnableConcurrentMark() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CONCURRENT_MARK) != 0;
}
bool EnableSharedConcurrentMark() const
{
// Use DISABLE to adapt to the exsiting ArkProperties in testing scripts.
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::DISABLE_SHARED_CONCURRENT_MARK) == 0;
}
bool EnableExceptionBacktrace() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::EXCEPTION_BACKTRACE) != 0;
}
bool EnableConcurrentSweep() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::CONCURRENT_SWEEP) != 0;
}
bool EnableThreadCheck() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::THREAD_CHECK) != 0;
}
bool EnableIdleGC() const
{
return false;
}
bool EnableGCTracer() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_GC_TRACER) != 0;
}
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;
}
bool EnableGlobalLeakCheck() const
{
return EnableGlobalObjectLeakCheck() || EnableGlobalPrimitiveLeakCheck();
}
bool EnableCpuProfilerColdStartMainThread() const
{
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;
}
bool EnableCpuProfilerVMTag() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_CPU_PROFILER_VM_TAG) != 0;
}
bool IsStartGlobalLeakCheck() const
{
return startGlobalLeakCheck_;
}
void SwitchStartGlobalLeakCheck()
{
startGlobalLeakCheck_ = !startGlobalLeakCheck_;
}
bool EnableSnapshotSerialize() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_SNAPSHOT_SERIALIZE) != 0;
}
bool EnableSnapshotDeserialize() const
{
if (WIN_OR_MAC_OR_IOS_PLATFORM) {
return false;
}
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_SNAPSHOT_DESERIALIZE) != 0;
}
bool EnableHeapVerify() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_HEAP_VERIFY) != 0;
}
bool EnableMicroJobTrace() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_MICROJOB_TRACE) != 0;
}
bool EnableESMTrace() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_ESM_TRACE) != 0;
}
bool EnableInitOldSocketSession() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_INIT_OLD_SOCKET_SESSION) != 0;
}
bool EnableModuleLog() const
{
return (static_cast<uint32_t>(arkProperties_) & ArkProperties::ENABLE_MODULE_LOG) != 0;
}
bool WasSetMaxNonmovableSpaceCapacity() const
{
return WasOptionSet(OPTION_MAX_UNMOVABLE_SPACE);
}
size_t MaxNonmovableSpaceCapacity() const
{
return maxNonmovableSpaceCapacity_;
}
void SetMaxNonmovableSpaceCapacity(uint32_t value)
{
maxNonmovableSpaceCapacity_ = value;
}
void SetEnableAsmInterpreter(bool value)
{
enableAsmInterpreter_ = value;
}
bool GetEnableAsmInterpreter() const
{
return enableAsmInterpreter_;
}
void SetEnableBuiltinsLazy(bool value)
{
enableBuiltinsLazy_ = value;
}
bool GetEnableBuiltinsLazy() const
{
return enableBuiltinsLazy_;
}
void SetAsmOpcodeDisableRange(std::string value)
{
asmOpcodeDisableRange_ = std::move(value);
}
void SetDisableCodeSign(bool value)
{
disableCodeSign_ = value;
}
bool GetDisableCodeSign() const
{
return disableCodeSign_;
}
void SetEnableJitFort(bool value)
{
enableJitFort_ = value;
}
bool GetEnableJitFort() const
{
return enableJitFort_;
}
void SetEnableAsyncCopyToFort(bool value)
{
enableAsyncCopyToFort_ = value;
}
bool GetEnableAsyncCopyToFort() const
{
return enableAsyncCopyToFort_;
}
void ParseAsmInterOption()
{
asmInterParsedOption_.enableAsm = enableAsmInterpreter_;
std::string strAsmOpcodeDisableRange = asmOpcodeDisableRange_;
if (strAsmOpcodeDisableRange.empty()) {
return;
}
// asm interpreter handle disable range
size_t pos = strAsmOpcodeDisableRange.find(",");
if (pos != std::string::npos) {
std::string strStart = strAsmOpcodeDisableRange.substr(0, pos);
std::string strEnd = strAsmOpcodeDisableRange.substr(pos + 1);
int start = strStart.empty() ? 0 : std::stoi(strStart);
int end = strEnd.empty() ? kungfu::BYTECODE_STUB_END_ID : std::stoi(strEnd);
if (start >= 0 && start < kungfu::BytecodeStubCSigns::NUM_OF_ALL_NORMAL_STUBS && end >= 0 &&
end < kungfu::BytecodeStubCSigns::NUM_OF_ALL_NORMAL_STUBS && start <= end) {
asmInterParsedOption_.handleStart = start;
asmInterParsedOption_.handleEnd = end;
}
}
}
AsmInterParsedOption GetAsmInterParsedOption() const
{
return asmInterParsedOption_;
}
std::string GetCompilerLogOption() const
{
return compilerLogOpt_;
}
void SetCompilerLogOption(std::string value)
{
compilerLogOpt_ = std::move(value);
}
bool WasSetCompilerLogOption() const
{
return WasOptionSet(OPTION_COMPILER_LOG_OPT) && GetCompilerLogOption().find("none") == std::string::npos;
}
std::string GetMethodsListForLog() const
{
return compilerLogMethods_;
}
void SetMethodsListForLog(std::string value)
{
compilerLogMethods_ = std::move(value);
}
bool WasSetMethodsListForLog() const
{
return WasOptionSet(OPTION_COMPILER_LOG_METHODS) && GetCompilerLogOption().find("none") == std::string::npos &&
GetCompilerLogOption().find("all") == std::string::npos;
}
void SetCompilerLogSnapshot(bool value)
{
compilerLogSnapshot_ = value;
}
bool IsEnableCompilerLogSnapshot() const
{
return compilerLogSnapshot_;
}
bool WasSetCompilerLogSnapshot() const
{
return WasOptionSet(OPTION_COMPILER_LOG_SNAPSHOT);
}
void SetCompilerLogTime(bool value)
{
compilerLogTime_ = value;
}
bool IsEnableCompilerLogTime() const
{
return compilerLogTime_;
}
bool WasSetCompilerLogTime() const
{
return WasOptionSet(OPTION_COMPILER_LOG_TIME);
}
uint64_t GetSerializerBufferSizeLimit() const
{
return serializerBufferSizeLimit_;
}
void SetSerializerBufferSizeLimit(uint64_t value)
{
serializerBufferSizeLimit_ = value;
}
uint32_t GetHeapSizeLimit() const
{
return heapSizeLimit_;
}
void SetHeapSizeLimit(uint32_t value)
{
heapSizeLimit_ = value;
}
bool WasSetHeapSizeLimit() const
{
return WasOptionSet(OPTION_HEAP_SIZE_LIMIT);
}
void SetIsWorker(bool isWorker)
{
isWorker_ = isWorker;
}
void SetIsRestrictedWorker(bool isRestrictedWorker)
{
isRestrictedWorker_ = isRestrictedWorker;
}
bool IsWorker() const
{
return isWorker_;
}
bool IsRestrictedWorker() const
{
return isRestrictedWorker_;
}
bool EnableIC() const
{
return enableIC_;
}
void SetEnableIC(bool value)
{
enableIC_ = value;
}
bool WasSetEnableIC() const
{
return WasOptionSet(OPTION_ENABLE_IC);
}
std::string GetIcuDataPath() const
{
return icuDataPath_;
}
void SetIcuDataPath(std::string value)
{
icuDataPath_ = std::move(value);
}
bool WasSetIcuDataPath() const
{
return WasOptionSet(OPTION_ICU_DATA_PATH);
}
bool IsStartupTime() const
{
return startupTime_;
}
void SetStartupTime(bool value)
{
startupTime_ = value;
}
bool WasSetStartupTime() const
{
return WasOptionSet(OPTION_STARTUP_TIME);
}
void SetTraceBc(bool value)
{
traceBc_ = value;
}
bool IsTraceBC() const
{
return traceBc_;
}
bool WasSetTraceBc() const
{
return WasOptionSet(OPTION_COMPILER_TRACE_BC);
}
std::string GetLogLevel() const
{
return logLevel_;
}
void SetLogLevel(std::string value)
{
logLevel_ = std::move(value);
}
bool WasSetLogLevel() const
{
return WasOptionSet(OPTION_LOG_LEVEL);
}
arg_list_t GetLogComponents() const
{
return logComponents_;
}
void SetLogComponents(arg_list_t value)
{
logComponents_ = std::move(value);
}
bool WasSetLogComponents() const
{
return WasOptionSet(OPTION_LOG_COMPONENTS);
}
arg_list_t GetLogDebug() const
{
return logDebug_;
}
void SetLogDebug(arg_list_t value)
{
logDebug_ = std::move(value);
}
bool WasSetLogDebug() const
{
return WasOptionSet(OPTION_LOG_DEBUG);
}
arg_list_t GetLogInfo() const
{
return logInfo_;
}
void SetLogInfo(arg_list_t value)
{
logInfo_ = std::move(value);
}
bool WasSetLogInfo() const
{
return WasOptionSet(OPTION_LOG_INFO);
}
arg_list_t GetLogWarning() const
{
return logWarning_;
}
void SetLogWarning(arg_list_t value)
{
logWarning_ = std::move(value);
}
bool WasSetLogWarning() const
{
return WasOptionSet(OPTION_LOG_WARNING);
}
arg_list_t GetLogError() const
{
return logError_;
}
void SetLogError(arg_list_t value)
{
logError_ = std::move(value);
}
bool WasSetLogError() const
{
return WasOptionSet(OPTION_LOG_ERROR);
}
arg_list_t GetLogFatal() const
{
return logFatal_;
}
void SetLogFatal(arg_list_t value)
{
logFatal_ = std::move(value);
}
bool WasSetLogFatal() const
{
return WasOptionSet(OPTION_LOG_FATAL);
}
size_t GetMaxAotMethodSize() const
{
return maxAotMethodSize_;
}
void SetMaxAotMethodSize(uint32_t value)
{
maxAotMethodSize_ = value;
}
double GetTypeThreshold() const
{
return typeThreshold_;
}
void SetTypeThreshold(double threshold)
{
typeThreshold_ = threshold;
}
std::string GetEntryPoint() const
{
return entryPoint_;
}
void SetEntryPoint(std::string value)
{
entryPoint_ = std::move(value);
}
bool WasSetEntryPoint() const
{
return WasOptionSet(OPTION_ENTRY_POINT);
}
bool GetMergeAbc() const
{
return mergeAbc_;
}
void SetMergeAbc(bool value)
{
mergeAbc_ = value;
}
void SetEnableContext(bool value)
{
enableContext_ = value;
}
bool IsEnableContext() const
{
return enableContext_;
}
void SetEnablePrintExecuteTime(bool value)
{
enablePrintExecuteTime_ = value;
}
bool IsEnablePrintExecuteTime() const
{
return enablePrintExecuteTime_;
}
void SetEnableElementsKind(bool value)
{
enableElementsKind_ = value;
}
bool IsEnableElementsKind() const
{
return enableElementsKind_;
}
void SetEnablePGOProfiler(bool value)
{
enablePGOProfiler_ = value;
}
bool IsEnablePGOProfiler() const
{
return enablePGOProfiler_;
}
uint32_t GetPGOHotnessThreshold() const
{
return pgoHotnessThreshold_;
}
void SetPGOHotnessThreshold(uint32_t threshold)
{
pgoHotnessThreshold_ = threshold;
}
uint32_t GetPGOSaveMinInterval() const
{
return pgoSaveMinInterval_;
}
void SetPGOSaveMinInterval(uint32_t value)
{
pgoSaveMinInterval_ = value;
}
std::string GetPGOProfilerPath() const
{
return pgoProfilerPath_;
}
void SetEnableBaselinePgo(bool value)
{
enableBaselinePgo_ = value;
}
bool IsEnableBaselinePgo() const
{
return enableBaselinePgo_;
}
void SetPGOProfilerPath(const std::string& value)
{
pgoProfilerPath_ = panda::os::file::File::GetExtendedFilePath(value);
}
bool IsPGOProfilerPathEmpty() const
{
return pgoProfilerPath_.empty();
}
void SetEnableTypeLowering(bool value)
{
enableTypeLowering_ = value;
}
bool IsEnableArrayBoundsCheckElimination() const
{
return enableArrayBoundsCheckElimination_;
}
void SetEnableArrayBoundsCheckElimination(bool value)
{
enableArrayBoundsCheckElimination_ = value;
}
bool IsEnableTypeLowering() const
{
return enableTypeLowering_;
}
void SetEnableEarlyElimination(bool value)
{
enableEarlyElimination_ = value;
}
bool IsEnableEarlyElimination() const
{
return enableEarlyElimination_;
}
void SetEnableLaterElimination(bool value)
{
enableLaterElimination_ = value;
}
bool IsEnableLaterElimination() const
{
return enableLaterElimination_;
}
void SetEnableInstrcutionCombine(bool value)
{
enableInstrcutionCombine = value;
}
bool IsEnableInstrcutionCombine() const
{
return enableInstrcutionCombine;
}
void SetEnableValueNumbering(bool value)
{
enableValueNumbering_ = value;
}
bool IsEnableValueNumbering() const
{
return enableValueNumbering_;
}
void SetEnableJIT(bool value)
{
enable baseline compiler add baseline builtins Change-Id: Ib8d7c392c62e21eab19b17e45c0fafb499cbbed9 support running baseline compiler by option --compiler-force-baseline-compile-main=true Change-Id: I7c7337faf9fad39ccffb2de28d46403e2f6cb22b baseline jit part3 Change-Id: I36e8dd6a6fa6fffb738029a8620bbcd01df1e017 baseline part4 Change-Id: Ib45bcf7255a85aa48f864a6021adf819927e6a13 baseline part5 move baseline into compiler folder Change-Id: Ia8781c95ae00c4f300e7267a6da0078b5d04e4c8 !185 support BaselinePrologue * support BaselinePrologue part3 * support BaselinePrologue part2 * support BaselinePrologue !187 [BaselineJit] support load baseline builtins * [BaselineJit]support load baseline builtins !186[BaselineJIT] workaround for baselinejit support install code * install code part3 * install code part2 * baseline jit support intall code !188 [BaselineJit] support CallBuiltin * [BaselineJit] baseline support CallBuiltin !189 [BaselineJIT]implement StackOffset class * [BaselineJIT]implement StackOffset class !190 [BaselineJIT]refactor BaselineAssembler and MacroAssembler * [BaselineJIT]refactor BaselineAssembler and MacroAssembler !191 [BaselineJIT] refactor class BaselineCompiler * [BaselineJIT] refactor class BaselineCompiler !192 [BaselineJIT] callbuiltin support new parameter type new parameter type: int32_t,SpecialParameter,VirtualRegister !193 [BaselineJIT]modify BaselineLoadObjByName function * [BaselineJIT]modify BaselineLoadObjByName function !194 [BaselineJIT] support new builtins * [BaselineJIT] add BaselineTryLdGLobalByNameImm8ID16, BaselineStToGlobalRecordImm16ID16, BaselineLdaStrID16 !196 [BaselineJIT]bugfix for BaselinePrologue, align the rsp * [BaselineJIT]bugfix for BaselinePrologue, align the rsp !197 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !198 [BaselineJIT]workaround for helloworld testcase, helloworld can run successfully * workaround for helloworld testcase, helloworld can run successfully !200 [BaselineJIT]adapt profile collection * [BaselineJIT]adapt profile collection !201 [BaselineJIT]refactor baseline jit * [BaselineJIT]refactor baseline jit !203 [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async * [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async !202 [BaselineJIT]enable update hotness * [BaselineJIT]enable update hotness !205 [BaselineJIT]adapt JSCallDispatch interface * [BaselineJIT]adapt JSCallDispatch interface Change-Id: I4efce4346f985c7e074d7fc4bbfe3b081272e950 !195 [Baseline JIT] bytecode to builtin funs * !206 enable bytecode builtins and call CHECK_PENDING_EXCEPTION * [Baseline JIT] builtins:StobjbynameImm9Id16V8,StobjbynameImm16Id16V8,S… * [Baseline JIT] builtins:CopyrestargsImm8,LdlexvarImm4Imm4,StlexvarImm4… * [Baseline JIT] builtins: LdsuperbyvalueImm8V8,LdsuperbyvalueImm16V8,St… * [Baseline JIT] builtins: DelobjpropV8,AsyncfunctionawaituncaughtV8,Cop… * !204 enable bytecode builtins * [Baseline JIT] builtins: DefineclasswithbufferImm8Id16Id16Imm16V8,Defi… * [Baseline JIT] builtins: LdthisbynameImm8Id16,Definegettersetterbyval… * [Baseline JIT] builtins: Callarg0Imm8,SupercallspreadImm8V8,ApplyImm8V… * !199 enable bytecode builtin func * [Baseline JIT] builtins: StrictnoteqImm8V8,StricteqImm8V8,Istrue,Isfal… * [Baseline JIT] builtins: NegImm8,NotImm8,IncImm8,DecImm8,IsinImm8V8,In… * [Baseline JIT] builtins: And2Imm8V8,Or2Imm8V8,Xor2Imm8V8,ExpImm8V8,Typ… * [Baseline JIT] builtins:LessImm8V8,LesseqImm8V8,GreaterImm8V8,Greatere… * [Baseline JIT] builtins:Add2Imm8V8,SUB2_IMM8_V8,MUL2_IMM8_V8,DIV2_IMM8… * [Baseline JIT] builtins:CreateobjectwithbufferImm8Id16,Createobjectwit… * [Baseline JIT]builtins:Createemptyobject,CreateemptyarrayImm8,Createem… * [Baseline JIT] builtins:GetiteratorImm16,Asyncfunctionenter,Createasyn… * [Baseline JIT] builtins:ldsymbol,ldglobal,Poplexenv,Getunmappedargs,Ge… * [BaselineJIT] builtins: add base class !209 handle opcode in baseline compiler * handle opcode in baseline compiler !210 [baseline jit]: add baseline stub call signature target kind info * [baseline jit]: add baseline stub call signature target kind info !212 [BaselineJIT]baseline builtin bugfix * [BaselineJIT]baseline builtin bugfix !207 [BaselineJIT]support BaselineBuiltinFrame * [BaselineJIT]support BaselineBuiltinFrame !214 [BaselineJIT]baseline builtin bugfix of using JSCallDispatch * [BaselineJIT]baseline builtin bugfix JSCallDispatch Change-Id: Id67b991df5dee753a38c284234d15b02f0d8a091 !215 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !216 [baseline jit]update bytecode builtins * [baseline jit]update bytecode builtins !213 [BaselineJIT]support BaselineReturn and BaselineReturnundefined * [BaselineJIT]support BaselineReturn and BaselineReturnundefined !218 [BaselineJIT]baseline builtin * [BaselineJIT]baseline builtin:ldfunction,ldthis,asyncgeneratorresolvev… !217 parse baseline-jit bytecode v1.0 * parse bytecode in baseline-jit !220 [BaselineJIT]baseline refactor ParameterIndex * [BaselineJIT]baseline refactor ParameterIndex !223 [BaselineJIT]get function and method from stack, avoiding method is used after call * [BaselineJIT]get function and method from stack, avoiding method is us… !224 [BaselineJIT]bugfix for compiling x64.release * [BaselineJIT]bugfix for compiling x64.release !226 [BaselineJIT] adapt gc for BASELINE_BUILTIN_FRAME type * [BaselineJIT]adapt gc for BASELINE_BUILTIN_FRAME type !222 [BaselineJIT] parse baseline builtin args * [BaselineJIT] parse baseline builtin args:part 2 * [BaselineJIT] parse baseline builtin args !229 parse baseline-jit bytecode v2.0 * [BaselineJIT] parse bytecode v2.0 !230 [BaselineJIT] remove including undefined_function file * [BaselineJIT] remove including undefined_function file !228 handle byte opcode of jmp v2 * [baseline jit]handle opcode of jmp V2 [BaselineJIT]rebase bugfix Change-Id: I078298849139317dfa89fb139979c1b7d938b344 !231 [BaselineJIT] fix bugs about reading bytecode * [BaselineJIT] fix bugs about read bytecode !232 [BaselineJIT] fix bug about processing arguments in stub * [BaselineJIT] fix bug about processing argument in baseline-stubs !233 handle int64_t type in CallBuiltin * [baseline jit]handle int64_t type in CallBuiltin !234 [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 * [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 !235 [BaselineJIT] fix bugs about args type * [BaselineJIT] fix type of args that passing to builtins !236 [BaselineJIT] do not pass constpool to builtins * [BaselineJIT] do not passing constpool to builtin Change-Id: I8c46d70527a3fedd841d28ac1908a02d4a66edeb !237 [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type * [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type Change-Id: I3f42ecd06266a20b2b145cfe98bcbd97a2848bab [BaselineJIT] dump_test bugfix Change-Id: I97d21960ca98cd1a6fc9b1e81b647ff9d8d5d0c2 [BaselineJIT]codecheck fix Change-Id: I93eb02e45b70f4a5bfee84fec0c8e2cdc765d348 code check bugfix part2 Change-Id: I8680dd2c098193705709691fa78e8e6f3ad8cd6c bugfix for review Change-Id: I49b28e109530b9f8b403ba22ba39948e02834021 [BaselineJIT]change file folder Change-Id: I1f46110a804f17270badcff7cdeb2058ca164161 [BaselineJIT]bugfix for review part2 Change-Id: I190406652697f9b17ac6c84dd706262046dbb5f7 !238 [BaselineJIT] fix more than 6 args builtins * [BaselineJIT] fix more than 6 args builtins !239 [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 * [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 !240 [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 * [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 !241 [BaselineJIT] fix bug of ldnan, ldinfinity * [BaselineJIT] fix bug of ldnan, ldinfinity !242 [BaselineJIT] return JSCallDispatch result * [BaselineJIT] return result of JSCallDispatch for baselinecode !245 [BaselineJIT] fix builtins return value * [BaselineJIT] fix builtins return value !244 [BaselineJIT] save result to acc * [BaselineJIT] save result to acc !243 Bugfix for StlexvarImm4Imm4 * [baselineJit]Bugfix for StlexvarImm4Imm4 !246 [BaselineJIT] remove ldfunction * [BaselineJIT] remove ldfunction !248 [BaselineJIT] save result of DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8 * [BaselineJIT] fix return !247 [baselineJit]Bugfix for Stlexvar and Ldlexvar * [baselineJit]Bugfix for Stlexvar and Ldlexvar !249 [BaselineJIT] Revert "!242[BaselineJIT] return JSCallDispatch result" * Revert "!242 [BaselineJIT] return JSCallDispatch result" !251 Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 * [baselineJit]Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 !252 [baselineJit]Bugfix for notException branch * [baselineJit]Bugfix for notException branch !250 [BaselineJIT] save result to acc in JSCallDispatch for baselinemethodcode * [BaselineJIT] save result of JSCallDispatch to acc for baselinecode !254 [BaselineJIT] fix type bug * [BaselineJIT] fix type bug !255 [BaselineJIT] fix bug of LDAI_IMM32 * [BaselineJIT] fix bug of LDAI_IMM32 !253 Bugfix for Poplexenv * [baselineJit]Bugfix for Poplexenv !256 [BaselineJIT] fix pc & refractor jscalldispatch for baseline-jit * [BaselineJIT] fix pc of baseline-jit & refactor jscalldispatch for baseline-jit !257 [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline * [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline !258 [BaselineJIT] fix using shl2 builtin bug * [BaselineJIT] fix using shl2 builtin bug !259 Bugfix and enable BaselineIstrue and BaselineIsFalse * [baselineJit]Bugfix and enable BaselineIstrue and BaselineIsFalse !260 [BaselineJIT] fix bug about passing FUNC parameter * [BaselineJIT] fix bug about passing FUNC parameter !261 [BaselineJIT] support passing parameters by stack and fix offset param bug * [BaselineJIT] support passing parameters by stack and fix offset param bug !263 [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 * [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 !262 Bugfix for jump offset * [baselineJit]Bugfix for jump offset !264 [BaselineJIT] fix intermediates v8 parameters bug * [BaselineJIT] fix intermediates v8 parameters bug Change-Id: I8bf4fdf7621770a1976925423de23693570365c9 !267 [BaselineJIT] fix bug of BaselineInstanceofImm8V8 * [BaselineJIT] fix bug of BaselineInstanceofImm8V8 !269 [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMethod runtimeStub * [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMe… !268 [BaselineJIT]support update hotness * [BaselineJIT]enable update hotness part2 * [BaselineJIT]support update hotness Change-Id: I24b02a9e015df7263b1e9d7210377add0bfc558c CI bugfix Change-Id: I2d5aef07a1f14b3c64585790cff99d64be0d6396 Signed-off-by: w00443755 <wangzhilei2@huawei.com>
2024-01-26 08:08:45 +00:00
enableFastJIT_ = value;
}
bool IsEnableJIT() const
{
enable baseline compiler add baseline builtins Change-Id: Ib8d7c392c62e21eab19b17e45c0fafb499cbbed9 support running baseline compiler by option --compiler-force-baseline-compile-main=true Change-Id: I7c7337faf9fad39ccffb2de28d46403e2f6cb22b baseline jit part3 Change-Id: I36e8dd6a6fa6fffb738029a8620bbcd01df1e017 baseline part4 Change-Id: Ib45bcf7255a85aa48f864a6021adf819927e6a13 baseline part5 move baseline into compiler folder Change-Id: Ia8781c95ae00c4f300e7267a6da0078b5d04e4c8 !185 support BaselinePrologue * support BaselinePrologue part3 * support BaselinePrologue part2 * support BaselinePrologue !187 [BaselineJit] support load baseline builtins * [BaselineJit]support load baseline builtins !186[BaselineJIT] workaround for baselinejit support install code * install code part3 * install code part2 * baseline jit support intall code !188 [BaselineJit] support CallBuiltin * [BaselineJit] baseline support CallBuiltin !189 [BaselineJIT]implement StackOffset class * [BaselineJIT]implement StackOffset class !190 [BaselineJIT]refactor BaselineAssembler and MacroAssembler * [BaselineJIT]refactor BaselineAssembler and MacroAssembler !191 [BaselineJIT] refactor class BaselineCompiler * [BaselineJIT] refactor class BaselineCompiler !192 [BaselineJIT] callbuiltin support new parameter type new parameter type: int32_t,SpecialParameter,VirtualRegister !193 [BaselineJIT]modify BaselineLoadObjByName function * [BaselineJIT]modify BaselineLoadObjByName function !194 [BaselineJIT] support new builtins * [BaselineJIT] add BaselineTryLdGLobalByNameImm8ID16, BaselineStToGlobalRecordImm16ID16, BaselineLdaStrID16 !196 [BaselineJIT]bugfix for BaselinePrologue, align the rsp * [BaselineJIT]bugfix for BaselinePrologue, align the rsp !197 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !198 [BaselineJIT]workaround for helloworld testcase, helloworld can run successfully * workaround for helloworld testcase, helloworld can run successfully !200 [BaselineJIT]adapt profile collection * [BaselineJIT]adapt profile collection !201 [BaselineJIT]refactor baseline jit * [BaselineJIT]refactor baseline jit !203 [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async * [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async !202 [BaselineJIT]enable update hotness * [BaselineJIT]enable update hotness !205 [BaselineJIT]adapt JSCallDispatch interface * [BaselineJIT]adapt JSCallDispatch interface Change-Id: I4efce4346f985c7e074d7fc4bbfe3b081272e950 !195 [Baseline JIT] bytecode to builtin funs * !206 enable bytecode builtins and call CHECK_PENDING_EXCEPTION * [Baseline JIT] builtins:StobjbynameImm9Id16V8,StobjbynameImm16Id16V8,S… * [Baseline JIT] builtins:CopyrestargsImm8,LdlexvarImm4Imm4,StlexvarImm4… * [Baseline JIT] builtins: LdsuperbyvalueImm8V8,LdsuperbyvalueImm16V8,St… * [Baseline JIT] builtins: DelobjpropV8,AsyncfunctionawaituncaughtV8,Cop… * !204 enable bytecode builtins * [Baseline JIT] builtins: DefineclasswithbufferImm8Id16Id16Imm16V8,Defi… * [Baseline JIT] builtins: LdthisbynameImm8Id16,Definegettersetterbyval… * [Baseline JIT] builtins: Callarg0Imm8,SupercallspreadImm8V8,ApplyImm8V… * !199 enable bytecode builtin func * [Baseline JIT] builtins: StrictnoteqImm8V8,StricteqImm8V8,Istrue,Isfal… * [Baseline JIT] builtins: NegImm8,NotImm8,IncImm8,DecImm8,IsinImm8V8,In… * [Baseline JIT] builtins: And2Imm8V8,Or2Imm8V8,Xor2Imm8V8,ExpImm8V8,Typ… * [Baseline JIT] builtins:LessImm8V8,LesseqImm8V8,GreaterImm8V8,Greatere… * [Baseline JIT] builtins:Add2Imm8V8,SUB2_IMM8_V8,MUL2_IMM8_V8,DIV2_IMM8… * [Baseline JIT] builtins:CreateobjectwithbufferImm8Id16,Createobjectwit… * [Baseline JIT]builtins:Createemptyobject,CreateemptyarrayImm8,Createem… * [Baseline JIT] builtins:GetiteratorImm16,Asyncfunctionenter,Createasyn… * [Baseline JIT] builtins:ldsymbol,ldglobal,Poplexenv,Getunmappedargs,Ge… * [BaselineJIT] builtins: add base class !209 handle opcode in baseline compiler * handle opcode in baseline compiler !210 [baseline jit]: add baseline stub call signature target kind info * [baseline jit]: add baseline stub call signature target kind info !212 [BaselineJIT]baseline builtin bugfix * [BaselineJIT]baseline builtin bugfix !207 [BaselineJIT]support BaselineBuiltinFrame * [BaselineJIT]support BaselineBuiltinFrame !214 [BaselineJIT]baseline builtin bugfix of using JSCallDispatch * [BaselineJIT]baseline builtin bugfix JSCallDispatch Change-Id: Id67b991df5dee753a38c284234d15b02f0d8a091 !215 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !216 [baseline jit]update bytecode builtins * [baseline jit]update bytecode builtins !213 [BaselineJIT]support BaselineReturn and BaselineReturnundefined * [BaselineJIT]support BaselineReturn and BaselineReturnundefined !218 [BaselineJIT]baseline builtin * [BaselineJIT]baseline builtin:ldfunction,ldthis,asyncgeneratorresolvev… !217 parse baseline-jit bytecode v1.0 * parse bytecode in baseline-jit !220 [BaselineJIT]baseline refactor ParameterIndex * [BaselineJIT]baseline refactor ParameterIndex !223 [BaselineJIT]get function and method from stack, avoiding method is used after call * [BaselineJIT]get function and method from stack, avoiding method is us… !224 [BaselineJIT]bugfix for compiling x64.release * [BaselineJIT]bugfix for compiling x64.release !226 [BaselineJIT] adapt gc for BASELINE_BUILTIN_FRAME type * [BaselineJIT]adapt gc for BASELINE_BUILTIN_FRAME type !222 [BaselineJIT] parse baseline builtin args * [BaselineJIT] parse baseline builtin args:part 2 * [BaselineJIT] parse baseline builtin args !229 parse baseline-jit bytecode v2.0 * [BaselineJIT] parse bytecode v2.0 !230 [BaselineJIT] remove including undefined_function file * [BaselineJIT] remove including undefined_function file !228 handle byte opcode of jmp v2 * [baseline jit]handle opcode of jmp V2 [BaselineJIT]rebase bugfix Change-Id: I078298849139317dfa89fb139979c1b7d938b344 !231 [BaselineJIT] fix bugs about reading bytecode * [BaselineJIT] fix bugs about read bytecode !232 [BaselineJIT] fix bug about processing arguments in stub * [BaselineJIT] fix bug about processing argument in baseline-stubs !233 handle int64_t type in CallBuiltin * [baseline jit]handle int64_t type in CallBuiltin !234 [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 * [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 !235 [BaselineJIT] fix bugs about args type * [BaselineJIT] fix type of args that passing to builtins !236 [BaselineJIT] do not pass constpool to builtins * [BaselineJIT] do not passing constpool to builtin Change-Id: I8c46d70527a3fedd841d28ac1908a02d4a66edeb !237 [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type * [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type Change-Id: I3f42ecd06266a20b2b145cfe98bcbd97a2848bab [BaselineJIT] dump_test bugfix Change-Id: I97d21960ca98cd1a6fc9b1e81b647ff9d8d5d0c2 [BaselineJIT]codecheck fix Change-Id: I93eb02e45b70f4a5bfee84fec0c8e2cdc765d348 code check bugfix part2 Change-Id: I8680dd2c098193705709691fa78e8e6f3ad8cd6c bugfix for review Change-Id: I49b28e109530b9f8b403ba22ba39948e02834021 [BaselineJIT]change file folder Change-Id: I1f46110a804f17270badcff7cdeb2058ca164161 [BaselineJIT]bugfix for review part2 Change-Id: I190406652697f9b17ac6c84dd706262046dbb5f7 !238 [BaselineJIT] fix more than 6 args builtins * [BaselineJIT] fix more than 6 args builtins !239 [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 * [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 !240 [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 * [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 !241 [BaselineJIT] fix bug of ldnan, ldinfinity * [BaselineJIT] fix bug of ldnan, ldinfinity !242 [BaselineJIT] return JSCallDispatch result * [BaselineJIT] return result of JSCallDispatch for baselinecode !245 [BaselineJIT] fix builtins return value * [BaselineJIT] fix builtins return value !244 [BaselineJIT] save result to acc * [BaselineJIT] save result to acc !243 Bugfix for StlexvarImm4Imm4 * [baselineJit]Bugfix for StlexvarImm4Imm4 !246 [BaselineJIT] remove ldfunction * [BaselineJIT] remove ldfunction !248 [BaselineJIT] save result of DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8 * [BaselineJIT] fix return !247 [baselineJit]Bugfix for Stlexvar and Ldlexvar * [baselineJit]Bugfix for Stlexvar and Ldlexvar !249 [BaselineJIT] Revert "!242[BaselineJIT] return JSCallDispatch result" * Revert "!242 [BaselineJIT] return JSCallDispatch result" !251 Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 * [baselineJit]Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 !252 [baselineJit]Bugfix for notException branch * [baselineJit]Bugfix for notException branch !250 [BaselineJIT] save result to acc in JSCallDispatch for baselinemethodcode * [BaselineJIT] save result of JSCallDispatch to acc for baselinecode !254 [BaselineJIT] fix type bug * [BaselineJIT] fix type bug !255 [BaselineJIT] fix bug of LDAI_IMM32 * [BaselineJIT] fix bug of LDAI_IMM32 !253 Bugfix for Poplexenv * [baselineJit]Bugfix for Poplexenv !256 [BaselineJIT] fix pc & refractor jscalldispatch for baseline-jit * [BaselineJIT] fix pc of baseline-jit & refactor jscalldispatch for baseline-jit !257 [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline * [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline !258 [BaselineJIT] fix using shl2 builtin bug * [BaselineJIT] fix using shl2 builtin bug !259 Bugfix and enable BaselineIstrue and BaselineIsFalse * [baselineJit]Bugfix and enable BaselineIstrue and BaselineIsFalse !260 [BaselineJIT] fix bug about passing FUNC parameter * [BaselineJIT] fix bug about passing FUNC parameter !261 [BaselineJIT] support passing parameters by stack and fix offset param bug * [BaselineJIT] support passing parameters by stack and fix offset param bug !263 [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 * [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 !262 Bugfix for jump offset * [baselineJit]Bugfix for jump offset !264 [BaselineJIT] fix intermediates v8 parameters bug * [BaselineJIT] fix intermediates v8 parameters bug Change-Id: I8bf4fdf7621770a1976925423de23693570365c9 !267 [BaselineJIT] fix bug of BaselineInstanceofImm8V8 * [BaselineJIT] fix bug of BaselineInstanceofImm8V8 !269 [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMethod runtimeStub * [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMe… !268 [BaselineJIT]support update hotness * [BaselineJIT]enable update hotness part2 * [BaselineJIT]support update hotness Change-Id: I24b02a9e015df7263b1e9d7210377add0bfc558c CI bugfix Change-Id: I2d5aef07a1f14b3c64585790cff99d64be0d6396 Signed-off-by: w00443755 <wangzhilei2@huawei.com>
2024-01-26 08:08:45 +00:00
return enableFastJIT_;
}
void SetEnableAPPJIT(bool value)
{
enableAPPJIT_ = value;
}
bool IsEnableAPPJIT() const
{
return enableAPPJIT_;
}
void SetEnableJitFrame(bool value)
{
enableJitFrame_ = value;
}
bool IsEnableJitFrame() const
{
return enableJitFrame_;
}
bool IsEnableJitDfxDump() const
{
return isEnableJitDfxDump_;
}
void SetEnableJitDfxDump(bool value)
{
isEnableJitDfxDump_ = value;
}
void SetEnableOSR(bool value)
{
enableOSR_ = value;
}
bool IsEnableOSR() const
{
return enableOSR_;
}
void SetJitHotnessThreshold(uint16_t value)
{
jitHotnessThreshold_ = value;
}
uint16_t GetJitHotnessThreshold() const
{
return jitHotnessThreshold_;
}
void SetJitCallThreshold(uint8_t value)
{
jitCallThreshold_ = value;
}
uint8_t GetJitCallThreshold() const
{
return jitCallThreshold_;
}
void SetOsrHotnessThreshold(uint16_t value)
{
osrHotnessThreshold_ = value;
}
uint16_t GetOsrHotnessThreshold() const
{
return osrHotnessThreshold_;
}
void SetForceJitCompileMain(bool value)
{
forceJitCompileMain_ = value;
}
bool IsEnableForceJitCompileMain()
{
return forceJitCompileMain_;
}
enable baseline compiler add baseline builtins Change-Id: Ib8d7c392c62e21eab19b17e45c0fafb499cbbed9 support running baseline compiler by option --compiler-force-baseline-compile-main=true Change-Id: I7c7337faf9fad39ccffb2de28d46403e2f6cb22b baseline jit part3 Change-Id: I36e8dd6a6fa6fffb738029a8620bbcd01df1e017 baseline part4 Change-Id: Ib45bcf7255a85aa48f864a6021adf819927e6a13 baseline part5 move baseline into compiler folder Change-Id: Ia8781c95ae00c4f300e7267a6da0078b5d04e4c8 !185 support BaselinePrologue * support BaselinePrologue part3 * support BaselinePrologue part2 * support BaselinePrologue !187 [BaselineJit] support load baseline builtins * [BaselineJit]support load baseline builtins !186[BaselineJIT] workaround for baselinejit support install code * install code part3 * install code part2 * baseline jit support intall code !188 [BaselineJit] support CallBuiltin * [BaselineJit] baseline support CallBuiltin !189 [BaselineJIT]implement StackOffset class * [BaselineJIT]implement StackOffset class !190 [BaselineJIT]refactor BaselineAssembler and MacroAssembler * [BaselineJIT]refactor BaselineAssembler and MacroAssembler !191 [BaselineJIT] refactor class BaselineCompiler * [BaselineJIT] refactor class BaselineCompiler !192 [BaselineJIT] callbuiltin support new parameter type new parameter type: int32_t,SpecialParameter,VirtualRegister !193 [BaselineJIT]modify BaselineLoadObjByName function * [BaselineJIT]modify BaselineLoadObjByName function !194 [BaselineJIT] support new builtins * [BaselineJIT] add BaselineTryLdGLobalByNameImm8ID16, BaselineStToGlobalRecordImm16ID16, BaselineLdaStrID16 !196 [BaselineJIT]bugfix for BaselinePrologue, align the rsp * [BaselineJIT]bugfix for BaselinePrologue, align the rsp !197 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !198 [BaselineJIT]workaround for helloworld testcase, helloworld can run successfully * workaround for helloworld testcase, helloworld can run successfully !200 [BaselineJIT]adapt profile collection * [BaselineJIT]adapt profile collection !201 [BaselineJIT]refactor baseline jit * [BaselineJIT]refactor baseline jit !203 [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async * [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async !202 [BaselineJIT]enable update hotness * [BaselineJIT]enable update hotness !205 [BaselineJIT]adapt JSCallDispatch interface * [BaselineJIT]adapt JSCallDispatch interface Change-Id: I4efce4346f985c7e074d7fc4bbfe3b081272e950 !195 [Baseline JIT] bytecode to builtin funs * !206 enable bytecode builtins and call CHECK_PENDING_EXCEPTION * [Baseline JIT] builtins:StobjbynameImm9Id16V8,StobjbynameImm16Id16V8,S… * [Baseline JIT] builtins:CopyrestargsImm8,LdlexvarImm4Imm4,StlexvarImm4… * [Baseline JIT] builtins: LdsuperbyvalueImm8V8,LdsuperbyvalueImm16V8,St… * [Baseline JIT] builtins: DelobjpropV8,AsyncfunctionawaituncaughtV8,Cop… * !204 enable bytecode builtins * [Baseline JIT] builtins: DefineclasswithbufferImm8Id16Id16Imm16V8,Defi… * [Baseline JIT] builtins: LdthisbynameImm8Id16,Definegettersetterbyval… * [Baseline JIT] builtins: Callarg0Imm8,SupercallspreadImm8V8,ApplyImm8V… * !199 enable bytecode builtin func * [Baseline JIT] builtins: StrictnoteqImm8V8,StricteqImm8V8,Istrue,Isfal… * [Baseline JIT] builtins: NegImm8,NotImm8,IncImm8,DecImm8,IsinImm8V8,In… * [Baseline JIT] builtins: And2Imm8V8,Or2Imm8V8,Xor2Imm8V8,ExpImm8V8,Typ… * [Baseline JIT] builtins:LessImm8V8,LesseqImm8V8,GreaterImm8V8,Greatere… * [Baseline JIT] builtins:Add2Imm8V8,SUB2_IMM8_V8,MUL2_IMM8_V8,DIV2_IMM8… * [Baseline JIT] builtins:CreateobjectwithbufferImm8Id16,Createobjectwit… * [Baseline JIT]builtins:Createemptyobject,CreateemptyarrayImm8,Createem… * [Baseline JIT] builtins:GetiteratorImm16,Asyncfunctionenter,Createasyn… * [Baseline JIT] builtins:ldsymbol,ldglobal,Poplexenv,Getunmappedargs,Ge… * [BaselineJIT] builtins: add base class !209 handle opcode in baseline compiler * handle opcode in baseline compiler !210 [baseline jit]: add baseline stub call signature target kind info * [baseline jit]: add baseline stub call signature target kind info !212 [BaselineJIT]baseline builtin bugfix * [BaselineJIT]baseline builtin bugfix !207 [BaselineJIT]support BaselineBuiltinFrame * [BaselineJIT]support BaselineBuiltinFrame !214 [BaselineJIT]baseline builtin bugfix of using JSCallDispatch * [BaselineJIT]baseline builtin bugfix JSCallDispatch Change-Id: Id67b991df5dee753a38c284234d15b02f0d8a091 !215 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !216 [baseline jit]update bytecode builtins * [baseline jit]update bytecode builtins !213 [BaselineJIT]support BaselineReturn and BaselineReturnundefined * [BaselineJIT]support BaselineReturn and BaselineReturnundefined !218 [BaselineJIT]baseline builtin * [BaselineJIT]baseline builtin:ldfunction,ldthis,asyncgeneratorresolvev… !217 parse baseline-jit bytecode v1.0 * parse bytecode in baseline-jit !220 [BaselineJIT]baseline refactor ParameterIndex * [BaselineJIT]baseline refactor ParameterIndex !223 [BaselineJIT]get function and method from stack, avoiding method is used after call * [BaselineJIT]get function and method from stack, avoiding method is us… !224 [BaselineJIT]bugfix for compiling x64.release * [BaselineJIT]bugfix for compiling x64.release !226 [BaselineJIT] adapt gc for BASELINE_BUILTIN_FRAME type * [BaselineJIT]adapt gc for BASELINE_BUILTIN_FRAME type !222 [BaselineJIT] parse baseline builtin args * [BaselineJIT] parse baseline builtin args:part 2 * [BaselineJIT] parse baseline builtin args !229 parse baseline-jit bytecode v2.0 * [BaselineJIT] parse bytecode v2.0 !230 [BaselineJIT] remove including undefined_function file * [BaselineJIT] remove including undefined_function file !228 handle byte opcode of jmp v2 * [baseline jit]handle opcode of jmp V2 [BaselineJIT]rebase bugfix Change-Id: I078298849139317dfa89fb139979c1b7d938b344 !231 [BaselineJIT] fix bugs about reading bytecode * [BaselineJIT] fix bugs about read bytecode !232 [BaselineJIT] fix bug about processing arguments in stub * [BaselineJIT] fix bug about processing argument in baseline-stubs !233 handle int64_t type in CallBuiltin * [baseline jit]handle int64_t type in CallBuiltin !234 [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 * [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 !235 [BaselineJIT] fix bugs about args type * [BaselineJIT] fix type of args that passing to builtins !236 [BaselineJIT] do not pass constpool to builtins * [BaselineJIT] do not passing constpool to builtin Change-Id: I8c46d70527a3fedd841d28ac1908a02d4a66edeb !237 [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type * [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type Change-Id: I3f42ecd06266a20b2b145cfe98bcbd97a2848bab [BaselineJIT] dump_test bugfix Change-Id: I97d21960ca98cd1a6fc9b1e81b647ff9d8d5d0c2 [BaselineJIT]codecheck fix Change-Id: I93eb02e45b70f4a5bfee84fec0c8e2cdc765d348 code check bugfix part2 Change-Id: I8680dd2c098193705709691fa78e8e6f3ad8cd6c bugfix for review Change-Id: I49b28e109530b9f8b403ba22ba39948e02834021 [BaselineJIT]change file folder Change-Id: I1f46110a804f17270badcff7cdeb2058ca164161 [BaselineJIT]bugfix for review part2 Change-Id: I190406652697f9b17ac6c84dd706262046dbb5f7 !238 [BaselineJIT] fix more than 6 args builtins * [BaselineJIT] fix more than 6 args builtins !239 [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 * [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 !240 [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 * [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 !241 [BaselineJIT] fix bug of ldnan, ldinfinity * [BaselineJIT] fix bug of ldnan, ldinfinity !242 [BaselineJIT] return JSCallDispatch result * [BaselineJIT] return result of JSCallDispatch for baselinecode !245 [BaselineJIT] fix builtins return value * [BaselineJIT] fix builtins return value !244 [BaselineJIT] save result to acc * [BaselineJIT] save result to acc !243 Bugfix for StlexvarImm4Imm4 * [baselineJit]Bugfix for StlexvarImm4Imm4 !246 [BaselineJIT] remove ldfunction * [BaselineJIT] remove ldfunction !248 [BaselineJIT] save result of DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8 * [BaselineJIT] fix return !247 [baselineJit]Bugfix for Stlexvar and Ldlexvar * [baselineJit]Bugfix for Stlexvar and Ldlexvar !249 [BaselineJIT] Revert "!242[BaselineJIT] return JSCallDispatch result" * Revert "!242 [BaselineJIT] return JSCallDispatch result" !251 Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 * [baselineJit]Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 !252 [baselineJit]Bugfix for notException branch * [baselineJit]Bugfix for notException branch !250 [BaselineJIT] save result to acc in JSCallDispatch for baselinemethodcode * [BaselineJIT] save result of JSCallDispatch to acc for baselinecode !254 [BaselineJIT] fix type bug * [BaselineJIT] fix type bug !255 [BaselineJIT] fix bug of LDAI_IMM32 * [BaselineJIT] fix bug of LDAI_IMM32 !253 Bugfix for Poplexenv * [baselineJit]Bugfix for Poplexenv !256 [BaselineJIT] fix pc & refractor jscalldispatch for baseline-jit * [BaselineJIT] fix pc of baseline-jit & refactor jscalldispatch for baseline-jit !257 [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline * [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline !258 [BaselineJIT] fix using shl2 builtin bug * [BaselineJIT] fix using shl2 builtin bug !259 Bugfix and enable BaselineIstrue and BaselineIsFalse * [baselineJit]Bugfix and enable BaselineIstrue and BaselineIsFalse !260 [BaselineJIT] fix bug about passing FUNC parameter * [BaselineJIT] fix bug about passing FUNC parameter !261 [BaselineJIT] support passing parameters by stack and fix offset param bug * [BaselineJIT] support passing parameters by stack and fix offset param bug !263 [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 * [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 !262 Bugfix for jump offset * [baselineJit]Bugfix for jump offset !264 [BaselineJIT] fix intermediates v8 parameters bug * [BaselineJIT] fix intermediates v8 parameters bug Change-Id: I8bf4fdf7621770a1976925423de23693570365c9 !267 [BaselineJIT] fix bug of BaselineInstanceofImm8V8 * [BaselineJIT] fix bug of BaselineInstanceofImm8V8 !269 [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMethod runtimeStub * [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMe… !268 [BaselineJIT]support update hotness * [BaselineJIT]enable update hotness part2 * [BaselineJIT]support update hotness Change-Id: I24b02a9e015df7263b1e9d7210377add0bfc558c CI bugfix Change-Id: I2d5aef07a1f14b3c64585790cff99d64be0d6396 Signed-off-by: w00443755 <wangzhilei2@huawei.com>
2024-01-26 08:08:45 +00:00
void SetEnableBaselineJIT(bool value)
{
enableBaselineJIT_ = value;
}
bool IsEnableBaselineJIT() const
{
return enableBaselineJIT_;
}
void SetBaselineJitHotnessThreshold(uint16_t value)
{
baselineJitHotnessThreshold_ = value;
}
uint16_t GetBaselineJitHotnessThreshold() const
{
return baselineJitHotnessThreshold_;
}
void SetForceBaselineCompileMain(bool value)
{
forceBaselineCompileMain_ = value;
}
bool IsEnableForceBaselineCompileMain()
{
return forceBaselineCompileMain_;
}
void SetEnableNewValueNumbering(bool value)
{
enableNewValueNumbering_ = value;
}
bool IsEnableNewValueNumbering() const
{
return enableNewValueNumbering_;
}
void SetEnableOptString(bool value)
{
enableOptString_ = value;
}
bool IsEnableOptString() const
{
return enableOptString_;
}
void SetEnableOptInlining(bool value)
{
enableOptInlining_ = value;
}
bool IsEnableOptInlining() const
{
return enableOptInlining_;
}
void SetEnableTryCatchFunction(bool value)
{
enableTryCatchFunction_ = value;
}
bool IsEnableTryCatchFunction() const
{
return enableTryCatchFunction_;
}
void SetEnableOptPGOType(bool value)
{
enableOptPGOType_ = value;
}
bool IsEnableOptPGOType() const
{
return enableOptPGOType_;
}
void SetEnableOptTrackField(bool value)
{
enableOptTrackField_ = value;
}
bool IsEnableOptTrackField() const
{
return enableOptTrackField_;
}
uint32_t GetCompilerModuleMethods() const
{
return compilerModuleMethods_;
}
void SetCompilerModuleMethods(uint32_t compilerModuleMethods)
{
compilerModuleMethods_ = compilerModuleMethods;
}
void SetTraceDeopt(bool value)
{
traceDeopt_ = value;
}
bool GetTraceDeopt() const
{
return traceDeopt_;
}
void SetDeoptThreshold(uint8_t value)
{
deoptThreshold_ = value;
}
uint32_t GetDeoptThreshold() const
{
return deoptThreshold_;
}
void SetStressDeopt(bool value)
{
stressDeopt_ = value;
}
bool GetStressDeopt() const
{
return stressDeopt_;
}
void SetDeviceState(bool value)
{
deviceIsScreenOff_ = value;
}
bool GetDeviceState() const
{
return deviceIsScreenOff_;
}
bool WasSetDeviceState() const
{
return WasOptionSet(OPTION_COMPILER_DEVICE_STATE);
}
void SetOptCodeProfiler(bool value)
{
optCodeProfiler_ = value;
}
bool GetOptCodeProfiler() const
{
return optCodeProfiler_;
}
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);
}
void SetPGOTrace(bool value)
{
pgoTrace_ = value;
}
bool GetPGOTrace() const
{
return pgoTrace_;
}
void SetTraceInline(bool value)
{
traceInline_ = value;
}
bool GetTraceInline() const
{
return traceInline_;
}
void SetTraceValueNumbering(bool value)
{
traceValueNumbering_ = value;
}
bool GetTraceValueNumbering() const
{
return traceValueNumbering_;
}
void SetTraceJIT(bool value)
{
traceJIT_ = value;
}
bool GetTraceJIT() const
{
return traceJIT_;
}
void SetTraceInstructionCombine(bool value)
{
traceInstructionCombine_ = value;
}
bool GetTraceInstructionCombine() const
{
return traceInstructionCombine_;
}
void SetMaxInlineBytecodes(size_t value)
{
maxInlineBytecodes_ = value;
}
size_t GetMaxInlineBytecodes()
{
return maxInlineBytecodes_;
}
void SetCompilerFrameworkAbcPath(std::string frameworkAbcPath)
{
frameworkAbcPath_ = std::move(frameworkAbcPath);
}
std::string GetCompilerFrameworkAbcPath() const
{
return frameworkAbcPath_;
}
bool WasSetCompilerFrameworkAbcPath() const
{
return WasOptionSet(OPTION_COMPILER_FRAMEWORK_ABC_PATH);
}
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_;
}
void SetCompilerNoCheck(bool value)
{
compilerNoCheck_ = value;
}
bool IsCompilerNoCheck() const
{
return compilerNoCheck_;
}
void SetOptionsForTargetCompilation();
void SetCompilerPipelineHostAOT(bool value)
{
compilerPipelineHostAOT_ = value;
}
bool IsCompilerPipelineHostAOT() const
{
return compilerPipelineHostAOT_;
}
void SetFastAOTCompileMode(bool value)
{
fastAOTCompileMode_ = value;
}
bool GetFastAOTCompileMode() const
{
return fastAOTCompileMode_;
}
void SetEnableOptLoopPeeling(bool value)
{
enableOptLoopPeeling_ = value;
}
bool IsEnableOptLoopPeeling() const
{
return enableOptLoopPeeling_;
}
void SetEnableOptLoopInvariantCodeMotion(bool value)
{
enableOptLoopInvariantCodeMotion_ = value;
}
bool IsEnableOptLoopInvariantCodeMotion() const
{
return enableOptLoopInvariantCodeMotion_;
}
bool IsEnableOptConstantFolding() const
{
return enableOptConstantFolding_;
}
void SetEnableOptConstantFolding(bool value)
{
enableOptConstantFolding_ = value;
}
void SetEnableOptOnHeapCheck(bool value)
{
enableOptOnHeapCheck_ = value;
}
bool IsEnableOptOnHeapCheck() const
{
return enableOptOnHeapCheck_;
}
bool IsEnableLexenvSpecialization() const
{
return enableLexenvSpecialization_;
}
void SetEnableLexenvSpecialization(bool value)
{
enableLexenvSpecialization_ = value;
}
bool IsEnableNativeInline() const
{
return enableNativeInline_;
}
void SetEnableNativeInline(bool value)
{
enableNativeInline_ = value;
}
bool IsEnableLoweringBuiltin() const
{
return enableLoweringBuiltin_;
}
void SetEnableLoweringBuiltin(bool value)
{
enableLoweringBuiltin_ = value;
}
void SetCompilerEnableLiteCG(bool value)
{
enableLiteCG_ = value;
}
bool IsCompilerEnableLiteCG() const
{
return enableLiteCG_;
}
void SetTypedOpProfiler(bool value)
{
enableTypedOpProfiler_ = value;
}
bool GetTypedOpProfiler() const
{
return enableTypedOpProfiler_;
}
bool IsEnableBranchProfiling() const
{
return enableBranchProfiling_;
}
void SetEnableBranchProfiling(bool value)
{
enableBranchProfiling_ = value;
}
void SetTestAssert(bool value)
{
testAssert_ = value;
}
bool GetTestAssert() const
{
return testAssert_;
}
void SetCompilerMethodsRange(arg_list_t* argListStr)
{
compileMethodsRange_.first = std::stoull((*argListStr)[0]);
compileMethodsRange_.second = std::stoull((*argListStr)[1]);
}
const std::pair<uint32_t, uint32_t>& GetCompilerMethodsRange() const
{
return compileMethodsRange_;
}
void SetCompilerCodegenOptions(arg_list_t argListStr)
{
compileCodegenOption_ = std::move(argListStr);
}
const arg_list_t& GetCompilerCodegenOptions() const
{
return compileCodegenOption_;
}
void SetOptCodeRange(std::string value)
{
optBCRange_ = std::move(value);
}
std::string GetOptCodeRange() const
{
return optBCRange_;
}
void SetEnableEscapeAnalysis(bool value)
{
enableEscapeAnalysis_ = value;
}
bool IsEnableEscapeAnalysis() const
{
return enableEscapeAnalysis_;
}
void SetEnableTraceEscapeAnalysis(bool value)
{
traceEscapeAnalysis_ = value;
}
bool GetTraceEscapeAnalysis() const
{
return traceEscapeAnalysis_;
}
void SetEnableInductionVariableAnalysis(bool value)
{
enableInductionVariableAnalysis_ = value;
}
bool IsEnableInductionVariableAnalysis() const
{
return enableInductionVariableAnalysis_;
}
void SetEnableTraceInductionVariableAnalysis(bool value)
{
traceInductionVariableAnalysis_ = value;
}
bool GetTraceInductionVariableAnalysis() const
{
return traceInductionVariableAnalysis_;
}
void SetEnableMemoryAnalysis(bool value)
{
enableMemoryAnalysis_ = value;
}
bool IsEnableMemoryAnalysis() const
{
return enableMemoryAnalysis_;
}
void SetCheckPgoVersion(bool value)
{
checkPgoVersion_ = value;
}
bool IsCheckPgoVersion() const
{
return checkPgoVersion_;
}
void SetEnableJITPGO(bool value)
{
enableJITPGO_ = value;
}
bool IsEnableJITPGO() const
{
return enableJITPGO_;
}
void SetEnableProfileDump(bool value)
{
enableProfileDump_ = value;
}
bool IsEnableProfileDump() const
{
return enableProfileDump_;
}
void SetEnableAOTPGO(bool value)
{
enableAOTPGO_ = value;
}
bool IsEnableAOTPGO() const
{
return enableAOTPGO_;
}
void SetEnableJitFastCompile(bool value)
{
enableJitFastCompile_ = value;
}
bool IsEnableJitFastCompile() const
{
return enableJitFastCompile_;
}
void SetEnableFrameworkAOT(bool value)
{
enableFrameworkAOT_ = value;
}
bool IsEnableFrameworkAOT() const
{
return enableFrameworkAOT_;
}
void SetAsyncLoadAbc(bool value)
{
asyncLoadAbc_ = value;
}
bool IsAsyncLoadAbc() const
{
return asyncLoadAbc_;
}
void SetAsyncLoadAbcTest(bool value)
{
asyncLoadAbcTest_ = value;
}
bool IsAsyncLoadAbcTest() const
{
return asyncLoadAbcTest_;
}
bool IsPgoForceDump() const
{
return forceDump_;
}
void SetPgoForceDump(bool value)
{
forceDump_ = value;
}
public:
static constexpr int32_t MAX_APP_COMPILE_METHOD_SIZE = 4_KB;
private:
static constexpr int32_t DEFAULT_OPT_LEVEL = 3; // 3: default opt level
static bool StartsWith(const std::string& haystack, const std::string& needle)
{
return std::equal(needle.begin(), needle.end(), haystack.begin());
}
void WasSet(int option)
{
if (option < OPTION_SPLIT_ONE) {
wasSetPartOne_ |= (1ULL << static_cast<uint64_t>(option));
} else {
wasSetPartTwo_ |= (1ULL << static_cast<uint64_t>(option - OPTION_SPLIT_ONE));
}
}
bool WasOptionSet(int option) const
{
if (option < OPTION_SPLIT_ONE) {
return ((1ULL << static_cast<uint64_t>(option)) & wasSetPartOne_) != 0;
}
return ((1ULL << static_cast<uint64_t>(option - OPTION_SPLIT_ONE)) & wasSetPartTwo_) != 0;
}
bool ParseBoolParam(bool* argBool);
bool ParseDoubleParam(const std::string& option, double* argDouble);
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);
bool enableArkTools_ {true};
std::string stubFile_ {"stub.an"};
std::string compilerPkgInfo_ {};
std::string compilerExternalPkgInfo_ {};
bool compilerEnableExternalPkg_ {true};
bool enableForceGc_ {true};
bool enableEdenGC_ {false};
bool forceFullGc_ {true};
uint32_t forceSharedGc_ {1};
int arkProperties_ = GetDefaultProperties();
std::string arkBundleName_ = {""};
size_t heapSize_ = {0};
uint32_t gcThreadNum_ {7}; // 7: default thread num
uint32_t longPauseTime_ {40}; // 40: default pause time
std::string aotOutputFile_ {""};
std::string targetTriple_ {TARGET_X64};
uint32_t asmOptLevel_ {2};
uint32_t relocationMode_ {2}; // 2: default relocation mode
uint32_t maxNonmovableSpaceCapacity_ {4_MB};
bool enableAsmInterpreter_ {true};
bool enableBuiltinsLazy_ {true};
std::string asmOpcodeDisableRange_ {""};
AsmInterParsedOption asmInterParsedOption_;
uint64_t serializerBufferSizeLimit_ {2_GB};
uint32_t heapSizeLimit_ {512_MB};
bool enableIC_ {true};
std::string icuDataPath_ {"default"};
bool startupTime_ {false};
std::string compilerLogOpt_ {"none"};
std::string compilerLogMethods_ {"none"};
bool compilerLogSnapshot_ {false};
bool compilerLogTime_ {false};
bool enableRuntimeStat_ {false};
bool isWorker_ {false};
bool isRestrictedWorker_ {false};
bool traceBc_ {false};
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"}};
bool enableAOT_ {false};
uint32_t maxAotMethodSize_ {32_KB};
double typeThreshold_ {-1};
std::string entryPoint_ {"_GLOBAL::func_main_0"};
bool mergeAbc_ {false};
bool enableArrayBoundsCheckElimination_ {false};
bool enableTypeLowering_ {true};
bool enableEarlyElimination_ {true};
bool enableLaterElimination_ {true};
bool enableValueNumbering_ {true};
bool enableOptString_ {true};
bool enableElementsKind_ {false};
bool enableInstrcutionCombine {true};
bool enableNewValueNumbering_ {true};
bool enableOptInlining_ {true};
bool enableTryCatchFunction_ {false};
bool enableOptPGOType_ {true};
bool enableFastJIT_ {false};
bool enableAPPJIT_ {false};
bool isEnableJitDfxDump_ {false};
bool enableOSR_ {false};
uint16_t jitHotnessThreshold_ {2};
uint8_t jitCallThreshold_ {0};
uint16_t osrHotnessThreshold_ {2};
bool forceJitCompileMain_ {false};
bool enableBaselineJIT_ {false};
uint16_t baselineJitHotnessThreshold_ {1};
enable baseline compiler add baseline builtins Change-Id: Ib8d7c392c62e21eab19b17e45c0fafb499cbbed9 support running baseline compiler by option --compiler-force-baseline-compile-main=true Change-Id: I7c7337faf9fad39ccffb2de28d46403e2f6cb22b baseline jit part3 Change-Id: I36e8dd6a6fa6fffb738029a8620bbcd01df1e017 baseline part4 Change-Id: Ib45bcf7255a85aa48f864a6021adf819927e6a13 baseline part5 move baseline into compiler folder Change-Id: Ia8781c95ae00c4f300e7267a6da0078b5d04e4c8 !185 support BaselinePrologue * support BaselinePrologue part3 * support BaselinePrologue part2 * support BaselinePrologue !187 [BaselineJit] support load baseline builtins * [BaselineJit]support load baseline builtins !186[BaselineJIT] workaround for baselinejit support install code * install code part3 * install code part2 * baseline jit support intall code !188 [BaselineJit] support CallBuiltin * [BaselineJit] baseline support CallBuiltin !189 [BaselineJIT]implement StackOffset class * [BaselineJIT]implement StackOffset class !190 [BaselineJIT]refactor BaselineAssembler and MacroAssembler * [BaselineJIT]refactor BaselineAssembler and MacroAssembler !191 [BaselineJIT] refactor class BaselineCompiler * [BaselineJIT] refactor class BaselineCompiler !192 [BaselineJIT] callbuiltin support new parameter type new parameter type: int32_t,SpecialParameter,VirtualRegister !193 [BaselineJIT]modify BaselineLoadObjByName function * [BaselineJIT]modify BaselineLoadObjByName function !194 [BaselineJIT] support new builtins * [BaselineJIT] add BaselineTryLdGLobalByNameImm8ID16, BaselineStToGlobalRecordImm16ID16, BaselineLdaStrID16 !196 [BaselineJIT]bugfix for BaselinePrologue, align the rsp * [BaselineJIT]bugfix for BaselinePrologue, align the rsp !197 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !198 [BaselineJIT]workaround for helloworld testcase, helloworld can run successfully * workaround for helloworld testcase, helloworld can run successfully !200 [BaselineJIT]adapt profile collection * [BaselineJIT]adapt profile collection !201 [BaselineJIT]refactor baseline jit * [BaselineJIT]refactor baseline jit !203 [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async * [BaselineJIT]support trigger BaselineJITCompile and call baselinecode async !202 [BaselineJIT]enable update hotness * [BaselineJIT]enable update hotness !205 [BaselineJIT]adapt JSCallDispatch interface * [BaselineJIT]adapt JSCallDispatch interface Change-Id: I4efce4346f985c7e074d7fc4bbfe3b081272e950 !195 [Baseline JIT] bytecode to builtin funs * !206 enable bytecode builtins and call CHECK_PENDING_EXCEPTION * [Baseline JIT] builtins:StobjbynameImm9Id16V8,StobjbynameImm16Id16V8,S… * [Baseline JIT] builtins:CopyrestargsImm8,LdlexvarImm4Imm4,StlexvarImm4… * [Baseline JIT] builtins: LdsuperbyvalueImm8V8,LdsuperbyvalueImm16V8,St… * [Baseline JIT] builtins: DelobjpropV8,AsyncfunctionawaituncaughtV8,Cop… * !204 enable bytecode builtins * [Baseline JIT] builtins: DefineclasswithbufferImm8Id16Id16Imm16V8,Defi… * [Baseline JIT] builtins: LdthisbynameImm8Id16,Definegettersetterbyval… * [Baseline JIT] builtins: Callarg0Imm8,SupercallspreadImm8V8,ApplyImm8V… * !199 enable bytecode builtin func * [Baseline JIT] builtins: StrictnoteqImm8V8,StricteqImm8V8,Istrue,Isfal… * [Baseline JIT] builtins: NegImm8,NotImm8,IncImm8,DecImm8,IsinImm8V8,In… * [Baseline JIT] builtins: And2Imm8V8,Or2Imm8V8,Xor2Imm8V8,ExpImm8V8,Typ… * [Baseline JIT] builtins:LessImm8V8,LesseqImm8V8,GreaterImm8V8,Greatere… * [Baseline JIT] builtins:Add2Imm8V8,SUB2_IMM8_V8,MUL2_IMM8_V8,DIV2_IMM8… * [Baseline JIT] builtins:CreateobjectwithbufferImm8Id16,Createobjectwit… * [Baseline JIT]builtins:Createemptyobject,CreateemptyarrayImm8,Createem… * [Baseline JIT] builtins:GetiteratorImm16,Asyncfunctionenter,Createasyn… * [Baseline JIT] builtins:ldsymbol,ldglobal,Poplexenv,Getunmappedargs,Ge… * [BaselineJIT] builtins: add base class !209 handle opcode in baseline compiler * handle opcode in baseline compiler !210 [baseline jit]: add baseline stub call signature target kind info * [baseline jit]: add baseline stub call signature target kind info !212 [BaselineJIT]baseline builtin bugfix * [BaselineJIT]baseline builtin bugfix !207 [BaselineJIT]support BaselineBuiltinFrame * [BaselineJIT]support BaselineBuiltinFrame !214 [BaselineJIT]baseline builtin bugfix of using JSCallDispatch * [BaselineJIT]baseline builtin bugfix JSCallDispatch Change-Id: Id67b991df5dee753a38c284234d15b02f0d8a091 !215 [BaselineJIT]bugfix for StackOffsetDescriptor * [BaselineJIT]bugfix for StackOffsetDescriptor !216 [baseline jit]update bytecode builtins * [baseline jit]update bytecode builtins !213 [BaselineJIT]support BaselineReturn and BaselineReturnundefined * [BaselineJIT]support BaselineReturn and BaselineReturnundefined !218 [BaselineJIT]baseline builtin * [BaselineJIT]baseline builtin:ldfunction,ldthis,asyncgeneratorresolvev… !217 parse baseline-jit bytecode v1.0 * parse bytecode in baseline-jit !220 [BaselineJIT]baseline refactor ParameterIndex * [BaselineJIT]baseline refactor ParameterIndex !223 [BaselineJIT]get function and method from stack, avoiding method is used after call * [BaselineJIT]get function and method from stack, avoiding method is us… !224 [BaselineJIT]bugfix for compiling x64.release * [BaselineJIT]bugfix for compiling x64.release !226 [BaselineJIT] adapt gc for BASELINE_BUILTIN_FRAME type * [BaselineJIT]adapt gc for BASELINE_BUILTIN_FRAME type !222 [BaselineJIT] parse baseline builtin args * [BaselineJIT] parse baseline builtin args:part 2 * [BaselineJIT] parse baseline builtin args !229 parse baseline-jit bytecode v2.0 * [BaselineJIT] parse bytecode v2.0 !230 [BaselineJIT] remove including undefined_function file * [BaselineJIT] remove including undefined_function file !228 handle byte opcode of jmp v2 * [baseline jit]handle opcode of jmp V2 [BaselineJIT]rebase bugfix Change-Id: I078298849139317dfa89fb139979c1b7d938b344 !231 [BaselineJIT] fix bugs about reading bytecode * [BaselineJIT] fix bugs about read bytecode !232 [BaselineJIT] fix bug about processing arguments in stub * [BaselineJIT] fix bug about processing argument in baseline-stubs !233 handle int64_t type in CallBuiltin * [baseline jit]handle int64_t type in CallBuiltin !234 [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 * [BaselineJIT] fix bug for StToGlobalRecordImm16ID16 !235 [BaselineJIT] fix bugs about args type * [BaselineJIT] fix type of args that passing to builtins !236 [BaselineJIT] do not pass constpool to builtins * [BaselineJIT] do not passing constpool to builtin Change-Id: I8c46d70527a3fedd841d28ac1908a02d4a66edeb !237 [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type * [baselineJit]Bugfix for sp used in JSCallDispatch and incorretc type Change-Id: I3f42ecd06266a20b2b145cfe98bcbd97a2848bab [BaselineJIT] dump_test bugfix Change-Id: I97d21960ca98cd1a6fc9b1e81b647ff9d8d5d0c2 [BaselineJIT]codecheck fix Change-Id: I93eb02e45b70f4a5bfee84fec0c8e2cdc765d348 code check bugfix part2 Change-Id: I8680dd2c098193705709691fa78e8e6f3ad8cd6c bugfix for review Change-Id: I49b28e109530b9f8b403ba22ba39948e02834021 [BaselineJIT]change file folder Change-Id: I1f46110a804f17270badcff7cdeb2058ca164161 [BaselineJIT]bugfix for review part2 Change-Id: I190406652697f9b17ac6c84dd706262046dbb5f7 !238 [BaselineJIT] fix more than 6 args builtins * [BaselineJIT] fix more than 6 args builtins !239 [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 * [BaselineJIT] fix bug in parsing CALLTHISRANGE_IMM8_IMM8_V8 !240 [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 * [BaselineJIT] fix bug and add NewobjrangeImm8Imm8V8,NewobjrangeImm16Imm8V8 !241 [BaselineJIT] fix bug of ldnan, ldinfinity * [BaselineJIT] fix bug of ldnan, ldinfinity !242 [BaselineJIT] return JSCallDispatch result * [BaselineJIT] return result of JSCallDispatch for baselinecode !245 [BaselineJIT] fix builtins return value * [BaselineJIT] fix builtins return value !244 [BaselineJIT] save result to acc * [BaselineJIT] save result to acc !243 Bugfix for StlexvarImm4Imm4 * [baselineJit]Bugfix for StlexvarImm4Imm4 !246 [BaselineJIT] remove ldfunction * [BaselineJIT] remove ldfunction !248 [BaselineJIT] save result of DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8 * [BaselineJIT] fix return !247 [baselineJit]Bugfix for Stlexvar and Ldlexvar * [baselineJit]Bugfix for Stlexvar and Ldlexvar !249 [BaselineJIT] Revert "!242[BaselineJIT] return JSCallDispatch result" * Revert "!242 [BaselineJIT] return JSCallDispatch result" !251 Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 * [baselineJit]Bugfix for BaselineCreateobjectwithexcludedkeysImm8V8V8 !252 [baselineJit]Bugfix for notException branch * [baselineJit]Bugfix for notException branch !250 [BaselineJIT] save result to acc in JSCallDispatch for baselinemethodcode * [BaselineJIT] save result of JSCallDispatch to acc for baselinecode !254 [BaselineJIT] fix type bug * [BaselineJIT] fix type bug !255 [BaselineJIT] fix bug of LDAI_IMM32 * [BaselineJIT] fix bug of LDAI_IMM32 !253 Bugfix for Poplexenv * [baselineJit]Bugfix for Poplexenv !256 [BaselineJIT] fix pc & refractor jscalldispatch for baseline-jit * [BaselineJIT] fix pc of baseline-jit & refactor jscalldispatch for baseline-jit !257 [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline * [BaselineJIT] replace indirectly jscalldispatch with jscalldispatchforbaseline !258 [BaselineJIT] fix using shl2 builtin bug * [BaselineJIT] fix using shl2 builtin bug !259 Bugfix and enable BaselineIstrue and BaselineIsFalse * [baselineJit]Bugfix and enable BaselineIstrue and BaselineIsFalse !260 [BaselineJIT] fix bug about passing FUNC parameter * [BaselineJIT] fix bug about passing FUNC parameter !261 [BaselineJIT] support passing parameters by stack and fix offset param bug * [BaselineJIT] support passing parameters by stack and fix offset param bug !263 [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 * [BaselineJIT] fix parameters bug of LdobjbyvalueImm16V8 & StobjbyvalueImm16V8V8 !262 Bugfix for jump offset * [baselineJit]Bugfix for jump offset !264 [BaselineJIT] fix intermediates v8 parameters bug * [BaselineJIT] fix intermediates v8 parameters bug Change-Id: I8bf4fdf7621770a1976925423de23693570365c9 !267 [BaselineJIT] fix bug of BaselineInstanceofImm8V8 * [BaselineJIT] fix bug of BaselineInstanceofImm8V8 !269 [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMethod runtimeStub * [BaselineJIT] support NEWOBJRANGE_IMM16_IMM8_V8 & fix calling DefineMe… !268 [BaselineJIT]support update hotness * [BaselineJIT]enable update hotness part2 * [BaselineJIT]support update hotness Change-Id: I24b02a9e015df7263b1e9d7210377add0bfc558c CI bugfix Change-Id: I2d5aef07a1f14b3c64585790cff99d64be0d6396 Signed-off-by: w00443755 <wangzhilei2@huawei.com>
2024-01-26 08:08:45 +00:00
bool forceBaselineCompileMain_ {false};
bool enableOptTrackField_ {true};
uint32_t compilerModuleMethods_ {100};
uint64_t wasSetPartOne_ {0};
uint64_t wasSetPartTwo_ {0};
bool enableContext_ {false};
bool enablePrintExecuteTime_ {false};
bool enablePGOProfiler_ {false};
bool enableJITPGO_ {true};
bool enableAOTPGO_ {true};
bool enableProfileDump_ {true};
bool enableFrameworkAOT_ {true};
uint32_t pgoHotnessThreshold_ {1};
std::string pgoProfilerPath_ {""};
uint32_t pgoSaveMinInterval_ {30};
bool traceDeopt_ {false};
uint8_t deoptThreshold_ {10};
bool stressDeopt_ {false};
bool deviceIsScreenOff_ {true};
bool optCodeProfiler_ {false};
bool startGlobalLeakCheck_ {false};
bool verifyVTable_ {false};
std::string compilerSelectMethods_ {""};
std::string compilerSkipMethods_ {""};
bool pgoTrace_ {false};
bool traceInline_ {false};
bool traceJIT_ {false};
bool traceValueNumbering_ {false};
bool traceInstructionCombine_ {false};
bool compilerPipelineHostAOT_ {false};
size_t maxInlineBytecodes_ {45};
std::string targetCompilerMode_ {""};
std::string frameworkAbcPath_ {""};
std::string hapPath_ {""};
uint32_t hapAbcOffset_ {0};
uint32_t hapAbcSize_ {0};
std::string optBCRange_ {""};
bool compilerNoCheck_ {false};
bool fastAOTCompileMode_ {false};
bool enableOptLoopPeeling_ {true};
bool enableOptConstantFolding_ {true};
bool enableOptOnHeapCheck_ {true};
bool enableOptLoopInvariantCodeMotion_ {false};
bool enableLexenvSpecialization_ {false};
bool enableNativeInline_ {true};
bool enableLoweringBuiltin_ {true};
bool enableLiteCG_ {false};
bool enableTypedOpProfiler_ {false};
bool enableBranchProfiling_ {true};
bool testAssert_ {false};
std::pair<uint32_t, uint32_t> compileMethodsRange_ {0, UINT32_MAX};
arg_list_t compileCodegenOption_ {{""}};
bool enableEscapeAnalysis_ {false};
bool traceEscapeAnalysis_ {false};
bool enableInductionVariableAnalysis_ {false};
bool traceInductionVariableAnalysis_ {false};
bool enableMemoryAnalysis_ {true};
bool checkPgoVersion_ {false};
bool enableJitFastCompile_ {false};
bool enableJitFrame_ {false};
bool disableCodeSign_ {true};
bool enableJitFort_ {false};
bool enableAsyncCopyToFort_ {true};
bool enableBaselinePgo_ {false};
bool asyncLoadAbc_ {true};
bool asyncLoadAbcTest_ {false};
bool forceDump_ {true};
};
} // namespace panda::ecmascript
#endif // ECMASCRIPT_JS_RUNTIME_OPTIONS_H_