14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci#include "ecmascript/compiler/baseline/baseline_compiler.h" 174514f5e3Sopenharmony_ci#include "ecmascript/compiler/bytecode_info_collector.h" 184514f5e3Sopenharmony_ci#include "ecmascript/js_function.h" 194514f5e3Sopenharmony_ci#include "ecmascript/compiler/jit_compiler.h" 204514f5e3Sopenharmony_ci#ifdef JIT_ENABLE_CODE_SIGN 214514f5e3Sopenharmony_ci#include "jit_buffer_integrity.h" 224514f5e3Sopenharmony_ci#include "ecmascript/compiler/jit_signcode.h" 234514f5e3Sopenharmony_ci#endif 244514f5e3Sopenharmony_ci 254514f5e3Sopenharmony_cinamespace panda::ecmascript::kungfu { 264514f5e3Sopenharmony_ciusing namespace panda::ecmascript; 274514f5e3Sopenharmony_ci#ifdef JIT_ENABLE_CODE_SIGN 284514f5e3Sopenharmony_ciusing namespace kungfu; 294514f5e3Sopenharmony_ciusing namespace OHOS::Security::CodeSign; 304514f5e3Sopenharmony_ci#endif 314514f5e3Sopenharmony_ci 324514f5e3Sopenharmony_ci#define LOG_INST() LOG_BASELINEJIT(DEBUG) 334514f5e3Sopenharmony_ci 344514f5e3Sopenharmony_ci#define ADVANCE_PC(opcode) bytecodeArray += BytecodeInstruction::Size(opcode) 354514f5e3Sopenharmony_ci#define BYTECODE_BASELINE_HANDLER_IMPLEMENT(name) \ 364514f5e3Sopenharmony_civoid BaselineCompiler::Handle##name(const uint8_t *bytecodeArray) 374514f5e3Sopenharmony_ci 384514f5e3Sopenharmony_ci#define READ_INST_OP() READ_INST_8(0) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 394514f5e3Sopenharmony_ci#define READ_INST_4_0() (READ_INST_8(1) & 0xf) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 404514f5e3Sopenharmony_ci#define READ_INST_4_1() (READ_INST_8(1) >> 4 & 0xf) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 414514f5e3Sopenharmony_ci#define READ_INST_4_2() (READ_INST_8(2) & 0xf) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 424514f5e3Sopenharmony_ci#define READ_INST_4_3() (READ_INST_8(2) >> 4 & 0xf) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 434514f5e3Sopenharmony_ci#define READ_INST_8_0() READ_INST_8(1) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 444514f5e3Sopenharmony_ci#define READ_INST_8_1() READ_INST_8(2) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 454514f5e3Sopenharmony_ci#define READ_INST_8_2() READ_INST_8(3) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 464514f5e3Sopenharmony_ci#define READ_INST_8_3() READ_INST_8(4) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 474514f5e3Sopenharmony_ci#define READ_INST_8_4() READ_INST_8(5) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 484514f5e3Sopenharmony_ci#define READ_INST_8_5() READ_INST_8(6) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 494514f5e3Sopenharmony_ci#define READ_INST_8_6() READ_INST_8(7) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 504514f5e3Sopenharmony_ci#define READ_INST_8_7() READ_INST_8(8) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 514514f5e3Sopenharmony_ci#define READ_INST_8_8() READ_INST_8(9) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 524514f5e3Sopenharmony_ci#define READ_INST_8_9() READ_INST_8(10) // NOLINT(hicpp-signed-bitwise, cppcoreguidelines-macro-usage) 534514f5e3Sopenharmony_ci#define READ_INST_8(offset) (*(bytecodeArray + (offset))) 544514f5e3Sopenharmony_ci#define MOVE_AND_READ_INST_8(currentInst, offset) \ 554514f5e3Sopenharmony_ci (currentInst) <<= 8; \ 564514f5e3Sopenharmony_ci (currentInst) += READ_INST_8(offset); \ 574514f5e3Sopenharmony_ci 584514f5e3Sopenharmony_ci#define READ_INST_16_0() READ_INST_16(2) 594514f5e3Sopenharmony_ci#define READ_INST_16_1() READ_INST_16(3) 604514f5e3Sopenharmony_ci#define READ_INST_16_2() READ_INST_16(4) 614514f5e3Sopenharmony_ci#define READ_INST_16_3() READ_INST_16(5) 624514f5e3Sopenharmony_ci#define READ_INST_16_4() READ_INST_16(6) 634514f5e3Sopenharmony_ci#define READ_INST_16_5() READ_INST_16(7) 644514f5e3Sopenharmony_ci#define READ_INST_16_6() READ_INST_16(8) 654514f5e3Sopenharmony_ci#define READ_INST_16_7() READ_INST_16(9) 664514f5e3Sopenharmony_ci#define READ_INST_16(offset) \ 674514f5e3Sopenharmony_ci ({ \ 684514f5e3Sopenharmony_ci uint16_t currentInst = READ_INST_8(offset); \ 694514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, (offset) - 1) \ 704514f5e3Sopenharmony_ci }) 714514f5e3Sopenharmony_ci 724514f5e3Sopenharmony_ci#define READ_INST_32_0() READ_INST_32(4) 734514f5e3Sopenharmony_ci#define READ_INST_32_1() READ_INST_32(5) 744514f5e3Sopenharmony_ci#define READ_INST_32_2() READ_INST_32(6) 754514f5e3Sopenharmony_ci#define READ_INST_32(offset) \ 764514f5e3Sopenharmony_ci ({ \ 774514f5e3Sopenharmony_ci uint32_t currentInst = READ_INST_8(offset); \ 784514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, (offset) - 1) \ 794514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, (offset) - 2) \ 804514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, (offset) - 3) \ 814514f5e3Sopenharmony_ci }) 824514f5e3Sopenharmony_ci 834514f5e3Sopenharmony_ci#define READ_INST_64_0() \ 844514f5e3Sopenharmony_ci ({ \ 854514f5e3Sopenharmony_ci uint64_t currentInst = READ_INST_8(8); \ 864514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 7) \ 874514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 6) \ 884514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 5) \ 894514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 4) \ 904514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 3) \ 914514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 2) \ 924514f5e3Sopenharmony_ci MOVE_AND_READ_INST_8(currentInst, 1) \ 934514f5e3Sopenharmony_ci }) 944514f5e3Sopenharmony_ci 954514f5e3Sopenharmony_ci#define CALL_BASELINE_UPDATE_HOTNESS() \ 964514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; \ 974514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); \ 984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); \ 994514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(offset)); \ 1004514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); \ 1014514f5e3Sopenharmony_ci Address builtinAddress = thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineUpdateHotness); \ 1024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); \ 1034514f5e3Sopenharmony_ci 1044514f5e3Sopenharmony_civoid BaselineCompiler::SetPfHeaderAddr(const JSPandaFile *jsPandaFile) 1054514f5e3Sopenharmony_ci{ 1064514f5e3Sopenharmony_ci const panda_file::File *pandaFile = jsPandaFile->GetPandaFile(); 1074514f5e3Sopenharmony_ci pfHeaderAddr = pandaFile->GetBase(); 1084514f5e3Sopenharmony_ci} 1094514f5e3Sopenharmony_ci 1104514f5e3Sopenharmony_cistatic ARK_INLINE void SetupCodeSigner([[maybe_unused]] EcmaVM *vm) 1114514f5e3Sopenharmony_ci{ 1124514f5e3Sopenharmony_ci#ifdef JIT_ENABLE_CODE_SIGN 1134514f5e3Sopenharmony_ci bool enableCodeSign = !vm->GetJSOptions().GetDisableCodeSign(); 1144514f5e3Sopenharmony_ci if (enableCodeSign && JitFort::IsResourceAvailable()) { 1154514f5e3Sopenharmony_ci JitSignCode *singleton = JitSignCode::GetInstance(); 1164514f5e3Sopenharmony_ci singleton->Reset(); 1174514f5e3Sopenharmony_ci JitCodeSignerBase *jitSigner = CreateJitCodeSigner(JitBufferIntegrityLevel::Level0); 1184514f5e3Sopenharmony_ci singleton->SetCodeSigner(jitSigner); 1194514f5e3Sopenharmony_ci LOG_INST() << " Created Code Signer for baseline compilation: " << std::hex << (uintptr_t)jitSigner << "\n"; 1204514f5e3Sopenharmony_ci } 1214514f5e3Sopenharmony_ci#endif 1224514f5e3Sopenharmony_ci return; 1234514f5e3Sopenharmony_ci} 1244514f5e3Sopenharmony_ci 1254514f5e3Sopenharmony_civoid BaselineCompiler::Compile(const JSPandaFile *jsPandaFile, const MethodLiteral *methodLiteral) 1264514f5e3Sopenharmony_ci{ 1274514f5e3Sopenharmony_ci std::string tripleStr = vm->GetJSOptions().GetTargetTriple(); 1284514f5e3Sopenharmony_ci const uint8_t *bytecodeArray = methodLiteral->GetBytecodeArray(); 1294514f5e3Sopenharmony_ci auto codeSize = MethodLiteral::GetCodeSize(jsPandaFile, methodLiteral->GetMethodId()); 1304514f5e3Sopenharmony_ci const uint8_t *methodBytecodeLast = bytecodeArray + codeSize; 1314514f5e3Sopenharmony_ci StackOffsetDescriptor stackOffsetDescriptor(methodLiteral->GetCallField()); 1324514f5e3Sopenharmony_ci GetBaselineAssembler().SetStackOffsetDescriptor(stackOffsetDescriptor); 1334514f5e3Sopenharmony_ci SetPfHeaderAddr(jsPandaFile); 1344514f5e3Sopenharmony_ci firstPC = bytecodeArray; 1354514f5e3Sopenharmony_ci 1364514f5e3Sopenharmony_ci SetupCodeSigner(vm); 1374514f5e3Sopenharmony_ci 1384514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 1394514f5e3Sopenharmony_ci Address bcAddr = thread->GetRTInterface(RuntimeStubCSigns::ID_CallArg1AndCheckToBaseline); 1404514f5e3Sopenharmony_ci LOG_INST() << " ID_CallArg1AndCheckToBaseline Address: " << std::hex << bcAddr; 1414514f5e3Sopenharmony_ci 1424514f5e3Sopenharmony_ci std::unordered_set<size_t> jumpToOffsets; 1434514f5e3Sopenharmony_ci GetJumpToOffsets(bytecodeArray, methodBytecodeLast, jumpToOffsets); 1444514f5e3Sopenharmony_ci 1454514f5e3Sopenharmony_ci while (bytecodeArray < methodBytecodeLast) { 1464514f5e3Sopenharmony_ci auto opCode = Bytecodes::GetOpcode(bytecodeArray); 1474514f5e3Sopenharmony_ci LOG_INST() << "processing opCode: " << GetEcmaOpcodeStr(Bytecodes::GetOpcode(bytecodeArray)); 1484514f5e3Sopenharmony_ci LOG_INST() << "current bytecodePc offset: " << 1494514f5e3Sopenharmony_ci static_cast<uint32_t>(bytecodeArray - methodLiteral->GetBytecodeArray()); 1504514f5e3Sopenharmony_ci LOG_INST() << "current relative nativePc diff: " << 1514514f5e3Sopenharmony_ci static_cast<uint64_t>(GetBaselineAssembler().GetBufferSize() - nativePcOffsetTable.GetPrevNativePc()); 1524514f5e3Sopenharmony_ci 1534514f5e3Sopenharmony_ci if (jumpToOffsets.count(bytecodeOffset) != 0) { 1544514f5e3Sopenharmony_ci if (jumpMap.count(bytecodeOffset) != 0) { 1554514f5e3Sopenharmony_ci JumpLabel *label = jumpMap.at(bytecodeOffset); 1564514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(*label); 1574514f5e3Sopenharmony_ci } else { 1584514f5e3Sopenharmony_ci JumpLabel *label = new JumpLabel(); 1594514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(*label); 1604514f5e3Sopenharmony_ci jumpMap.insert({bytecodeOffset, label}); 1614514f5e3Sopenharmony_ci } 1624514f5e3Sopenharmony_ci } 1634514f5e3Sopenharmony_ci 1644514f5e3Sopenharmony_ci switch (opCode) { 1654514f5e3Sopenharmony_ci#define BYTECODE_SWITCH_CASE(name) \ 1664514f5e3Sopenharmony_ci case EcmaOpcode::name: \ 1674514f5e3Sopenharmony_ci Handle##name(bytecodeArray); \ 1684514f5e3Sopenharmony_ci break; 1694514f5e3Sopenharmony_ci ECMA_OPCODE_LIST(BYTECODE_SWITCH_CASE) 1704514f5e3Sopenharmony_ci#undef BYTECODE_SWITCH_CASE 1714514f5e3Sopenharmony_ci default: 1724514f5e3Sopenharmony_ci break; 1734514f5e3Sopenharmony_ci } 1744514f5e3Sopenharmony_ci ADVANCE_PC(opCode); 1754514f5e3Sopenharmony_ci bytecodeOffset += BytecodeInstruction::Size(opCode); 1764514f5e3Sopenharmony_ci nativePcOffsetTable.AddPosition(static_cast<uint64_t>(GetBaselineAssembler().GetBufferSize())); 1774514f5e3Sopenharmony_ci } 1784514f5e3Sopenharmony_ci} 1794514f5e3Sopenharmony_ci 1804514f5e3Sopenharmony_cibool BaselineCompiler::CollectMemoryCodeInfos(MachineCodeDesc &codeDesc) 1814514f5e3Sopenharmony_ci{ 1824514f5e3Sopenharmony_ci codeDesc.codeAddr = reinterpret_cast<uint64_t>(GetBaselineAssembler().GetBuffer()); 1834514f5e3Sopenharmony_ci codeDesc.codeSize = GetBaselineAssembler().GetBufferSize(); 1844514f5e3Sopenharmony_ci codeDesc.codeType = MachineCodeType::BASELINE_CODE; 1854514f5e3Sopenharmony_ci codeDesc.stackMapOrOffsetTableAddr = reinterpret_cast<uint64_t>(nativePcOffsetTable.GetData()); 1864514f5e3Sopenharmony_ci codeDesc.stackMapOrOffsetTableSize = nativePcOffsetTable.GetSize(); 1874514f5e3Sopenharmony_ci#ifdef JIT_ENABLE_CODE_SIGN 1884514f5e3Sopenharmony_ci codeDesc.codeSigner = 0; 1894514f5e3Sopenharmony_ci JitSignCode *singleton = JitSignCode::GetInstance(); 1904514f5e3Sopenharmony_ci if (singleton->GetCodeSigner() != nullptr) { 1914514f5e3Sopenharmony_ci LOG_INST() << "In CollectMemoryCodeInfos, signer = " << singleton->GetCodeSigner(); 1924514f5e3Sopenharmony_ci LOG_INST() << " Kind = " << singleton->GetKind(); 1934514f5e3Sopenharmony_ci codeDesc.codeSigner = reinterpret_cast<uintptr_t>(singleton->GetCodeSigner()); 1944514f5e3Sopenharmony_ci } 1954514f5e3Sopenharmony_ci#endif 1964514f5e3Sopenharmony_ci if (Jit::GetInstance()->IsEnableJitFort() && Jit::GetInstance()->IsEnableAsyncCopyToFort() && 1974514f5e3Sopenharmony_ci JitCompiler::AllocFromFortAndCopy(*compilationEnv, codeDesc) == false) { 1984514f5e3Sopenharmony_ci return false; 1994514f5e3Sopenharmony_ci } 2004514f5e3Sopenharmony_ci return true; 2014514f5e3Sopenharmony_ci} 2024514f5e3Sopenharmony_ci 2034514f5e3Sopenharmony_civoid BaselineCompiler::GetJumpToOffsets(const uint8_t *start, const uint8_t *end, 2044514f5e3Sopenharmony_ci std::unordered_set<size_t> &jumpToOffsets) const 2054514f5e3Sopenharmony_ci{ 2064514f5e3Sopenharmony_ci size_t offset = 0; 2074514f5e3Sopenharmony_ci while (start < end) { 2084514f5e3Sopenharmony_ci auto opCode = Bytecodes::GetOpcode(start); 2094514f5e3Sopenharmony_ci switch (opCode) { 2104514f5e3Sopenharmony_ci case EcmaOpcode::JEQZ_IMM8: 2114514f5e3Sopenharmony_ci case EcmaOpcode::JNEZ_IMM8: 2124514f5e3Sopenharmony_ci case EcmaOpcode::JMP_IMM8: { 2134514f5e3Sopenharmony_ci int8_t jumpOffset = *(start + 1); // 1: get one byte in bytecodes 2144514f5e3Sopenharmony_ci size_t jumpTo = offset + jumpOffset; 2154514f5e3Sopenharmony_ci jumpToOffsets.insert(jumpTo); 2164514f5e3Sopenharmony_ci break; 2174514f5e3Sopenharmony_ci } 2184514f5e3Sopenharmony_ci case EcmaOpcode::JEQZ_IMM16: 2194514f5e3Sopenharmony_ci case EcmaOpcode::JNEZ_IMM16: 2204514f5e3Sopenharmony_ci case EcmaOpcode::JMP_IMM16: { 2214514f5e3Sopenharmony_ci int16_t jumpOffset = *(start + 2); // 2: get two bytes in bytecodes 2224514f5e3Sopenharmony_ci uint16_t tmpValue = static_cast<uint16_t>(jumpOffset) << 8; // 8: left shift 8 bits 2234514f5e3Sopenharmony_ci tmpValue += static_cast<uint8_t>(*(start + 1)); // 1: get one byte in bytecodes 2244514f5e3Sopenharmony_ci size_t jumpTo = offset + static_cast<int16_t>(tmpValue); 2254514f5e3Sopenharmony_ci jumpToOffsets.insert(jumpTo); 2264514f5e3Sopenharmony_ci break; 2274514f5e3Sopenharmony_ci } 2284514f5e3Sopenharmony_ci case EcmaOpcode::JEQZ_IMM32: 2294514f5e3Sopenharmony_ci case EcmaOpcode::JNEZ_IMM32: 2304514f5e3Sopenharmony_ci case EcmaOpcode::JMP_IMM32: { 2314514f5e3Sopenharmony_ci int32_t jumpOffset = *(start + 4); // 4: get four bytes in bytecodes 2324514f5e3Sopenharmony_ci uint32_t tmpValue = static_cast<uint32_t>(jumpOffset) << 8; // 8: left shift 8 bits 2334514f5e3Sopenharmony_ci tmpValue += static_cast<uint8_t>(*(start + 3)); // 3: get three bytes in bytecodes 2344514f5e3Sopenharmony_ci tmpValue <<= 8; // 8: left shift 8 bits 2354514f5e3Sopenharmony_ci tmpValue += static_cast<uint8_t>(*(start + 2)); // 2: get two bytes in bytecodes 2364514f5e3Sopenharmony_ci tmpValue <<= 8; // 8: left shift 8 bits 2374514f5e3Sopenharmony_ci tmpValue += static_cast<uint8_t>(*(start + 1)); // 1: get one byte in bytecodes 2384514f5e3Sopenharmony_ci size_t jumpTo = static_cast<size_t>(static_cast<int32_t>(offset) + static_cast<int32_t>(tmpValue)); 2394514f5e3Sopenharmony_ci jumpToOffsets.insert(jumpTo); 2404514f5e3Sopenharmony_ci break; 2414514f5e3Sopenharmony_ci } 2424514f5e3Sopenharmony_ci default: 2434514f5e3Sopenharmony_ci break; 2444514f5e3Sopenharmony_ci } 2454514f5e3Sopenharmony_ci 2464514f5e3Sopenharmony_ci start += BytecodeInstruction::Size(opCode); 2474514f5e3Sopenharmony_ci offset += BytecodeInstruction::Size(opCode); 2484514f5e3Sopenharmony_ci } 2494514f5e3Sopenharmony_ci} 2504514f5e3Sopenharmony_ci 2514514f5e3Sopenharmony_ci// ------- parse bytecodes about reading special variables ------- 2524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDFUNCTION) 2534514f5e3Sopenharmony_ci{ 2544514f5e3Sopenharmony_ci (void)bytecodeArray; 2554514f5e3Sopenharmony_ci LOG_INST() << " ldfunction "; 2564514f5e3Sopenharmony_ci 2574514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, SpecialRegister::FUNC); 2584514f5e3Sopenharmony_ci} 2594514f5e3Sopenharmony_ci 2604514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDNEWTARGET) 2614514f5e3Sopenharmony_ci{ 2624514f5e3Sopenharmony_ci (void)bytecodeArray; 2634514f5e3Sopenharmony_ci LOG_INST() << " ldnewtarget "; 2644514f5e3Sopenharmony_ci 2654514f5e3Sopenharmony_ci // check hasNewTarget? 2664514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, SpecialRegister::NEW_TARGET); 2674514f5e3Sopenharmony_ci} 2684514f5e3Sopenharmony_ci 2694514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTHIS) 2704514f5e3Sopenharmony_ci{ 2714514f5e3Sopenharmony_ci (void)bytecodeArray; 2724514f5e3Sopenharmony_ci LOG_INST() << " ldthis "; 2734514f5e3Sopenharmony_ci 2744514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, SpecialRegister::THIS_OBJECT); 2754514f5e3Sopenharmony_ci} 2764514f5e3Sopenharmony_ci 2774514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDUNDEFINED) 2784514f5e3Sopenharmony_ci{ 2794514f5e3Sopenharmony_ci (void)bytecodeArray; 2804514f5e3Sopenharmony_ci LOG_INST() << " ldundefined " << std::hex << Immediate(JSTaggedValue::VALUE_UNDEFINED).GetValue(); 2814514f5e3Sopenharmony_ci 2824514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_UNDEFINED)); 2834514f5e3Sopenharmony_ci} 2844514f5e3Sopenharmony_ci 2854514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDNAN) 2864514f5e3Sopenharmony_ci{ 2874514f5e3Sopenharmony_ci (void)bytecodeArray; 2884514f5e3Sopenharmony_ci LOG_INST() << " ldnan " << std::hex << base::NAN_VALUE; 2894514f5e3Sopenharmony_ci 2904514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue(base::NAN_VALUE).GetRawData())); 2914514f5e3Sopenharmony_ci} 2924514f5e3Sopenharmony_ci 2934514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDINFINITY) 2944514f5e3Sopenharmony_ci{ 2954514f5e3Sopenharmony_ci (void)bytecodeArray; 2964514f5e3Sopenharmony_ci 2974514f5e3Sopenharmony_ci LOG_INST() << " ldinfinity " << std::hex << base::POSITIVE_INFINITY; 2984514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue(base::POSITIVE_INFINITY).GetRawData())); 2994514f5e3Sopenharmony_ci} 3004514f5e3Sopenharmony_ci 3014514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDNULL) 3024514f5e3Sopenharmony_ci{ 3034514f5e3Sopenharmony_ci (void)bytecodeArray; 3044514f5e3Sopenharmony_ci 3054514f5e3Sopenharmony_ci LOG_INST() << " ldnull " << std::hex << Immediate(JSTaggedValue::VALUE_NULL).GetValue(); 3064514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_NULL)); 3074514f5e3Sopenharmony_ci} 3084514f5e3Sopenharmony_ci 3094514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTRUE) 3104514f5e3Sopenharmony_ci{ 3114514f5e3Sopenharmony_ci (void)bytecodeArray; 3124514f5e3Sopenharmony_ci 3134514f5e3Sopenharmony_ci LOG_INST() << " ldtrue " << std::hex << Immediate(JSTaggedValue::VALUE_TRUE).GetValue(); 3144514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_TRUE)); 3154514f5e3Sopenharmony_ci} 3164514f5e3Sopenharmony_ci 3174514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDFALSE) 3184514f5e3Sopenharmony_ci{ 3194514f5e3Sopenharmony_ci (void)bytecodeArray; 3204514f5e3Sopenharmony_ci 3214514f5e3Sopenharmony_ci LOG_INST() << " ldfalse " << std::hex << Immediate(JSTaggedValue::VALUE_FALSE).GetValue(); 3224514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 3234514f5e3Sopenharmony_ci} 3244514f5e3Sopenharmony_ci 3254514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDHOLE) 3264514f5e3Sopenharmony_ci{ 3274514f5e3Sopenharmony_ci (void)bytecodeArray; 3284514f5e3Sopenharmony_ci 3294514f5e3Sopenharmony_ci LOG_INST() << " ldhole " << std::hex << Immediate(JSTaggedValue::VALUE_HOLE).GetValue(); 3304514f5e3Sopenharmony_ci GetBaselineAssembler().Move(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_HOLE)); 3314514f5e3Sopenharmony_ci} 3324514f5e3Sopenharmony_ci 3334514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWLEXENV_IMM8) 3344514f5e3Sopenharmony_ci{ 3354514f5e3Sopenharmony_ci uint8_t numVars = READ_INST_8_0(); 3364514f5e3Sopenharmony_ci 3374514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 3384514f5e3Sopenharmony_ci Address builtinAddress = 3394514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewlexenvImm8); 3404514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewlexenvImm8 Address: " << std::hex << builtinAddress; 3414514f5e3Sopenharmony_ci LOG_INST() << " numVars: " << static_cast<int32_t>(numVars); 3424514f5e3Sopenharmony_ci 3434514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 3444514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 3454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 3464514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(numVars)); 3474514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 3484514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 3494514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 3504514f5e3Sopenharmony_ci} 3514514f5e3Sopenharmony_ci 3524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWLEXENVWITHNAME_IMM8_ID16) 3534514f5e3Sopenharmony_ci{ 3544514f5e3Sopenharmony_ci uint8_t numVars = READ_INST_8_0(); 3554514f5e3Sopenharmony_ci int16_t literalId = READ_INST_16_1(); 3564514f5e3Sopenharmony_ci 3574514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 3584514f5e3Sopenharmony_ci Address builtinAddress = 3594514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewlexenvwithnameImm8Id16); 3604514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewlexenvwithnameImm8Id16 Address: " << std::hex << builtinAddress; 3614514f5e3Sopenharmony_ci LOG_INST() << " numVars: " << static_cast<int16_t>(numVars); 3624514f5e3Sopenharmony_ci LOG_INST() << " literalId: " << literalId; 3634514f5e3Sopenharmony_ci 3644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 3654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 3664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 3674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 3684514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(numVars)); 3694514f5e3Sopenharmony_ci parameters.emplace_back(literalId); 3704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 3714514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 3724514f5e3Sopenharmony_ci} 3734514f5e3Sopenharmony_ci 3744514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDLEXVAR_IMM4_IMM4) 3754514f5e3Sopenharmony_ci{ 3764514f5e3Sopenharmony_ci uint8_t level = static_cast<uint8_t>(READ_INST_4_0()); 3774514f5e3Sopenharmony_ci uint8_t slot = static_cast<uint8_t>(READ_INST_4_1()); 3784514f5e3Sopenharmony_ci 3794514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 3804514f5e3Sopenharmony_ci Address builtinAddress = 3814514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdlexvarImm4Imm4); 3824514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdlexvarImm4Imm4 Address: " << std::hex << builtinAddress; 3834514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 3844514f5e3Sopenharmony_ci LOG_INST() << " solt: " << static_cast<int32_t>(slot); 3854514f5e3Sopenharmony_ci 3864514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 3874514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 3884514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 3894514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 3904514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 3914514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 3924514f5e3Sopenharmony_ci} 3934514f5e3Sopenharmony_ci 3944514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STLEXVAR_IMM4_IMM4) 3954514f5e3Sopenharmony_ci{ 3964514f5e3Sopenharmony_ci uint8_t level = static_cast<uint8_t>(READ_INST_4_0()); 3974514f5e3Sopenharmony_ci uint8_t slot = static_cast<uint8_t>(READ_INST_4_1()); 3984514f5e3Sopenharmony_ci 3994514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4004514f5e3Sopenharmony_ci Address builtinAddress = 4014514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStlexvarImm4Imm4); 4024514f5e3Sopenharmony_ci LOG_INST() << " BaselineStlexvarImm4Imm4 Address: " << std::hex << builtinAddress; 4034514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 4044514f5e3Sopenharmony_ci LOG_INST() << " solt: " << static_cast<int32_t>(slot); 4054514f5e3Sopenharmony_ci 4064514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 4074514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 4084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 4094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 4104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 4114514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 4124514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 4134514f5e3Sopenharmony_ci} 4144514f5e3Sopenharmony_ci 4154514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDLEXVAR_IMM8_IMM8) 4164514f5e3Sopenharmony_ci{ 4174514f5e3Sopenharmony_ci uint8_t level = READ_INST_8_0(); 4184514f5e3Sopenharmony_ci uint8_t slot = READ_INST_8_1(); 4194514f5e3Sopenharmony_ci 4204514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4214514f5e3Sopenharmony_ci Address builtinAddress = 4224514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdlexvarImm8Imm8); 4234514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdlexvarImm8Imm8 Address: " << std::hex << builtinAddress; 4244514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 4254514f5e3Sopenharmony_ci LOG_INST() << " solt: " << static_cast<int32_t>(slot); 4264514f5e3Sopenharmony_ci 4274514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 4284514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 4294514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 4304514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 4314514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 4324514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 4334514f5e3Sopenharmony_ci} 4344514f5e3Sopenharmony_ci 4354514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STLEXVAR_IMM8_IMM8) 4364514f5e3Sopenharmony_ci{ 4374514f5e3Sopenharmony_ci uint8_t level = READ_INST_8_0(); 4384514f5e3Sopenharmony_ci uint8_t slot = READ_INST_8_1(); 4394514f5e3Sopenharmony_ci 4404514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4414514f5e3Sopenharmony_ci Address builtinAddress = 4424514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStlexvarImm8Imm8); 4434514f5e3Sopenharmony_ci LOG_INST() << " BaselineStlexvarImm8Imm8 Address: " << std::hex << builtinAddress; 4444514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 4454514f5e3Sopenharmony_ci LOG_INST() << " solt: " << static_cast<int32_t>(slot); 4464514f5e3Sopenharmony_ci 4474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 4484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 4494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 4504514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 4514514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 4524514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 4534514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 4544514f5e3Sopenharmony_ci} 4554514f5e3Sopenharmony_ci 4564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDBIGINT_ID16) 4574514f5e3Sopenharmony_ci{ 4584514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_0(); 4594514f5e3Sopenharmony_ci 4604514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4614514f5e3Sopenharmony_ci Address builtinAddress = 4624514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdbigintId16); 4634514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdbigintId16 Address: " << std::hex << builtinAddress; 4644514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 4654514f5e3Sopenharmony_ci 4664514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 4674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 4684514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 4694514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 4704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 4714514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 4724514f5e3Sopenharmony_ci} 4734514f5e3Sopenharmony_ci// ------- End parse bytecodes about reading special variables ------- 4744514f5e3Sopenharmony_ci 4754514f5e3Sopenharmony_ci// ------- parse bytecodes about reading and storing general variables ------- 4764514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDSYMBOL) 4774514f5e3Sopenharmony_ci{ 4784514f5e3Sopenharmony_ci (void)bytecodeArray; 4794514f5e3Sopenharmony_ci 4804514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4814514f5e3Sopenharmony_ci Address builtinAddress = 4824514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdsymbol); 4834514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdsymbol Address: " << std::hex << builtinAddress; 4844514f5e3Sopenharmony_ci 4854514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 4864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 4874514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 4884514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 4894514f5e3Sopenharmony_ci} 4904514f5e3Sopenharmony_ci 4914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDGLOBAL) 4924514f5e3Sopenharmony_ci{ 4934514f5e3Sopenharmony_ci (void)bytecodeArray; 4944514f5e3Sopenharmony_ci 4954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 4964514f5e3Sopenharmony_ci Address builtinAddress = 4974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdglobal); 4984514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdglobal Address: " << std::hex << builtinAddress; 4994514f5e3Sopenharmony_ci 5004514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 5014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 5024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 5034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 5044514f5e3Sopenharmony_ci} 5054514f5e3Sopenharmony_ci 5064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDGLOBALVAR_IMM16_ID16) 5074514f5e3Sopenharmony_ci{ 5084514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 5094514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 5104514f5e3Sopenharmony_ci 5114514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 5124514f5e3Sopenharmony_ci Address builtinAddress = 5134514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdglobalvarImm16Id16); 5144514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdglobalvarImm16Id16 Address: " << std::hex << builtinAddress; 5154514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 5164514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 5174514f5e3Sopenharmony_ci 5184514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 5194514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 5204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 5214514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 5224514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 5234514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 5244514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 5254514f5e3Sopenharmony_ci} 5264514f5e3Sopenharmony_ci 5274514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STGLOBALVAR_IMM16_ID16) 5284514f5e3Sopenharmony_ci{ 5294514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 5304514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 5314514f5e3Sopenharmony_ci 5324514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 5334514f5e3Sopenharmony_ci Address builtinAddress = 5344514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStglobalvarImm16Id16); 5354514f5e3Sopenharmony_ci LOG_INST() << " BaselineStglobalvarImm16Id16 Address: " << std::hex << builtinAddress; 5364514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 5374514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 5384514f5e3Sopenharmony_ci 5394514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 5404514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 5414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 5424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 5434514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 5444514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 5454514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 5464514f5e3Sopenharmony_ci} 5474514f5e3Sopenharmony_ci 5484514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TRYLDGLOBALBYNAME_IMM8_ID16) 5494514f5e3Sopenharmony_ci{ 5504514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 5514514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 5524514f5e3Sopenharmony_ci 5534514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 5544514f5e3Sopenharmony_ci Address builtinAddress = 5554514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTryLdGLobalByNameImm8ID16); 5564514f5e3Sopenharmony_ci LOG_INST() << " BaselineTryLdGLobalByNameImm8ID16 Address: " << std::hex << builtinAddress; 5574514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 5584514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 5594514f5e3Sopenharmony_ci 5604514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 5614514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 5624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 5634514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 5644514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 5654514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 5664514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 5674514f5e3Sopenharmony_ci} 5684514f5e3Sopenharmony_ci 5694514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TRYSTGLOBALBYNAME_IMM8_ID16) 5704514f5e3Sopenharmony_ci{ 5714514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 5724514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 5734514f5e3Sopenharmony_ci 5744514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 5754514f5e3Sopenharmony_ci Address builtinAddress = 5764514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTrystglobalbynameImm8Id16); 5774514f5e3Sopenharmony_ci LOG_INST() << " BaselineTrystglobalbynameImm8Id16 Address: " << std::hex << builtinAddress; 5784514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 5794514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 5804514f5e3Sopenharmony_ci 5814514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 5824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 5834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 5844514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 5854514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 5864514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 5874514f5e3Sopenharmony_ci} 5884514f5e3Sopenharmony_ci 5894514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TRYLDGLOBALBYNAME_IMM16_ID16) 5904514f5e3Sopenharmony_ci{ 5914514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 5924514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 5934514f5e3Sopenharmony_ci 5944514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 5954514f5e3Sopenharmony_ci Address builtinAddress = 5964514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTryldglobalbynameImm16Id16); 5974514f5e3Sopenharmony_ci LOG_INST() << " BaselineTryldglobalbynameImm16Id16 Address: " << std::hex << builtinAddress; 5984514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 5994514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 6004514f5e3Sopenharmony_ci 6014514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 6024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 6034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 6044514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 6054514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 6064514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 6074514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 6084514f5e3Sopenharmony_ci} 6094514f5e3Sopenharmony_ci 6104514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TRYSTGLOBALBYNAME_IMM16_ID16) 6114514f5e3Sopenharmony_ci{ 6124514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 6134514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 6144514f5e3Sopenharmony_ci 6154514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 6164514f5e3Sopenharmony_ci Address builtinAddress = 6174514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTrystglobalbynameImm16Id16); 6184514f5e3Sopenharmony_ci LOG_INST() << " BaselineTrystglobalbynameImm16Id16 Address: " << std::hex << builtinAddress; 6194514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 6204514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 6214514f5e3Sopenharmony_ci 6224514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 6234514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 6244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 6254514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 6264514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 6274514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 6284514f5e3Sopenharmony_ci} 6294514f5e3Sopenharmony_ci 6304514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYNAME_IMM8_ID16) 6314514f5e3Sopenharmony_ci{ 6324514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 6334514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 6344514f5e3Sopenharmony_ci 6354514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 6364514f5e3Sopenharmony_ci Address builtinAddress = 6374514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbynameImm8Id16); 6384514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbynameImm8Id16 Address: " << std::hex << builtinAddress; 6394514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 6404514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 6414514f5e3Sopenharmony_ci 6424514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 6434514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 6444514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 6454514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 6464514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 6474514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 6484514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 6494514f5e3Sopenharmony_ci} 6504514f5e3Sopenharmony_ci 6514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYNAME_IMM8_ID16_V8) 6524514f5e3Sopenharmony_ci{ 6534514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 6544514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 6554514f5e3Sopenharmony_ci int8_t vObjId = READ_INST_8_3(); 6564514f5e3Sopenharmony_ci 6574514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 6584514f5e3Sopenharmony_ci Address builtinAddress = 6594514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbynameImm8Id16V8); 6604514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbynameImm8Id16V8 Address: " << std::hex << builtinAddress; 6614514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 6624514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 6634514f5e3Sopenharmony_ci 6644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 6654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 6664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 6674514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 6684514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 6694514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 6704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 6714514f5e3Sopenharmony_ci} 6724514f5e3Sopenharmony_ci 6734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYNAME_IMM16_ID16) 6744514f5e3Sopenharmony_ci{ 6754514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 6764514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 6774514f5e3Sopenharmony_ci 6784514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 6794514f5e3Sopenharmony_ci Address builtinAddress = 6804514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbynameImm16Id16); 6814514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbynameImm16Id16 Address: " << std::hex << builtinAddress; 6824514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 6834514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 6844514f5e3Sopenharmony_ci 6854514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 6864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 6874514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 6884514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 6894514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 6904514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 6914514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 6924514f5e3Sopenharmony_ci} 6934514f5e3Sopenharmony_ci 6944514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYNAME_IMM16_ID16_V8) 6954514f5e3Sopenharmony_ci{ 6964514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 6974514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 6984514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_4(); 6994514f5e3Sopenharmony_ci 7004514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 7014514f5e3Sopenharmony_ci Address builtinAddress = 7024514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbynameImm16Id16V8); 7034514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbynameImm16Id16V8 Address: " << std::hex << builtinAddress; 7044514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 7054514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 7064514f5e3Sopenharmony_ci 7074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 7084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 7094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 7104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 7114514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 7124514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 7134514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 7144514f5e3Sopenharmony_ci} 7154514f5e3Sopenharmony_ci 7164514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYVALUE_IMM8_V8) 7174514f5e3Sopenharmony_ci{ 7184514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 7194514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_1(); 7204514f5e3Sopenharmony_ci 7214514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 7224514f5e3Sopenharmony_ci Address builtinAddress = 7234514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbyvalueImm8V8); 7244514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbyvalueImm8V8 Address: " << std::hex << builtinAddress; 7254514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 7264514f5e3Sopenharmony_ci 7274514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 7284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 7294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 7304514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 7314514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 7324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 7334514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 7344514f5e3Sopenharmony_ci} 7354514f5e3Sopenharmony_ci 7364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYVALUE_IMM8_V8_V8) 7374514f5e3Sopenharmony_ci{ 7384514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 7394514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_1(); 7404514f5e3Sopenharmony_ci uint8_t vKeyId = READ_INST_8_2(); 7414514f5e3Sopenharmony_ci 7424514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 7434514f5e3Sopenharmony_ci Address builtinAddress = 7444514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbyvalueImm8V8V8); 7454514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbyvalueImm8V8V8 Address: " << std::hex << builtinAddress; 7464514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 7474514f5e3Sopenharmony_ci 7484514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 7494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 7504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 7514514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 7524514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 7534514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vKeyId)); 7544514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 7554514f5e3Sopenharmony_ci} 7564514f5e3Sopenharmony_ci 7574514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYVALUE_IMM16_V8) 7584514f5e3Sopenharmony_ci{ 7594514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 7604514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_2(); 7614514f5e3Sopenharmony_ci 7624514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 7634514f5e3Sopenharmony_ci Address builtinAddress = 7644514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbyvalueImm16V8); 7654514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbyvalueImm16V8 Address: " << std::hex << builtinAddress; 7664514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 7674514f5e3Sopenharmony_ci 7684514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 7694514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 7704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 7714514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 7724514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 7734514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 7744514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 7754514f5e3Sopenharmony_ci} 7764514f5e3Sopenharmony_ci 7774514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYVALUE_IMM16_V8_V8) 7784514f5e3Sopenharmony_ci{ 7794514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 7804514f5e3Sopenharmony_ci int8_t vObjId = READ_INST_8_2(); 7814514f5e3Sopenharmony_ci int8_t vKeyId = READ_INST_8_3(); 7824514f5e3Sopenharmony_ci 7834514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 7844514f5e3Sopenharmony_ci Address builtinAddress = 7854514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbyvalueImm16V8V8); 7864514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbyvalueImm16V8V8 Address: " << std::hex << builtinAddress; 7874514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 7884514f5e3Sopenharmony_ci 7894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 7904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 7914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 7924514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 7934514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 7944514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vKeyId)); 7954514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 7964514f5e3Sopenharmony_ci} 7974514f5e3Sopenharmony_ci 7984514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYINDEX_IMM8_IMM16) 7994514f5e3Sopenharmony_ci{ 8004514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 8014514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_1(); 8024514f5e3Sopenharmony_ci 8034514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 8044514f5e3Sopenharmony_ci Address builtinAddress = 8054514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbyindexImm8Imm16); 8064514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbyindexImm8Imm16 Address: " << std::hex << builtinAddress; 8074514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 8084514f5e3Sopenharmony_ci 8094514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 8104514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 8114514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 8124514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 8134514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 8144514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 8154514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 8164514f5e3Sopenharmony_ci} 8174514f5e3Sopenharmony_ci 8184514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYINDEX_IMM8_V8_IMM16) 8194514f5e3Sopenharmony_ci{ 8204514f5e3Sopenharmony_ci int8_t vObjId = READ_INST_8_1(); 8214514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_2(); 8224514f5e3Sopenharmony_ci 8234514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 8244514f5e3Sopenharmony_ci Address builtinAddress = 8254514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbyindexImm8V8Imm16); 8264514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbyindexImm8V8Imm16 Address: " << std::hex << builtinAddress; 8274514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 8284514f5e3Sopenharmony_ci 8294514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 8304514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 8314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 8324514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 8334514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 8344514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 8354514f5e3Sopenharmony_ci} 8364514f5e3Sopenharmony_ci 8374514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDOBJBYINDEX_IMM16_IMM16) 8384514f5e3Sopenharmony_ci{ 8394514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 8404514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_2(); 8414514f5e3Sopenharmony_ci 8424514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 8434514f5e3Sopenharmony_ci Address builtinAddress = 8444514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdobjbyindexImm16Imm16); 8454514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdobjbyindexImm16Imm16 Address: " << std::hex << builtinAddress; 8464514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 8474514f5e3Sopenharmony_ci 8484514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 8494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 8504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 8514514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 8524514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 8534514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 8544514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 8554514f5e3Sopenharmony_ci} 8564514f5e3Sopenharmony_ci 8574514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOBJBYINDEX_IMM16_V8_IMM16) 8584514f5e3Sopenharmony_ci{ 8594514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 8604514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_2(); 8614514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_3(); 8624514f5e3Sopenharmony_ci 8634514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 8644514f5e3Sopenharmony_ci Address builtinAddress = 8654514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStobjbyindexImm16V8Imm16); 8664514f5e3Sopenharmony_ci LOG_INST() << " BaselineStobjbyindexImm16V8Imm16 Address: " << std::hex << builtinAddress; 8674514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 8684514f5e3Sopenharmony_ci 8694514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 8704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 8714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 8724514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vObjId)); 8734514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 8744514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 8754514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 8764514f5e3Sopenharmony_ci} 8774514f5e3Sopenharmony_ci 8784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTHISBYNAME_IMM8_ID16) 8794514f5e3Sopenharmony_ci{ 8804514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 8814514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 8824514f5e3Sopenharmony_ci 8834514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 8844514f5e3Sopenharmony_ci Address builtinAddress = 8854514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdthisbynameImm8Id16); 8864514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdthisbynameImm8Id16 Address: " << std::hex << builtinAddress; 8874514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 8884514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 8894514f5e3Sopenharmony_ci 8904514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 8914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 8924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 8934514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 8944514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 8954514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 8964514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 8974514f5e3Sopenharmony_ci} 8984514f5e3Sopenharmony_ci 8994514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STTHISBYNAME_IMM8_ID16) 9004514f5e3Sopenharmony_ci{ 9014514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 9024514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 9034514f5e3Sopenharmony_ci 9044514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 9054514f5e3Sopenharmony_ci Address builtinAddress = 9064514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStthisbynameImm8Id16); 9074514f5e3Sopenharmony_ci LOG_INST() << " BaselineStthisbynameImm8Id16 Address: " << std::hex << builtinAddress; 9084514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 9094514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 9104514f5e3Sopenharmony_ci 9114514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 9124514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 9134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 9144514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 9154514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 9164514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 9174514f5e3Sopenharmony_ci} 9184514f5e3Sopenharmony_ci 9194514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTHISBYNAME_IMM16_ID16) 9204514f5e3Sopenharmony_ci{ 9214514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 9224514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 9234514f5e3Sopenharmony_ci 9244514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 9254514f5e3Sopenharmony_ci Address builtinAddress = 9264514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdthisbynameImm16Id16); 9274514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdthisbynameImm16Id16 Address: " << std::hex << builtinAddress; 9284514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 9294514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 9304514f5e3Sopenharmony_ci 9314514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 9324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 9334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 9344514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 9354514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 9364514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 9374514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 9384514f5e3Sopenharmony_ci} 9394514f5e3Sopenharmony_ci 9404514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STTHISBYNAME_IMM16_ID16) 9414514f5e3Sopenharmony_ci{ 9424514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 9434514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 9444514f5e3Sopenharmony_ci 9454514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 9464514f5e3Sopenharmony_ci Address builtinAddress = 9474514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStthisbynameImm16Id16); 9484514f5e3Sopenharmony_ci LOG_INST() << " BaselineStthisbynameImm16Id16 Address: " << std::hex << builtinAddress; 9494514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 9504514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 9514514f5e3Sopenharmony_ci 9524514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 9534514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 9544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 9554514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 9564514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 9574514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 9584514f5e3Sopenharmony_ci} 9594514f5e3Sopenharmony_ci 9604514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTHISBYVALUE_IMM8) 9614514f5e3Sopenharmony_ci{ 9624514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 9634514f5e3Sopenharmony_ci 9644514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 9654514f5e3Sopenharmony_ci Address builtinAddress = 9664514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdthisbyvalueImm8); 9674514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdthisbyvalueImm8 Address: " << std::hex << builtinAddress; 9684514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 9694514f5e3Sopenharmony_ci 9704514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 9714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 9724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 9734514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 9744514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 9754514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 9764514f5e3Sopenharmony_ci} 9774514f5e3Sopenharmony_ci 9784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STTHISBYVALUE_IMM8_V8) 9794514f5e3Sopenharmony_ci{ 9804514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 9814514f5e3Sopenharmony_ci uint8_t propKey = READ_INST_8_1(); 9824514f5e3Sopenharmony_ci 9834514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 9844514f5e3Sopenharmony_ci Address builtinAddress = 9854514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStthisbyvalueImm8V8); 9864514f5e3Sopenharmony_ci LOG_INST() << " BaselineStthisbyvalueImm8V8 Address: " << std::hex << builtinAddress; 9874514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 9884514f5e3Sopenharmony_ci 9894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 9904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 9914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 9924514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 9934514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 9944514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 9954514f5e3Sopenharmony_ci} 9964514f5e3Sopenharmony_ci 9974514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDTHISBYVALUE_IMM16) 9984514f5e3Sopenharmony_ci{ 9994514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 10004514f5e3Sopenharmony_ci 10014514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10024514f5e3Sopenharmony_ci Address builtinAddress = 10034514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdthisbyvalueImm16); 10044514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdthisbyvalueImm16 Address: " << std::hex << builtinAddress; 10054514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 10064514f5e3Sopenharmony_ci 10074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 10094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 10104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 10114514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 10124514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 10134514f5e3Sopenharmony_ci} 10144514f5e3Sopenharmony_ci 10154514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STTHISBYVALUE_IMM16_V8) 10164514f5e3Sopenharmony_ci{ 10174514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 10184514f5e3Sopenharmony_ci uint8_t propKey = READ_INST_8_1(); 10194514f5e3Sopenharmony_ci 10204514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10214514f5e3Sopenharmony_ci Address builtinAddress = 10224514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStthisbyvalueImm16V8); 10234514f5e3Sopenharmony_ci LOG_INST() << " BaselineStthisbyvalueImm16V8 Address: " << std::hex << builtinAddress; 10244514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 10254514f5e3Sopenharmony_ci 10264514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10274514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 10284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 10294514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 10304514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 10314514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 10324514f5e3Sopenharmony_ci} 10334514f5e3Sopenharmony_ci 10344514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDSUPERBYVALUE_IMM8_V8) 10354514f5e3Sopenharmony_ci{ 10364514f5e3Sopenharmony_ci int8_t object = READ_INST_8_1(); 10374514f5e3Sopenharmony_ci 10384514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10394514f5e3Sopenharmony_ci Address builtinAddress = 10404514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdsuperbyvalueImm8V8); 10414514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdsuperbyvalueImm8V8 Address: " << std::hex << builtinAddress; 10424514f5e3Sopenharmony_ci 10434514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10444514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 10454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 10464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 10474514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 10484514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 10494514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 10504514f5e3Sopenharmony_ci} 10514514f5e3Sopenharmony_ci 10524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STSUPERBYVALUE_IMM8_V8_V8) 10534514f5e3Sopenharmony_ci{ 10544514f5e3Sopenharmony_ci int8_t object = READ_INST_8_1(); 10554514f5e3Sopenharmony_ci int8_t propKey = READ_INST_8_2(); 10564514f5e3Sopenharmony_ci 10574514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10584514f5e3Sopenharmony_ci Address builtinAddress = 10594514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStsuperbyvalueImm8V8V8); 10604514f5e3Sopenharmony_ci LOG_INST() << " BaselineStsuperbyvalueImm8V8V8 Address: " << std::hex << builtinAddress; 10614514f5e3Sopenharmony_ci 10624514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 10644514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 10654514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 10664514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 10674514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 10684514f5e3Sopenharmony_ci} 10694514f5e3Sopenharmony_ci 10704514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDSUPERBYVALUE_IMM16_V8) 10714514f5e3Sopenharmony_ci{ 10724514f5e3Sopenharmony_ci int8_t object = READ_INST_8_1(); 10734514f5e3Sopenharmony_ci 10744514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10754514f5e3Sopenharmony_ci Address builtinAddress = 10764514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdsuperbyvalueImm16V8); 10774514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdsuperbyvalueImm16V8 Address: " << std::hex << builtinAddress; 10784514f5e3Sopenharmony_ci 10794514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 10814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 10824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 10834514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 10844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 10854514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 10864514f5e3Sopenharmony_ci} 10874514f5e3Sopenharmony_ci 10884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STSUPERBYVALUE_IMM16_V8_V8) 10894514f5e3Sopenharmony_ci{ 10904514f5e3Sopenharmony_ci int8_t object = READ_INST_8_2(); 10914514f5e3Sopenharmony_ci int8_t propKey = READ_INST_8_3(); 10924514f5e3Sopenharmony_ci 10934514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 10944514f5e3Sopenharmony_ci Address builtinAddress = 10954514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStsuperbyvalueImm16V8V8); 10964514f5e3Sopenharmony_ci LOG_INST() << " BaselineStsuperbyvalueImm16V8V8 Address: " << std::hex << builtinAddress; 10974514f5e3Sopenharmony_ci 10984514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 10994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 11004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 11014514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 11024514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 11034514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 11044514f5e3Sopenharmony_ci} 11054514f5e3Sopenharmony_ci 11064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDSUPERBYNAME_IMM8_ID16) 11074514f5e3Sopenharmony_ci{ 11084514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 11094514f5e3Sopenharmony_ci 11104514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 11114514f5e3Sopenharmony_ci Address builtinAddress = 11124514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdsuperbynameImm8Id16); 11134514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdsuperbynameImm8Id16 Address: " << std::hex << builtinAddress; 11144514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 11154514f5e3Sopenharmony_ci 11164514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 11174514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 11184514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 11194514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 11204514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 11214514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 11224514f5e3Sopenharmony_ci} 11234514f5e3Sopenharmony_ci 11244514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STSUPERBYNAME_IMM8_ID16_V8) 11254514f5e3Sopenharmony_ci{ 11264514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 11274514f5e3Sopenharmony_ci int8_t object = READ_INST_8_3(); 11284514f5e3Sopenharmony_ci 11294514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 11304514f5e3Sopenharmony_ci Address builtinAddress = 11314514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStsuperbynameImm8Id16V8); 11324514f5e3Sopenharmony_ci LOG_INST() << " BaselineStsuperbynameImm8Id16V8 Address: " << std::hex << builtinAddress; 11334514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 11344514f5e3Sopenharmony_ci 11354514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 11364514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 11374514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 11384514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 11394514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 11404514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 11414514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 11424514f5e3Sopenharmony_ci} 11434514f5e3Sopenharmony_ci 11444514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDSUPERBYNAME_IMM16_ID16) 11454514f5e3Sopenharmony_ci{ 11464514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 11474514f5e3Sopenharmony_ci 11484514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 11494514f5e3Sopenharmony_ci Address builtinAddress = 11504514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdsuperbynameImm16Id16); 11514514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdsuperbynameImm16Id16 Address: " << std::hex << builtinAddress; 11524514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 11534514f5e3Sopenharmony_ci 11544514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 11554514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 11564514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 11574514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 11584514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 11594514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 11604514f5e3Sopenharmony_ci} 11614514f5e3Sopenharmony_ci 11624514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STSUPERBYNAME_IMM16_ID16_V8) 11634514f5e3Sopenharmony_ci{ 11644514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 11654514f5e3Sopenharmony_ci int8_t object = READ_INST_8_4(); 11664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 11674514f5e3Sopenharmony_ci Address builtinAddress = 11684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStsuperbynameImm16Id16V8); 11694514f5e3Sopenharmony_ci LOG_INST() << " BaselineStsuperbynameImm16Id16V8 Address: " << std::hex << builtinAddress; 11704514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 11714514f5e3Sopenharmony_ci 11724514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 11734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 11744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 11754514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 11764514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 11774514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 11784514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 11794514f5e3Sopenharmony_ci} 11804514f5e3Sopenharmony_ci 11814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STA_V8) 11824514f5e3Sopenharmony_ci{ 11834514f5e3Sopenharmony_ci uint8_t vdst = READ_INST_8_0(); 11844514f5e3Sopenharmony_ci LOG_INST() << " sta v" << static_cast<int16_t>(vdst); 11854514f5e3Sopenharmony_ci baselineAssembler.Move(VirtualRegister(vdst), SpecialRegister::ACC_REGISTER); 11864514f5e3Sopenharmony_ci} 11874514f5e3Sopenharmony_ci 11884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDAI_IMM32) 11894514f5e3Sopenharmony_ci{ 11904514f5e3Sopenharmony_ci int32_t imm = static_cast<int32_t>(READ_INST_32_0()); 11914514f5e3Sopenharmony_ci LOG_INST() << " ldai " << static_cast<int16_t>(imm); 11924514f5e3Sopenharmony_ci uint64_t value = JSTaggedValue(imm).GetRawData(); 11934514f5e3Sopenharmony_ci baselineAssembler.Move(SpecialRegister::ACC_REGISTER, Immediate(value)); 11944514f5e3Sopenharmony_ci} 11954514f5e3Sopenharmony_ci 11964514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDA_V8) 11974514f5e3Sopenharmony_ci{ 11984514f5e3Sopenharmony_ci uint8_t vsrc = READ_INST_8_0(); 11994514f5e3Sopenharmony_ci LOG_INST() << " lda v" << static_cast<int16_t>(vsrc); 12004514f5e3Sopenharmony_ci baselineAssembler.Move(SpecialRegister::ACC_REGISTER, VirtualRegister(vsrc)); 12014514f5e3Sopenharmony_ci} 12024514f5e3Sopenharmony_ci 12034514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STTOGLOBALRECORD_IMM16_ID16) 12044514f5e3Sopenharmony_ci{ 12054514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 12064514f5e3Sopenharmony_ci 12074514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12084514f5e3Sopenharmony_ci Address builtinAddress = 12094514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStToGlobalRecordImm16ID16); 12104514f5e3Sopenharmony_ci LOG_INST() << " BaselineStToGlobalRecordImm16ID16 Address: " << std::hex << builtinAddress; 12114514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 12124514f5e3Sopenharmony_ci 12134514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 12154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 12164514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 12174514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 12184514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 12194514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 12204514f5e3Sopenharmony_ci} 12214514f5e3Sopenharmony_ci 12224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDA_STR_ID16) 12234514f5e3Sopenharmony_ci{ 12244514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_0(); 12254514f5e3Sopenharmony_ci 12264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12274514f5e3Sopenharmony_ci Address builtinAddress = 12284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdaStrID16); 12294514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdaStrID16 Address: " << std::hex << builtinAddress << std::endl; 12304514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 12314514f5e3Sopenharmony_ci 12324514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 12344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 12354514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 12364514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 12374514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 12384514f5e3Sopenharmony_ci} 12394514f5e3Sopenharmony_ci 12404514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(FLDAI_IMM64) 12414514f5e3Sopenharmony_ci{ 12424514f5e3Sopenharmony_ci int64_t imm = static_cast<int64_t>(READ_INST_64_0()); 12434514f5e3Sopenharmony_ci 12444514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12454514f5e3Sopenharmony_ci Address builtinAddress = 12464514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineFldaiImm64); 12474514f5e3Sopenharmony_ci LOG_INST() << " BaselineFldaiImm64 Address: " << std::hex << builtinAddress << std::endl; 12484514f5e3Sopenharmony_ci 12494514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12504514f5e3Sopenharmony_ci parameters.emplace_back(imm); 12514514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 12524514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 12534514f5e3Sopenharmony_ci} 12544514f5e3Sopenharmony_ci 12554514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETUNMAPPEDARGS) 12564514f5e3Sopenharmony_ci{ 12574514f5e3Sopenharmony_ci (void)bytecodeArray; 12584514f5e3Sopenharmony_ci 12594514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12604514f5e3Sopenharmony_ci Address builtinAddress = 12614514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetunmappedargs); 12624514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetunmappedargs Address: " << std::hex << builtinAddress; 12634514f5e3Sopenharmony_ci 12644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 12664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 12674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 12684514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 12694514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 12704514f5e3Sopenharmony_ci} 12714514f5e3Sopenharmony_ci 12724514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETPROPITERATOR) 12734514f5e3Sopenharmony_ci{ 12744514f5e3Sopenharmony_ci (void)bytecodeArray; 12754514f5e3Sopenharmony_ci 12764514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12774514f5e3Sopenharmony_ci Address builtinAddress = 12784514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetpropiterator); 12794514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetpropiterator Address: " << std::hex << builtinAddress; 12804514f5e3Sopenharmony_ci 12814514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 12834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 12844514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 12854514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 12864514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 12874514f5e3Sopenharmony_ci} 12884514f5e3Sopenharmony_ci 12894514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETITERATOR_IMM8) 12904514f5e3Sopenharmony_ci{ 12914514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 12924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 12934514f5e3Sopenharmony_ci Address builtinAddress = 12944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetiteratorImm8); 12954514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetiteratorImm8 Address: " << std::hex << builtinAddress; 12964514f5e3Sopenharmony_ci 12974514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 12984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 12994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13004514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 13014514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13024514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13034514f5e3Sopenharmony_ci} 13044514f5e3Sopenharmony_ci 13054514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETITERATOR_IMM16) 13064514f5e3Sopenharmony_ci{ 13074514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 13084514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 13094514f5e3Sopenharmony_ci Address builtinAddress = 13104514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetiteratorImm16); 13114514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetiteratorImm16 Address: " << std::hex << builtinAddress; 13124514f5e3Sopenharmony_ci 13134514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 13144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 13154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13164514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 13174514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13184514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13194514f5e3Sopenharmony_ci} 13204514f5e3Sopenharmony_ci 13214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CLOSEITERATOR_IMM8_V8) 13224514f5e3Sopenharmony_ci{ 13234514f5e3Sopenharmony_ci uint8_t iter = READ_INST_8_1(); 13244514f5e3Sopenharmony_ci 13254514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 13264514f5e3Sopenharmony_ci Address builtinAddress = 13274514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCloseiteratorImm8V8); 13284514f5e3Sopenharmony_ci LOG_INST() << " BaselineCloseiteratorImm8V8 Address: " << std::hex << builtinAddress; 13294514f5e3Sopenharmony_ci 13304514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 13314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 13324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13334514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(iter)); 13344514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13354514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13364514f5e3Sopenharmony_ci} 13374514f5e3Sopenharmony_ci 13384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CLOSEITERATOR_IMM16_V8) 13394514f5e3Sopenharmony_ci{ 13404514f5e3Sopenharmony_ci uint8_t iter = READ_INST_8_2(); 13414514f5e3Sopenharmony_ci 13424514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 13434514f5e3Sopenharmony_ci Address builtinAddress = 13444514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCloseiteratorImm16V8); 13454514f5e3Sopenharmony_ci LOG_INST() << " BaselineCloseiteratorImm16V8 Address: " << std::hex << builtinAddress; 13464514f5e3Sopenharmony_ci 13474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 13484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 13494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13504514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(iter)); 13514514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13524514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13534514f5e3Sopenharmony_ci} 13544514f5e3Sopenharmony_ci 13554514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCGENERATORRESOLVE_V8_V8_V8) 13564514f5e3Sopenharmony_ci{ 13574514f5e3Sopenharmony_ci uint8_t generator = READ_INST_8_0(); 13584514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_1(); 13594514f5e3Sopenharmony_ci uint8_t flag = READ_INST_8_2(); 13604514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 13614514f5e3Sopenharmony_ci 13624514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 13634514f5e3Sopenharmony_ci Address builtinAddress = 13644514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncgeneratorresolveV8V8V8); 13654514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncgeneratorresolveV8V8V8 Address: " << std::hex << builtinAddress; 13664514f5e3Sopenharmony_ci 13674514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 13684514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 13694514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13704514f5e3Sopenharmony_ci parameters.emplace_back(offset); 13714514f5e3Sopenharmony_ci parameters.emplace_back(generator); 13724514f5e3Sopenharmony_ci parameters.emplace_back(object); 13734514f5e3Sopenharmony_ci parameters.emplace_back(flag); 13744514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13754514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13764514f5e3Sopenharmony_ci} 13774514f5e3Sopenharmony_ci 13784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEEMPTYOBJECT) 13794514f5e3Sopenharmony_ci{ 13804514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 13814514f5e3Sopenharmony_ci 13824514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 13834514f5e3Sopenharmony_ci Address builtinAddress = 13844514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateemptyobject); 13854514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateemptyobject Address: " << std::hex << builtinAddress; 13864514f5e3Sopenharmony_ci 13874514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 13884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 13894514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 13904514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 13914514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 13924514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 13934514f5e3Sopenharmony_ci} 13944514f5e3Sopenharmony_ci 13954514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEEMPTYARRAY_IMM8) 13964514f5e3Sopenharmony_ci{ 13974514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 13984514f5e3Sopenharmony_ci auto traceId = static_cast<int32_t>(bytecodeArray - pfHeaderAddr); 13994514f5e3Sopenharmony_ci 14004514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 14014514f5e3Sopenharmony_ci Address builtinAddress = 14024514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateemptyarrayImm8); 14034514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateemptyarrayImm8 Address: " << std::hex << builtinAddress; 14044514f5e3Sopenharmony_ci LOG_INST() << " traceId: " << std::hex << traceId; 14054514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 14064514f5e3Sopenharmony_ci 14074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 14084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 14094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 14104514f5e3Sopenharmony_ci parameters.emplace_back(traceId); 14114514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 14124514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 14134514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 14144514f5e3Sopenharmony_ci} 14154514f5e3Sopenharmony_ci 14164514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEEMPTYARRAY_IMM16) 14174514f5e3Sopenharmony_ci{ 14184514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 14194514f5e3Sopenharmony_ci auto traceId = static_cast<int32_t>(bytecodeArray - pfHeaderAddr); 14204514f5e3Sopenharmony_ci 14214514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 14224514f5e3Sopenharmony_ci Address builtinAddress = 14234514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateemptyarrayImm16); 14244514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateemptyarrayImm16 Address: " << std::hex << builtinAddress; 14254514f5e3Sopenharmony_ci LOG_INST() << " traceId: " << std::hex << traceId; 14264514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 14274514f5e3Sopenharmony_ci 14284514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 14294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 14304514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 14314514f5e3Sopenharmony_ci parameters.emplace_back(traceId); 14324514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 14334514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 14344514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 14354514f5e3Sopenharmony_ci} 14364514f5e3Sopenharmony_ci 14374514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEGENERATOROBJ_V8) 14384514f5e3Sopenharmony_ci{ 14394514f5e3Sopenharmony_ci int8_t funcObj = READ_INST_8_0(); 14404514f5e3Sopenharmony_ci 14414514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 14424514f5e3Sopenharmony_ci Address builtinAddress = 14434514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreategeneratorobjV8); 14444514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreategeneratorobjV8 Address: " << std::hex << builtinAddress; 14454514f5e3Sopenharmony_ci 14464514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 14474514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 14484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 14494514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(funcObj)); 14504514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 14514514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 14524514f5e3Sopenharmony_ci} 14534514f5e3Sopenharmony_ci 14544514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEITERRESULTOBJ_V8_V8) 14554514f5e3Sopenharmony_ci{ 14564514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 14574514f5e3Sopenharmony_ci int8_t flag = READ_INST_8_1(); 14584514f5e3Sopenharmony_ci 14594514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 14604514f5e3Sopenharmony_ci Address builtinAddress = 14614514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateiterresultobjV8V8); 14624514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateiterresultobjV8V8 Address: " << std::hex << builtinAddress; 14634514f5e3Sopenharmony_ci 14644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 14654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 14664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 14674514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 14684514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(flag)); 14694514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 14704514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 14714514f5e3Sopenharmony_ci} 14724514f5e3Sopenharmony_ci 14734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEOBJECTWITHEXCLUDEDKEYS_IMM8_V8_V8) 14744514f5e3Sopenharmony_ci{ 14754514f5e3Sopenharmony_ci uint8_t numKeys = READ_INST_8_0(); 14764514f5e3Sopenharmony_ci int8_t object = READ_INST_8_1(); 14774514f5e3Sopenharmony_ci uint8_t firstKeyIdx = READ_INST_8_2(); 14784514f5e3Sopenharmony_ci 14794514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 14804514f5e3Sopenharmony_ci Address builtinAddress = 14814514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateobjectwithexcludedkeysImm8V8V8); 14824514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateobjectwithexcludedkeysImm8V8V8 Address: " << std::hex << builtinAddress; 14834514f5e3Sopenharmony_ci LOG_INST() << " numKeys: " << static_cast<int16_t>(numKeys); 14844514f5e3Sopenharmony_ci LOG_INST() << " firstKeyIdx: " << static_cast<int16_t>(firstKeyIdx); 14854514f5e3Sopenharmony_ci 14864514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 14874514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 14884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 14894514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(numKeys)); 14904514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 14914514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(firstKeyIdx)); 14924514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 14934514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 14944514f5e3Sopenharmony_ci} 14954514f5e3Sopenharmony_ci 14964514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEOBJECTWITHBUFFER_IMM8_ID16) 14974514f5e3Sopenharmony_ci{ 14984514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 14994514f5e3Sopenharmony_ci uint16_t buffer = READ_INST_16_1(); 15004514f5e3Sopenharmony_ci 15014514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 15024514f5e3Sopenharmony_ci Address builtinAddress = 15034514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateobjectwithbufferImm8Id16); 15044514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateobjectwithbufferImm8Id16 Address: " << std::hex << builtinAddress; 15054514f5e3Sopenharmony_ci LOG_INST() << " buffer: " << static_cast<int32_t>(buffer); 15064514f5e3Sopenharmony_ci 15074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 15084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 15094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 15104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(buffer)); 15114514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 15124514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 15134514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 15144514f5e3Sopenharmony_ci} 15154514f5e3Sopenharmony_ci 15164514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEOBJECTWITHBUFFER_IMM16_ID16) 15174514f5e3Sopenharmony_ci{ 15184514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 15194514f5e3Sopenharmony_ci uint16_t buffer = READ_INST_16_2(); 15204514f5e3Sopenharmony_ci 15214514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 15224514f5e3Sopenharmony_ci Address builtinAddress = 15234514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateobjectwithbufferImm16Id16); 15244514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateobjectwithbufferImm16Id16 Address: " << std::hex << builtinAddress; 15254514f5e3Sopenharmony_ci LOG_INST() << " buffer: " << static_cast<int32_t>(buffer); 15264514f5e3Sopenharmony_ci 15274514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 15284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 15294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 15304514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(buffer)); 15314514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 15324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 15334514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 15344514f5e3Sopenharmony_ci} 15354514f5e3Sopenharmony_ci 15364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEREGEXPWITHLITERAL_IMM8_ID16_IMM8) 15374514f5e3Sopenharmony_ci{ 15384514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 15394514f5e3Sopenharmony_ci int8_t flag = READ_INST_8_3(); 15404514f5e3Sopenharmony_ci 15414514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 15424514f5e3Sopenharmony_ci Address builtinAddress = 15434514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateregexpwithliteralImm8Id16Imm8); 15444514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateregexpwithliteralImm8Id16Imm8 Address: " << std::hex << builtinAddress; 15454514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 15464514f5e3Sopenharmony_ci 15474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 15484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 15494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 15504514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 15514514f5e3Sopenharmony_ci parameters.emplace_back(flag); 15524514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 15534514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 15544514f5e3Sopenharmony_ci} 15554514f5e3Sopenharmony_ci 15564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEREGEXPWITHLITERAL_IMM16_ID16_IMM8) 15574514f5e3Sopenharmony_ci{ 15584514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 15594514f5e3Sopenharmony_ci int8_t flag = READ_INST_8_4(); 15604514f5e3Sopenharmony_ci 15614514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 15624514f5e3Sopenharmony_ci Address builtinAddress = 15634514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateregexpwithliteralImm16Id16Imm8); 15644514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateregexpwithliteralImm16Id16Imm8 Address: " << std::hex << builtinAddress; 15654514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 15664514f5e3Sopenharmony_ci 15674514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 15684514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 15694514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 15704514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 15714514f5e3Sopenharmony_ci parameters.emplace_back(flag); 15724514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 15734514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 15744514f5e3Sopenharmony_ci} 15754514f5e3Sopenharmony_ci 15764514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEARRAYWITHBUFFER_IMM8_ID16) 15774514f5e3Sopenharmony_ci{ 15784514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 15794514f5e3Sopenharmony_ci uint16_t literalId = READ_INST_16_1(); 15804514f5e3Sopenharmony_ci auto traceId = static_cast<int32_t>(bytecodeArray - pfHeaderAddr); 15814514f5e3Sopenharmony_ci 15824514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 15834514f5e3Sopenharmony_ci Address builtinAddress = 15844514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreatearraywithbufferImm8Id16); 15854514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreatearraywithbufferImm8Id16 Address: " << std::hex << builtinAddress; 15864514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 15874514f5e3Sopenharmony_ci LOG_INST() << " literalId: " << static_cast<int32_t>(literalId); 15884514f5e3Sopenharmony_ci 15894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 15904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 15914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 15924514f5e3Sopenharmony_ci parameters.emplace_back(traceId); 15934514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(literalId)); 15944514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 15954514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 15964514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 15974514f5e3Sopenharmony_ci} 15984514f5e3Sopenharmony_ci 15994514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEARRAYWITHBUFFER_IMM16_ID16) 16004514f5e3Sopenharmony_ci{ 16014514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 16024514f5e3Sopenharmony_ci uint16_t literalId = READ_INST_16_2(); 16034514f5e3Sopenharmony_ci auto traceId = static_cast<int32_t>(bytecodeArray - pfHeaderAddr); 16044514f5e3Sopenharmony_ci 16054514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 16064514f5e3Sopenharmony_ci Address builtinAddress = 16074514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreatearraywithbufferImm16Id16); 16084514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreatearraywithbufferImm16Id16 Address: " << std::hex << builtinAddress; 16094514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 16104514f5e3Sopenharmony_ci LOG_INST() << " literalId: " << static_cast<int32_t>(literalId); 16114514f5e3Sopenharmony_ci 16124514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 16134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 16144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 16154514f5e3Sopenharmony_ci parameters.emplace_back(traceId); 16164514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(literalId)); 16174514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 16184514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 16194514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 16204514f5e3Sopenharmony_ci} 16214514f5e3Sopenharmony_ci 16224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWOBJAPPLY_IMM8_V8) 16234514f5e3Sopenharmony_ci{ 16244514f5e3Sopenharmony_ci int8_t classId = READ_INST_8_1(); 16254514f5e3Sopenharmony_ci 16264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 16274514f5e3Sopenharmony_ci Address builtinAddress = 16284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewobjapplyImm8V8); 16294514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewobjapplyImm8V8 Address: " << std::hex << builtinAddress; 16304514f5e3Sopenharmony_ci 16314514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 16324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 16334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 16344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 16354514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(classId)); 16364514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 16374514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 16384514f5e3Sopenharmony_ci} 16394514f5e3Sopenharmony_ci 16404514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWOBJAPPLY_IMM16_V8) 16414514f5e3Sopenharmony_ci{ 16424514f5e3Sopenharmony_ci int8_t classId = READ_INST_8_2(); 16434514f5e3Sopenharmony_ci 16444514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 16454514f5e3Sopenharmony_ci Address builtinAddress = 16464514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewobjapplyImm16V8); 16474514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewobjapplyImm16V8 Address: " << std::hex << builtinAddress; 16484514f5e3Sopenharmony_ci 16494514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 16504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 16514514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 16524514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 16534514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(classId)); 16544514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 16554514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 16564514f5e3Sopenharmony_ci} 16574514f5e3Sopenharmony_ci 16584514f5e3Sopenharmony_ci// GLUE, SP, NUM_ARGS, FIRST_ARG_REG_IDX, SLOT_ID 16594514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWOBJRANGE_IMM8_IMM8_V8) 16604514f5e3Sopenharmony_ci{ 16614514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 16624514f5e3Sopenharmony_ci uint8_t numArgs = READ_INST_8_1(); 16634514f5e3Sopenharmony_ci uint8_t firstArgRegIdx = READ_INST_8_2(); 16644514f5e3Sopenharmony_ci 16654514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 16664514f5e3Sopenharmony_ci Address builtinAddress = 16674514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewobjrangeImm8Imm8V8); 16684514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewobjrangeImm8Imm8V8 Address: " << std::hex << builtinAddress; 16694514f5e3Sopenharmony_ci LOG_INST() << " numArgs: " << static_cast<int16_t>(numArgs); 16704514f5e3Sopenharmony_ci LOG_INST() << " firstArgRegIdx: " << static_cast<int16_t>(firstArgRegIdx); 16714514f5e3Sopenharmony_ci 16724514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 16734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 16744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 16754514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(numArgs)); 16764514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(firstArgRegIdx)); 16774514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 16784514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 16794514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 16804514f5e3Sopenharmony_ci} 16814514f5e3Sopenharmony_ci 16824514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEWOBJRANGE_IMM16_IMM8_V8) 16834514f5e3Sopenharmony_ci{ 16844514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 16854514f5e3Sopenharmony_ci uint8_t numArgs = READ_INST_8_2(); 16864514f5e3Sopenharmony_ci uint8_t firstArgRegIdx = READ_INST_8_3(); 16874514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 16884514f5e3Sopenharmony_ci Address builtinAddress = 16894514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNewobjrangeImm16Imm8V8); 16904514f5e3Sopenharmony_ci LOG_INST() << " BaselineNewobjrangeImm16Imm8V8 Address: " << std::hex << builtinAddress; 16914514f5e3Sopenharmony_ci LOG_INST() << " numArgs: " << static_cast<int16_t>(numArgs); 16924514f5e3Sopenharmony_ci LOG_INST() << " firstArgRegIdx: " << static_cast<int16_t>(firstArgRegIdx); 16934514f5e3Sopenharmony_ci 16944514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 16954514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 16964514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 16974514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(numArgs)); 16984514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(firstArgRegIdx)); 16994514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 17004514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17014514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 17024514f5e3Sopenharmony_ci} 17034514f5e3Sopenharmony_ci 17044514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TYPEOF_IMM8) 17054514f5e3Sopenharmony_ci{ 17064514f5e3Sopenharmony_ci (void)bytecodeArray; 17074514f5e3Sopenharmony_ci 17084514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17094514f5e3Sopenharmony_ci Address builtinAddress = 17104514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTypeofImm8); 17114514f5e3Sopenharmony_ci LOG_INST() << " BaselineTypeofImm8 Address: " << std::hex << builtinAddress; 17124514f5e3Sopenharmony_ci 17134514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 17164514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17174514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 17184514f5e3Sopenharmony_ci} 17194514f5e3Sopenharmony_ci 17204514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TYPEOF_IMM16) 17214514f5e3Sopenharmony_ci{ 17224514f5e3Sopenharmony_ci (void)bytecodeArray; 17234514f5e3Sopenharmony_ci 17244514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17254514f5e3Sopenharmony_ci Address builtinAddress = 17264514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTypeofImm16); 17274514f5e3Sopenharmony_ci LOG_INST() << " BaselineTypeofImm16 Address: " << std::hex << builtinAddress; 17284514f5e3Sopenharmony_ci 17294514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17304514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 17324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17334514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 17344514f5e3Sopenharmony_ci} 17354514f5e3Sopenharmony_ci 17364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDEXTERNALMODULEVAR_IMM8) 17374514f5e3Sopenharmony_ci{ 17384514f5e3Sopenharmony_ci int8_t index = READ_INST_8_0(); 17394514f5e3Sopenharmony_ci 17404514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17414514f5e3Sopenharmony_ci Address builtinAddress = 17424514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdexternalmodulevarImm8); 17434514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdexternalmodulevarImm8 Address: " << std::hex << builtinAddress; 17444514f5e3Sopenharmony_ci 17454514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17474514f5e3Sopenharmony_ci parameters.emplace_back(index); 17484514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17494514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 17504514f5e3Sopenharmony_ci} 17514514f5e3Sopenharmony_ci 17524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SETOBJECTWITHPROTO_IMM8_V8) 17534514f5e3Sopenharmony_ci{ 17544514f5e3Sopenharmony_ci int8_t proto = READ_INST_8_1(); 17554514f5e3Sopenharmony_ci 17564514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17574514f5e3Sopenharmony_ci Address builtinAddress = 17584514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSetobjectwithprotoImm8V8); 17594514f5e3Sopenharmony_ci LOG_INST() << " BaselineSetobjectwithprotoImm8V8 Address: " << std::hex << builtinAddress; 17604514f5e3Sopenharmony_ci 17614514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 17644514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 17654514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(proto)); 17664514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17674514f5e3Sopenharmony_ci} 17684514f5e3Sopenharmony_ci 17694514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SETOBJECTWITHPROTO_IMM16_V8) 17704514f5e3Sopenharmony_ci{ 17714514f5e3Sopenharmony_ci int8_t proto = READ_INST_8_2(); 17724514f5e3Sopenharmony_ci 17734514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17744514f5e3Sopenharmony_ci Address builtinAddress = 17754514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSetobjectwithprotoImm16V8); 17764514f5e3Sopenharmony_ci LOG_INST() << " BaselineSetobjectwithprotoImm16V8 Address: " << std::hex << builtinAddress; 17774514f5e3Sopenharmony_ci 17784514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 17814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 17824514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(proto)); 17834514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 17844514f5e3Sopenharmony_ci} 17854514f5e3Sopenharmony_ci 17864514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STARRAYSPREAD_V8_V8) 17874514f5e3Sopenharmony_ci{ 17884514f5e3Sopenharmony_ci int8_t array = READ_INST_8_0(); 17894514f5e3Sopenharmony_ci int8_t index = READ_INST_8_1(); 17904514f5e3Sopenharmony_ci 17914514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 17924514f5e3Sopenharmony_ci Address builtinAddress = 17934514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStarrayspreadV8V8); 17944514f5e3Sopenharmony_ci LOG_INST() << " BaselineStarrayspreadV8V8 Address: " << std::hex << builtinAddress; 17954514f5e3Sopenharmony_ci 17964514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 17974514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 17984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 17994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 18004514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(array)); 18014514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(index)); 18024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 18044514f5e3Sopenharmony_ci} 18054514f5e3Sopenharmony_ci 18064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDLOCALMODULEVAR_IMM8) 18074514f5e3Sopenharmony_ci{ 18084514f5e3Sopenharmony_ci int8_t index = READ_INST_8_0(); 18094514f5e3Sopenharmony_ci 18104514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 18114514f5e3Sopenharmony_ci Address builtinAddress = 18124514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdlocalmodulevarImm8); 18134514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdlocalmodulevarImm8 Address: " << std::hex << builtinAddress; 18144514f5e3Sopenharmony_ci 18154514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 18164514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 18174514f5e3Sopenharmony_ci parameters.emplace_back(index); 18184514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18194514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 18204514f5e3Sopenharmony_ci} 18214514f5e3Sopenharmony_ci 18224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STMODULEVAR_IMM8) 18234514f5e3Sopenharmony_ci{ 18244514f5e3Sopenharmony_ci int8_t index = READ_INST_8_0(); 18254514f5e3Sopenharmony_ci 18264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 18274514f5e3Sopenharmony_ci Address builtinAddress = 18284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStmodulevarImm8); 18294514f5e3Sopenharmony_ci LOG_INST() << " BaselineStmodulevarImm8 Address: " << std::hex << builtinAddress; 18304514f5e3Sopenharmony_ci 18314514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 18324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 18334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 18344514f5e3Sopenharmony_ci parameters.emplace_back(index); 18354514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18364514f5e3Sopenharmony_ci} 18374514f5e3Sopenharmony_ci 18384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYVALUE_IMM8_V8_V8) 18394514f5e3Sopenharmony_ci{ 18404514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 18414514f5e3Sopenharmony_ci uint8_t objectId = READ_INST_8_1(); 18424514f5e3Sopenharmony_ci uint8_t propKeyId = READ_INST_8_2(); 18434514f5e3Sopenharmony_ci 18444514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 18454514f5e3Sopenharmony_ci Address builtinAddress = 18464514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyvalueImm8V8V8); 18474514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyvalueImm8V8V8 Address: " << std::hex << builtinAddress; 18484514f5e3Sopenharmony_ci 18494514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 18504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 18514514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 18524514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(objectId)); 18534514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(propKeyId)); 18544514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 18554514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18564514f5e3Sopenharmony_ci} 18574514f5e3Sopenharmony_ci 18584514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYVALUE_IMM16_V8_V8) 18594514f5e3Sopenharmony_ci{ 18604514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 18614514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_2(); 18624514f5e3Sopenharmony_ci uint8_t propKey = READ_INST_8_3(); 18634514f5e3Sopenharmony_ci 18644514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 18654514f5e3Sopenharmony_ci Address builtinAddress = 18664514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyvalueImm16V8V8); 18674514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyvalueImm16V8V8 Address: " << std::hex << builtinAddress; 18684514f5e3Sopenharmony_ci 18694514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 18704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 18714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 18724514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 18734514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 18744514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 18754514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18764514f5e3Sopenharmony_ci} 18774514f5e3Sopenharmony_ci 18784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYINDEX_IMM8_V8_IMM16) 18794514f5e3Sopenharmony_ci{ 18804514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 18814514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_1(); 18824514f5e3Sopenharmony_ci uint16_t propKey = READ_INST_16_2(); 18834514f5e3Sopenharmony_ci 18844514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 18854514f5e3Sopenharmony_ci Address builtinAddress = 18864514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyindexImm8V8Imm16); 18874514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyindexImm8V8Imm16 Address: " << std::hex << builtinAddress; 18884514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 18894514f5e3Sopenharmony_ci LOG_INST() << " propKey: " << static_cast<int32_t>(propKey); 18904514f5e3Sopenharmony_ci 18914514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 18924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 18934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 18944514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 18954514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(propKey)); 18964514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 18974514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 18984514f5e3Sopenharmony_ci} 18994514f5e3Sopenharmony_ci 19004514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYINDEX_IMM16_V8_IMM16) 19014514f5e3Sopenharmony_ci{ 19024514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 19034514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_2(); 19044514f5e3Sopenharmony_ci uint16_t propKey = READ_INST_16_3(); 19054514f5e3Sopenharmony_ci 19064514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 19074514f5e3Sopenharmony_ci Address builtinAddress = 19084514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyindexImm16V8Imm16); 19094514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyindexImm16V8Imm16 Address: " << std::hex << builtinAddress; 19104514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 19114514f5e3Sopenharmony_ci LOG_INST() << " propKey: " << static_cast<int32_t>(propKey); 19124514f5e3Sopenharmony_ci 19134514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 19144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 19154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 19164514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 19174514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(propKey)); 19184514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 19194514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 19204514f5e3Sopenharmony_ci} 19214514f5e3Sopenharmony_ci 19224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYNAME_IMM8_ID16_V8) 19234514f5e3Sopenharmony_ci{ 19244514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 19254514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 19264514f5e3Sopenharmony_ci uint8_t objectId = READ_INST_8_3(); 19274514f5e3Sopenharmony_ci 19284514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 19294514f5e3Sopenharmony_ci Address builtinAddress = 19304514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbynameImm8Id16V8); 19314514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbynameImm8Id16V8 Address: " << std::hex << builtinAddress; 19324514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 19334514f5e3Sopenharmony_ci 19344514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 19354514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 19364514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 19374514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(objectId)); 19384514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 19394514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 19404514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 19414514f5e3Sopenharmony_ci} 19424514f5e3Sopenharmony_ci 19434514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYNAME_IMM16_ID16_V8) 19444514f5e3Sopenharmony_ci{ 19454514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 19464514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 19474514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_4(); 19484514f5e3Sopenharmony_ci 19494514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 19504514f5e3Sopenharmony_ci Address builtinAddress = 19514514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbynameImm16Id16V8); 19524514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbynameImm16Id16V8 Address: " << std::hex << builtinAddress; 19534514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 19544514f5e3Sopenharmony_ci 19554514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 19564514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 19574514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 19584514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 19594514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 19604514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 19614514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 19624514f5e3Sopenharmony_ci} 19634514f5e3Sopenharmony_ci 19644514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYVALUEWITHNAMESET_IMM8_V8_V8) 19654514f5e3Sopenharmony_ci{ 19664514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 19674514f5e3Sopenharmony_ci uint8_t objectId = READ_INST_8_1(); 19684514f5e3Sopenharmony_ci uint8_t propKeyId = READ_INST_8_2(); 19694514f5e3Sopenharmony_ci 19704514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 19714514f5e3Sopenharmony_ci Address builtinAddress = 19724514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyvaluewithnamesetImm8V8V8); 19734514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyvaluewithnamesetImm8V8V8 Address: " << std::hex << builtinAddress; 19744514f5e3Sopenharmony_ci 19754514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 19764514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 19774514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 19784514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(objectId)); 19794514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(propKeyId)); 19804514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 19814514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 19824514f5e3Sopenharmony_ci} 19834514f5e3Sopenharmony_ci 19844514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYVALUEWITHNAMESET_IMM16_V8_V8) 19854514f5e3Sopenharmony_ci{ 19864514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 19874514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_2(); 19884514f5e3Sopenharmony_ci uint8_t propKey = READ_INST_8_3(); 19894514f5e3Sopenharmony_ci 19904514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 19914514f5e3Sopenharmony_ci Address builtinAddress = 19924514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbyvaluewithnamesetImm16V8V8); 19934514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbyvaluewithnamesetImm16V8V8 Address: " << std::hex << builtinAddress; 19944514f5e3Sopenharmony_ci 19954514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 19964514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 19974514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 19984514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 19994514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(propKey)); 20004514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 20014514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 20024514f5e3Sopenharmony_ci} 20034514f5e3Sopenharmony_ci 20044514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYNAMEWITHNAMESET_IMM8_ID16_V8) 20054514f5e3Sopenharmony_ci{ 20064514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 20074514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 20084514f5e3Sopenharmony_ci uint8_t objectId = READ_INST_8_3(); 20094514f5e3Sopenharmony_ci 20104514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 20114514f5e3Sopenharmony_ci Address builtinAddress = 20124514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbynamewithnamesetImm8Id16V8); 20134514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbynamewithnamesetImm8Id16V8 Address: " << std::hex << builtinAddress; 20144514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 20154514f5e3Sopenharmony_ci 20164514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 20174514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 20184514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 20194514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(objectId)); 20204514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 20214514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 20224514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 20234514f5e3Sopenharmony_ci} 20244514f5e3Sopenharmony_ci 20254514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STOWNBYNAMEWITHNAMESET_IMM16_ID16_V8) 20264514f5e3Sopenharmony_ci{ 20274514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 20284514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 20294514f5e3Sopenharmony_ci uint8_t object = READ_INST_8_4(); 20304514f5e3Sopenharmony_ci 20314514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 20324514f5e3Sopenharmony_ci Address builtinAddress = 20334514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStownbynamewithnamesetImm16Id16V8); 20344514f5e3Sopenharmony_ci LOG_INST() << " BaselineStownbynamewithnamesetImm16Id16V8 Address: " << std::hex << builtinAddress; 20354514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 20364514f5e3Sopenharmony_ci 20374514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 20384514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 20394514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 20404514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 20414514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 20424514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 20434514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 20444514f5e3Sopenharmony_ci} 20454514f5e3Sopenharmony_ci 20464514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STCONSTTOGLOBALRECORD_IMM16_ID16) 20474514f5e3Sopenharmony_ci{ 20484514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_2(); 20494514f5e3Sopenharmony_ci 20504514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 20514514f5e3Sopenharmony_ci Address builtinAddress = 20524514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStconsttoglobalrecordImm16Id16); 20534514f5e3Sopenharmony_ci LOG_INST() << " BaselineStconsttoglobalrecordImm16Id16 Address: " << std::hex << builtinAddress; 20544514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 20554514f5e3Sopenharmony_ci 20564514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 20574514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 20584514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 20594514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 20604514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 20614514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 20624514f5e3Sopenharmony_ci} 20634514f5e3Sopenharmony_ci// ------- End parse bytecodes about reading and storing general variables ------- 20644514f5e3Sopenharmony_ci 20654514f5e3Sopenharmony_ci// ------- parse bytecodes about functions ------- 20664514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCFUNCTIONENTER) 20674514f5e3Sopenharmony_ci{ 20684514f5e3Sopenharmony_ci (void)bytecodeArray; 20694514f5e3Sopenharmony_ci 20704514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 20714514f5e3Sopenharmony_ci Address builtinAddress = 20724514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncfunctionenter); 20734514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncfunctionenter Address: " << std::hex << builtinAddress; 20744514f5e3Sopenharmony_ci 20754514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 20764514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 20774514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 20784514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 20794514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 20804514f5e3Sopenharmony_ci} 20814514f5e3Sopenharmony_ci 20824514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEFUNC_IMM8_ID16_IMM8) 20834514f5e3Sopenharmony_ci{ 20844514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 20854514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_1(); 20864514f5e3Sopenharmony_ci uint8_t length = READ_INST_8_3(); 20874514f5e3Sopenharmony_ci 20884514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 20894514f5e3Sopenharmony_ci Address builtinAddress = 20904514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinefuncImm8Id16Imm8); 20914514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinefuncImm8Id16Imm8 Address: " << std::hex << builtinAddress; 20924514f5e3Sopenharmony_ci LOG_INST() << " methodId: " << static_cast<int32_t>(methodId); 20934514f5e3Sopenharmony_ci LOG_INST() << " length: " << static_cast<int32_t>(length); 20944514f5e3Sopenharmony_ci 20954514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 20964514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 20974514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 20984514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodId)); 20994514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(length)); 21004514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 21014514f5e3Sopenharmony_ci 21024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 21034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 21044514f5e3Sopenharmony_ci} 21054514f5e3Sopenharmony_ci 21064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEFUNC_IMM16_ID16_IMM8) 21074514f5e3Sopenharmony_ci{ 21084514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 21094514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_2(); 21104514f5e3Sopenharmony_ci uint8_t length = READ_INST_8_4(); 21114514f5e3Sopenharmony_ci 21124514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 21134514f5e3Sopenharmony_ci Address builtinAddress = 21144514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinefuncImm16Id16Imm8); 21154514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinefuncImm16Id16Imm8 Address: " << std::hex << builtinAddress; 21164514f5e3Sopenharmony_ci LOG_INST() << " methodId: " << static_cast<int32_t>(methodId); 21174514f5e3Sopenharmony_ci LOG_INST() << " length: " << static_cast<int32_t>(length); 21184514f5e3Sopenharmony_ci 21194514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 21204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 21214514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 21224514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodId)); 21234514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(length)); 21244514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 21254514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 21264514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 21274514f5e3Sopenharmony_ci} 21284514f5e3Sopenharmony_ci 21294514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEMETHOD_IMM8_ID16_IMM8) 21304514f5e3Sopenharmony_ci{ 21314514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_1(); 21324514f5e3Sopenharmony_ci int8_t length = READ_INST_8_3(); 21334514f5e3Sopenharmony_ci 21344514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 21354514f5e3Sopenharmony_ci Address builtinAddress = 21364514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinemethodImm8Id16Imm8); 21374514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinemethodImm8Id16Imm8 Address: " << std::hex << builtinAddress; 21384514f5e3Sopenharmony_ci LOG_INST() << " methodId: " << static_cast<int32_t>(methodId); 21394514f5e3Sopenharmony_ci 21404514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 21414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 21424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 21434514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodId)); 21444514f5e3Sopenharmony_ci parameters.emplace_back(length); 21454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 21464514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 21474514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 21484514f5e3Sopenharmony_ci} 21494514f5e3Sopenharmony_ci 21504514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEMETHOD_IMM16_ID16_IMM8) 21514514f5e3Sopenharmony_ci{ 21524514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_2(); 21534514f5e3Sopenharmony_ci int8_t length = READ_INST_8_4(); 21544514f5e3Sopenharmony_ci 21554514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 21564514f5e3Sopenharmony_ci Address builtinAddress = 21574514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinemethodImm16Id16Imm8); 21584514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinemethodImm16Id16Imm8 Address: " << std::hex << builtinAddress; 21594514f5e3Sopenharmony_ci LOG_INST() << " methodId: " << static_cast<int32_t>(methodId); 21604514f5e3Sopenharmony_ci 21614514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 21624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 21634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 21644514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodId)); 21654514f5e3Sopenharmony_ci parameters.emplace_back(length); 21664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 21674514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 21684514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 21694514f5e3Sopenharmony_ci} 21704514f5e3Sopenharmony_ci 21714514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLARG0_IMM8) 21724514f5e3Sopenharmony_ci{ 21734514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 21744514f5e3Sopenharmony_ci 21754514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 21764514f5e3Sopenharmony_ci Address builtinAddress = 21774514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallarg0Imm8); 21784514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallarg0Imm8 Address: " << std::hex << builtinAddress; 21794514f5e3Sopenharmony_ci 21804514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 21814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 21824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 21834514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 21844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 21854514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 21864514f5e3Sopenharmony_ci} 21874514f5e3Sopenharmony_ci 21884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLARG1_IMM8_V8) 21894514f5e3Sopenharmony_ci{ 21904514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 21914514f5e3Sopenharmony_ci uint8_t argNo = READ_INST_8_1(); 21924514f5e3Sopenharmony_ci 21934514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 21944514f5e3Sopenharmony_ci Address builtinAddress = 21954514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallArg1Imm8V8); 21964514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallArg1Imm8V8 Address: " << std::hex << builtinAddress; 21974514f5e3Sopenharmony_ci 21984514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 21994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 22004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 22014514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(argNo)); 22024514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 22034514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 22044514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 22054514f5e3Sopenharmony_ci} 22064514f5e3Sopenharmony_ci 22074514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLARGS2_IMM8_V8_V8) 22084514f5e3Sopenharmony_ci{ 22094514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 22104514f5e3Sopenharmony_ci uint8_t arg1No = READ_INST_8_1(); 22114514f5e3Sopenharmony_ci uint8_t arg2No = READ_INST_8_2(); 22124514f5e3Sopenharmony_ci 22134514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 22144514f5e3Sopenharmony_ci Address builtinAddress = 22154514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallargs2Imm8V8V8); 22164514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallargs2Imm8V8V8 Address: " << std::hex << builtinAddress; 22174514f5e3Sopenharmony_ci 22184514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 22194514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 22204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 22214514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg1No)); 22224514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg2No)); 22234514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 22244514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 22254514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 22264514f5e3Sopenharmony_ci} 22274514f5e3Sopenharmony_ci 22284514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLARGS3_IMM8_V8_V8_V8) 22294514f5e3Sopenharmony_ci{ 22304514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 22314514f5e3Sopenharmony_ci uint8_t arg1No = READ_INST_8_1(); 22324514f5e3Sopenharmony_ci uint8_t arg2No = READ_INST_8_2(); 22334514f5e3Sopenharmony_ci uint8_t arg3No = READ_INST_8_3(); 22344514f5e3Sopenharmony_ci 22354514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 22364514f5e3Sopenharmony_ci Address builtinAddress = 22374514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallargs3Imm8V8V8V8); 22384514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallargs3Imm8V8V8V8 Address: " << std::hex << builtinAddress; 22394514f5e3Sopenharmony_ci 22404514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 22414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 22424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 22434514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg1No)); 22444514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg2No)); 22454514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg3No)); 22464514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 22474514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 22484514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 22494514f5e3Sopenharmony_ci} 22504514f5e3Sopenharmony_ci 22514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRANGE_IMM8_IMM8_V8) 22524514f5e3Sopenharmony_ci{ 22534514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 22544514f5e3Sopenharmony_ci uint8_t numArgs = READ_INST_8_1(); 22554514f5e3Sopenharmony_ci uint8_t arg = READ_INST_8_2(); 22564514f5e3Sopenharmony_ci 22574514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 22584514f5e3Sopenharmony_ci Address builtinAddress = 22594514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallrangeImm8Imm8V8); 22604514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallrangeImm8Imm8V8 Address: " << std::hex << builtinAddress; 22614514f5e3Sopenharmony_ci LOG_INST() << " numArgs: " << static_cast<int32_t>(numArgs); 22624514f5e3Sopenharmony_ci 22634514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 22644514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 22654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 22664514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(numArgs)); 22674514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg)); 22684514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 22694514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 22704514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 22714514f5e3Sopenharmony_ci} 22724514f5e3Sopenharmony_ci 22734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLTHIS0_IMM8_V8) 22744514f5e3Sopenharmony_ci{ 22754514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 22764514f5e3Sopenharmony_ci uint8_t thisObjNo = READ_INST_8_1(); 22774514f5e3Sopenharmony_ci 22784514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 22794514f5e3Sopenharmony_ci Address builtinAddress = 22804514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallthis0Imm8V8); 22814514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallthis0Imm8V8 Address: " << std::hex << builtinAddress; 22824514f5e3Sopenharmony_ci 22834514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 22844514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 22854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 22864514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(thisObjNo)); 22874514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 22884514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 22894514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 22904514f5e3Sopenharmony_ci} 22914514f5e3Sopenharmony_ci 22924514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLTHIS1_IMM8_V8_V8) 22934514f5e3Sopenharmony_ci{ 22944514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 22954514f5e3Sopenharmony_ci uint8_t thisObjId = READ_INST_8_1(); 22964514f5e3Sopenharmony_ci uint8_t argId = READ_INST_8_2(); 22974514f5e3Sopenharmony_ci 22984514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 22994514f5e3Sopenharmony_ci Address builtinAddress = 23004514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallthis1Imm8V8V8); 23014514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallthis1Imm8V8V8 Address: " << std::hex << builtinAddress; 23024514f5e3Sopenharmony_ci LOG_INST() << " thisObjId: " << static_cast<int16_t>(thisObjId); 23034514f5e3Sopenharmony_ci LOG_INST() << " argId: " << static_cast<int16_t>(argId); 23044514f5e3Sopenharmony_ci 23054514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 23064514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 23074514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 23084514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(thisObjId)); 23094514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(argId)); 23104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 23114514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 23124514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 23134514f5e3Sopenharmony_ci} 23144514f5e3Sopenharmony_ci 23154514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLTHIS2_IMM8_V8_V8_V8) 23164514f5e3Sopenharmony_ci{ 23174514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 23184514f5e3Sopenharmony_ci uint8_t thisObjId = READ_INST_8_1(); 23194514f5e3Sopenharmony_ci uint8_t arg1Id = READ_INST_8_2(); 23204514f5e3Sopenharmony_ci uint8_t arg2Id = READ_INST_8_3(); 23214514f5e3Sopenharmony_ci 23224514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 23234514f5e3Sopenharmony_ci Address builtinAddress = 23244514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallthis2Imm8V8V8V8); 23254514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallthis2Imm8V8V8V8 Address: " << std::hex << builtinAddress; 23264514f5e3Sopenharmony_ci 23274514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 23284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 23294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 23304514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(thisObjId)); 23314514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg1Id)); 23324514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(arg2Id)); 23334514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 23344514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 23354514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 23364514f5e3Sopenharmony_ci} 23374514f5e3Sopenharmony_ci 23384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLTHIS3_IMM8_V8_V8_V8_V8) 23394514f5e3Sopenharmony_ci{ 23404514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 23414514f5e3Sopenharmony_ci uint8_t thisObjId = READ_INST_8_1(); 23424514f5e3Sopenharmony_ci uint8_t arg1Id = READ_INST_8_2(); 23434514f5e3Sopenharmony_ci uint8_t arg2Id = READ_INST_8_3(); 23444514f5e3Sopenharmony_ci uint8_t arg3Id = READ_INST_8_4(); 23454514f5e3Sopenharmony_ci 23464514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 23474514f5e3Sopenharmony_ci Address builtinAddress = 23484514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallthis3Imm8V8V8V8V8); 23494514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallthis3Imm8V8V8V8V8 Address: " << std::hex << builtinAddress; 23504514f5e3Sopenharmony_ci 23514514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 23524514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 23534514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 23544514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(thisObjId)); 23554514f5e3Sopenharmony_ci uint32_t argIds = static_cast<uint32_t>(arg1Id) | 23564514f5e3Sopenharmony_ci (static_cast<uint32_t>(arg2Id) << ONE_BYTE_SIZE) | 23574514f5e3Sopenharmony_ci (static_cast<uint32_t>(arg3Id) << TWO_BYTE_SIZE); 23584514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(argIds)); 23594514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 23604514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 23614514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 23624514f5e3Sopenharmony_ci} 23634514f5e3Sopenharmony_ci 23644514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLTHISRANGE_IMM8_IMM8_V8) 23654514f5e3Sopenharmony_ci{ 23664514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 23674514f5e3Sopenharmony_ci uint8_t numArgs = READ_INST_8_1(); 23684514f5e3Sopenharmony_ci uint8_t thisObj = READ_INST_8_2(); 23694514f5e3Sopenharmony_ci 23704514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 23714514f5e3Sopenharmony_ci Address builtinAddress = 23724514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallthisrangeImm8Imm8V8); 23734514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallthisrangeImm8Imm8V8 Address: " << std::hex << builtinAddress; 23744514f5e3Sopenharmony_ci LOG_INST() << " numArgs: " << static_cast<int32_t>(numArgs); 23754514f5e3Sopenharmony_ci LOG_INST() << " thisObjId: " << static_cast<int16_t>(thisObj); 23764514f5e3Sopenharmony_ci 23774514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 23784514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 23794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 23804514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(numArgs)); 23814514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(thisObj)); 23824514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 23834514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 23844514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 23854514f5e3Sopenharmony_ci} 23864514f5e3Sopenharmony_ci 23874514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SUPERCALLTHISRANGE_IMM8_IMM8_V8) 23884514f5e3Sopenharmony_ci{ 23894514f5e3Sopenharmony_ci uint8_t range = READ_INST_8_1(); 23904514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_2(); 23914514f5e3Sopenharmony_ci 23924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 23934514f5e3Sopenharmony_ci Address builtinAddress = 23944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSupercallthisrangeImm8Imm8V8); 23954514f5e3Sopenharmony_ci LOG_INST() << " BaselineSupercallthisrangeImm8Imm8V8 Address: " << std::hex << builtinAddress; 23964514f5e3Sopenharmony_ci LOG_INST() << " range: " << static_cast<int16_t>(range); 23974514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int16_t>(v0); 23984514f5e3Sopenharmony_ci 23994514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 24004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 24014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 24024514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(range)); 24034514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(v0)); 24044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 24054514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 24064514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 24074514f5e3Sopenharmony_ci} 24084514f5e3Sopenharmony_ci 24094514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SUPERCALLARROWRANGE_IMM8_IMM8_V8) 24104514f5e3Sopenharmony_ci{ 24114514f5e3Sopenharmony_ci int8_t range = READ_INST_8_1(); 24124514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_2(); 24134514f5e3Sopenharmony_ci 24144514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 24154514f5e3Sopenharmony_ci Address builtinAddress = 24164514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSupercallarrowrangeImm8Imm8V8); 24174514f5e3Sopenharmony_ci LOG_INST() << " BaselineSupercallarrowrangeImm8Imm8V8 Address: " << std::hex << builtinAddress; 24184514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int16_t>(v0); 24194514f5e3Sopenharmony_ci 24204514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 24214514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 24224514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 24234514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 24244514f5e3Sopenharmony_ci parameters.emplace_back(range); 24254514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(v0)); 24264514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 24274514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 24284514f5e3Sopenharmony_ci} 24294514f5e3Sopenharmony_ci 24304514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_SUPERCALLFORWARDALLARGS_PREF_V8) 24314514f5e3Sopenharmony_ci{ 24324514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_1(); 24334514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 24344514f5e3Sopenharmony_ci 24354514f5e3Sopenharmony_ci Address builtinAddress = 24364514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeSupercallforwardallargsPrefV8); 24374514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeSupercallforwardallargsPrefV8 Address: " << std::hex << builtinAddress; 24384514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int16_t>(v0); 24394514f5e3Sopenharmony_ci 24404514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 24414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 24424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 24434514f5e3Sopenharmony_ci parameters.emplace_back(v0); 24444514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 24454514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 24464514f5e3Sopenharmony_ci} 24474514f5e3Sopenharmony_ci 24484514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SUPERCALLSPREAD_IMM8_V8) 24494514f5e3Sopenharmony_ci{ 24504514f5e3Sopenharmony_ci int8_t argList = READ_INST_8_1(); 24514514f5e3Sopenharmony_ci 24524514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 24534514f5e3Sopenharmony_ci Address builtinAddress = 24544514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSupercallspreadImm8V8); 24554514f5e3Sopenharmony_ci LOG_INST() << " BaselineSupercallspreadImm8V8 Address: " << std::hex << builtinAddress; 24564514f5e3Sopenharmony_ci 24574514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 24584514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 24594514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 24604514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 24614514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(argList)); 24624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 24634514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 24644514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 24654514f5e3Sopenharmony_ci} 24664514f5e3Sopenharmony_ci 24674514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(APPLY_IMM8_V8_V8) 24684514f5e3Sopenharmony_ci{ 24694514f5e3Sopenharmony_ci int8_t object = READ_INST_8_1(); 24704514f5e3Sopenharmony_ci int8_t argList = READ_INST_8_2(); 24714514f5e3Sopenharmony_ci 24724514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 24734514f5e3Sopenharmony_ci Address builtinAddress = 24744514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineApplyImm8V8V8); 24754514f5e3Sopenharmony_ci LOG_INST() << " BaselineApplyImm8V8V8 Address: " << std::hex << builtinAddress; 24764514f5e3Sopenharmony_ci 24774514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 24784514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 24794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 24804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 24814514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 24824514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(argList)); 24834514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 24844514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 24854514f5e3Sopenharmony_ci} 24864514f5e3Sopenharmony_ci 24874514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8) 24884514f5e3Sopenharmony_ci{ 24894514f5e3Sopenharmony_ci uint8_t objectVregId = READ_INST_8_0(); 24904514f5e3Sopenharmony_ci uint8_t propKeyVregId = READ_INST_8_1(); 24914514f5e3Sopenharmony_ci uint8_t getterVregId = READ_INST_8_2(); 24924514f5e3Sopenharmony_ci uint8_t setterVregId = READ_INST_8_3(); 24934514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 24944514f5e3Sopenharmony_ci 24954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 24964514f5e3Sopenharmony_ci Address builtinAddress = 24974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinegettersetterbyvalueV8V8V8V8); 24984514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinegettersetterbyvalueV8V8V8V8 Address: " << std::hex << builtinAddress; 24994514f5e3Sopenharmony_ci 25004514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 25014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 25024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 25034514f5e3Sopenharmony_ci uint32_t vRegIds = static_cast<uint32_t>(objectVregId) | 25044514f5e3Sopenharmony_ci (static_cast<uint32_t>(propKeyVregId) << ONE_BYTE_SIZE) | 25054514f5e3Sopenharmony_ci (static_cast<uint32_t>(getterVregId) << TWO_BYTE_SIZE) | 25064514f5e3Sopenharmony_ci (static_cast<uint32_t>(setterVregId) << THREE_BYTE_SIZE); 25074514f5e3Sopenharmony_ci parameters.emplace_back(offset); 25084514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(vRegIds)); 25094514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 25104514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 25114514f5e3Sopenharmony_ci} 25124514f5e3Sopenharmony_ci 25134514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8) 25144514f5e3Sopenharmony_ci{ 25154514f5e3Sopenharmony_ci int16_t methodId = READ_INST_16_1(); 25164514f5e3Sopenharmony_ci int16_t literalId = READ_INST_16_3(); 25174514f5e3Sopenharmony_ci int16_t count = READ_INST_16_5(); 25184514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_7(); 25194514f5e3Sopenharmony_ci 25204514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 25214514f5e3Sopenharmony_ci Address builtinAddress = 25224514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefineclasswithbufferImm8Id16Id16Imm16V8); 25234514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefineclasswithbufferImm8Id16Id16Imm16V8 Address: " << std::hex << builtinAddress; 25244514f5e3Sopenharmony_ci 25254514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 25264514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 25274514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 25284514f5e3Sopenharmony_ci parameters.emplace_back(methodId); 25294514f5e3Sopenharmony_ci parameters.emplace_back(literalId); 25304514f5e3Sopenharmony_ci parameters.emplace_back(count); 25314514f5e3Sopenharmony_ci parameters.emplace_back(v0); 25324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 25334514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 25344514f5e3Sopenharmony_ci} 25354514f5e3Sopenharmony_ci 25364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINECLASSWITHBUFFER_IMM16_ID16_ID16_IMM16_V8) 25374514f5e3Sopenharmony_ci{ 25384514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 25394514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_2(); 25404514f5e3Sopenharmony_ci uint16_t literalId = READ_INST_16_4(); 25414514f5e3Sopenharmony_ci uint16_t count = READ_INST_16_6(); 25424514f5e3Sopenharmony_ci uint8_t superClass = READ_INST_8_8(); 25434514f5e3Sopenharmony_ci 25444514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 25454514f5e3Sopenharmony_ci Address builtinAddress = 25464514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefineclasswithbufferImm16Id16Id16Imm16V8); 25474514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefineclasswithbufferImm16Id16Id16Imm16V8 Address: " << std::hex << builtinAddress; 25484514f5e3Sopenharmony_ci 25494514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 25504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 25514514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 25524514f5e3Sopenharmony_ci uint32_t methodAndLiteralId = static_cast<uint32_t>(methodId) | (static_cast<uint32_t>(literalId) << TWO_BYTE_SIZE); 25534514f5e3Sopenharmony_ci uint32_t countAndSuperClassId = static_cast<uint32_t>(count) | (static_cast<uint32_t>(superClass) << TWO_BYTE_SIZE); 25544514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodAndLiteralId)); 25554514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(countAndSuperClassId)); 25564514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 25574514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 25584514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 25594514f5e3Sopenharmony_ci} 25604514f5e3Sopenharmony_ci 25614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETRESUMEMODE) 25624514f5e3Sopenharmony_ci{ 25634514f5e3Sopenharmony_ci (void)bytecodeArray; 25644514f5e3Sopenharmony_ci 25654514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 25664514f5e3Sopenharmony_ci Address builtinAddress = 25674514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetresumemod); 25684514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetresumemod Address: " << std::hex << builtinAddress; 25694514f5e3Sopenharmony_ci 25704514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 25714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 25724514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 25734514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 25744514f5e3Sopenharmony_ci} 25754514f5e3Sopenharmony_ci 25764514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETTEMPLATEOBJECT_IMM8) 25774514f5e3Sopenharmony_ci{ 25784514f5e3Sopenharmony_ci (void)bytecodeArray; 25794514f5e3Sopenharmony_ci 25804514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 25814514f5e3Sopenharmony_ci Address builtinAddress = 25824514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGettemplateobjectImm8); 25834514f5e3Sopenharmony_ci LOG_INST() << " BaselineGettemplateobjectImm8 Address: " << std::hex << builtinAddress; 25844514f5e3Sopenharmony_ci 25854514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 25864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 25874514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 25884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 25894514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 25904514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 25914514f5e3Sopenharmony_ci} 25924514f5e3Sopenharmony_ci 25934514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETTEMPLATEOBJECT_IMM16) 25944514f5e3Sopenharmony_ci{ 25954514f5e3Sopenharmony_ci (void)bytecodeArray; 25964514f5e3Sopenharmony_ci 25974514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 25984514f5e3Sopenharmony_ci Address builtinAddress = 25994514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGettemplateobjectImm16); 26004514f5e3Sopenharmony_ci LOG_INST() << " BaselineGettemplateobjectImm16 Address: " << std::hex << builtinAddress; 26014514f5e3Sopenharmony_ci 26024514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 26054514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 26064514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26074514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26084514f5e3Sopenharmony_ci} 26094514f5e3Sopenharmony_ci 26104514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETNEXTPROPNAME_V8) 26114514f5e3Sopenharmony_ci{ 26124514f5e3Sopenharmony_ci int8_t iter = READ_INST_8_0(); 26134514f5e3Sopenharmony_ci 26144514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 26154514f5e3Sopenharmony_ci Address builtinAddress = 26164514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetnextpropnameV8); 26174514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetnextpropnameV8 Address: " << std::hex << builtinAddress; 26184514f5e3Sopenharmony_ci 26194514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26214514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 26224514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(iter)); 26234514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26244514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26254514f5e3Sopenharmony_ci} 26264514f5e3Sopenharmony_ci 26274514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETMODULENAMESPACE_IMM8) 26284514f5e3Sopenharmony_ci{ 26294514f5e3Sopenharmony_ci uint8_t index = READ_INST_8_0(); 26304514f5e3Sopenharmony_ci 26314514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 26324514f5e3Sopenharmony_ci Address builtinAddress = 26334514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetmodulenamespaceImm8); 26344514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetmodulenamespaceImm8 Address: " << std::hex << builtinAddress; 26354514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 26364514f5e3Sopenharmony_ci 26374514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26384514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26394514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 26404514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26414514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26424514f5e3Sopenharmony_ci} 26434514f5e3Sopenharmony_ci 26444514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCFUNCTIONAWAITUNCAUGHT_V8) 26454514f5e3Sopenharmony_ci{ 26464514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 26474514f5e3Sopenharmony_ci 26484514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 26494514f5e3Sopenharmony_ci Address builtinAddress = 26504514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncfunctionawaituncaughtV8); 26514514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncfunctionawaituncaughtV8 Address: " << std::hex << builtinAddress; 26524514f5e3Sopenharmony_ci 26534514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26554514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 26564514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 26574514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 26584514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26594514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26604514f5e3Sopenharmony_ci} 26614514f5e3Sopenharmony_ci 26624514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCFUNCTIONRESOLVE_V8) 26634514f5e3Sopenharmony_ci{ 26644514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 26654514f5e3Sopenharmony_ci 26664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 26674514f5e3Sopenharmony_ci Address builtinAddress = 26684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncfunctionresolveV8); 26694514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncfunctionresolveV8 Address: " << std::hex << builtinAddress; 26704514f5e3Sopenharmony_ci 26714514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 26744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 26754514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 26764514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26774514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26784514f5e3Sopenharmony_ci} 26794514f5e3Sopenharmony_ci 26804514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCFUNCTIONREJECT_V8) 26814514f5e3Sopenharmony_ci{ 26824514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 26834514f5e3Sopenharmony_ci 26844514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 26854514f5e3Sopenharmony_ci Address builtinAddress = 26864514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncfunctionrejectV8); 26874514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncfunctionrejectV8 Address: " << std::hex << builtinAddress; 26884514f5e3Sopenharmony_ci 26894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 26904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 26914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 26924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 26934514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 26944514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 26954514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 26964514f5e3Sopenharmony_ci} 26974514f5e3Sopenharmony_ci 26984514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(COPYDATAPROPERTIES_V8) 26994514f5e3Sopenharmony_ci{ 27004514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 27014514f5e3Sopenharmony_ci 27024514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27034514f5e3Sopenharmony_ci Address builtinAddress = 27044514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCopydatapropertiesV8); 27054514f5e3Sopenharmony_ci LOG_INST() << " BaselineCopydatapropertiesV8 Address: " << std::hex << builtinAddress; 27064514f5e3Sopenharmony_ci 27074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27104514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 27114514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 27124514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27134514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 27144514f5e3Sopenharmony_ci} 27154514f5e3Sopenharmony_ci 27164514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(COPYRESTARGS_IMM8) 27174514f5e3Sopenharmony_ci{ 27184514f5e3Sopenharmony_ci uint8_t restIdx = READ_INST_8_0(); 27194514f5e3Sopenharmony_ci 27204514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27214514f5e3Sopenharmony_ci Address builtinAddress = 27224514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCopyrestargsImm8); 27234514f5e3Sopenharmony_ci LOG_INST() << " BaselineCopyrestargsImm8 Address: " << std::hex << builtinAddress; 27244514f5e3Sopenharmony_ci LOG_INST() << " restIdx: " << static_cast<int32_t>(restIdx); 27254514f5e3Sopenharmony_ci 27264514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27274514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 27304514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(restIdx)); 27314514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27324514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 27334514f5e3Sopenharmony_ci} 27344514f5e3Sopenharmony_ci 27354514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DYNAMICIMPORT) 27364514f5e3Sopenharmony_ci{ 27374514f5e3Sopenharmony_ci (void)bytecodeArray; 27384514f5e3Sopenharmony_ci 27394514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27404514f5e3Sopenharmony_ci Address builtinAddress = 27414514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDynamicimport); 27424514f5e3Sopenharmony_ci LOG_INST() << " BaselineDynamicimport Address: " << std::hex << builtinAddress; 27434514f5e3Sopenharmony_ci 27444514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27474514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27484514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 27494514f5e3Sopenharmony_ci} 27504514f5e3Sopenharmony_ci 27514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(RESUMEGENERATOR) 27524514f5e3Sopenharmony_ci{ 27534514f5e3Sopenharmony_ci (void)bytecodeArray; 27544514f5e3Sopenharmony_ci 27554514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27564514f5e3Sopenharmony_ci Address builtinAddress = 27574514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineResumegenerator); 27584514f5e3Sopenharmony_ci LOG_INST() << " BaselineResumegenerator Address: " << std::hex << builtinAddress; 27594514f5e3Sopenharmony_ci 27604514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27614514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 27644514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27654514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 27664514f5e3Sopenharmony_ci} 27674514f5e3Sopenharmony_ci 27684514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(RETURNUNDEFINED) 27694514f5e3Sopenharmony_ci{ 27704514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 27714514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27724514f5e3Sopenharmony_ci Address builtinAddress = 27734514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineReturnundefined); 27744514f5e3Sopenharmony_ci LOG_INST() << " BaselineReturnundefined Address: " << std::hex << builtinAddress; 27754514f5e3Sopenharmony_ci 27764514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27774514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27784514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27794514f5e3Sopenharmony_ci parameters.emplace_back(offset); 27804514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27814514f5e3Sopenharmony_ci} 27824514f5e3Sopenharmony_ci 27834514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(RETURN) 27844514f5e3Sopenharmony_ci{ 27854514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 27864514f5e3Sopenharmony_ci 27874514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 27884514f5e3Sopenharmony_ci Address builtinAddress = 27894514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineReturn); 27904514f5e3Sopenharmony_ci LOG_INST() << " BaselineReturn Address: " << std::hex << builtinAddress; 27914514f5e3Sopenharmony_ci 27924514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 27934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 27944514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 27954514f5e3Sopenharmony_ci parameters.emplace_back(offset); 27964514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 27974514f5e3Sopenharmony_ci} 27984514f5e3Sopenharmony_ci// ------- End parse bytecodes about functions ------- 27994514f5e3Sopenharmony_ci 28004514f5e3Sopenharmony_ci// ------- parse bytecodes about arithmetic ------- 28014514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ADD2_IMM8_V8) 28024514f5e3Sopenharmony_ci{ 28034514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 28044514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 28054514f5e3Sopenharmony_ci 28064514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 28074514f5e3Sopenharmony_ci Address builtinAddress = 28084514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAdd2Imm8V8); 28094514f5e3Sopenharmony_ci LOG_INST() << " BaselineAdd2Imm8V8 Address: " << std::hex << builtinAddress; 28104514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 28114514f5e3Sopenharmony_ci 28124514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 28134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 28144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 28154514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 28164514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 28174514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 28184514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 28194514f5e3Sopenharmony_ci} 28204514f5e3Sopenharmony_ci 28214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SUB2_IMM8_V8) 28224514f5e3Sopenharmony_ci{ 28234514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 28244514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 28254514f5e3Sopenharmony_ci 28264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 28274514f5e3Sopenharmony_ci Address builtinAddress = 28284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSub2Imm8V8); 28294514f5e3Sopenharmony_ci LOG_INST() << " BaselineSub2Imm8V8 Address: " << std::hex << builtinAddress; 28304514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 28314514f5e3Sopenharmony_ci 28324514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 28334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 28344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 28354514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 28364514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 28374514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 28384514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 28394514f5e3Sopenharmony_ci} 28404514f5e3Sopenharmony_ci 28414514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(MUL2_IMM8_V8) 28424514f5e3Sopenharmony_ci{ 28434514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 28444514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 28454514f5e3Sopenharmony_ci 28464514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 28474514f5e3Sopenharmony_ci Address builtinAddress = 28484514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineMul2Imm8V8); 28494514f5e3Sopenharmony_ci LOG_INST() << " BaselineMul2Imm8V8 Address: " << std::hex << builtinAddress; 28504514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 28514514f5e3Sopenharmony_ci 28524514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 28534514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 28544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 28554514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 28564514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 28574514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 28584514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 28594514f5e3Sopenharmony_ci} 28604514f5e3Sopenharmony_ci 28614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DIV2_IMM8_V8) 28624514f5e3Sopenharmony_ci{ 28634514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 28644514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 28654514f5e3Sopenharmony_ci 28664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 28674514f5e3Sopenharmony_ci Address builtinAddress = 28684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDiv2Imm8V8); 28694514f5e3Sopenharmony_ci LOG_INST() << " BaselineDiv2Imm8V8 Address: " << std::hex << builtinAddress; 28704514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 28714514f5e3Sopenharmony_ci 28724514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 28734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 28744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 28754514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 28764514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 28774514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 28784514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 28794514f5e3Sopenharmony_ci} 28804514f5e3Sopenharmony_ci 28814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(MOD2_IMM8_V8) 28824514f5e3Sopenharmony_ci{ 28834514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 28844514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 28854514f5e3Sopenharmony_ci 28864514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 28874514f5e3Sopenharmony_ci Address builtinAddress = 28884514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineMod2Imm8V8); 28894514f5e3Sopenharmony_ci LOG_INST() << " BaselineMod2Imm8V8 Address: " << std::hex << builtinAddress; 28904514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 28914514f5e3Sopenharmony_ci 28924514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 28934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 28944514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 28954514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 28964514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 28974514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 28984514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 28994514f5e3Sopenharmony_ci} 29004514f5e3Sopenharmony_ci 29014514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SHL2_IMM8_V8) 29024514f5e3Sopenharmony_ci{ 29034514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 29044514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 29054514f5e3Sopenharmony_ci 29064514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 29074514f5e3Sopenharmony_ci Address builtinAddress = 29084514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineShl2Imm8V8); 29094514f5e3Sopenharmony_ci LOG_INST() << " BaselineShl2Imm8V8 Address: " << std::hex << builtinAddress; 29104514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 29114514f5e3Sopenharmony_ci 29124514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 29134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 29144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 29154514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 29164514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 29174514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 29184514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 29194514f5e3Sopenharmony_ci} 29204514f5e3Sopenharmony_ci 29214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SHR2_IMM8_V8) 29224514f5e3Sopenharmony_ci{ 29234514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 29244514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 29254514f5e3Sopenharmony_ci 29264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 29274514f5e3Sopenharmony_ci Address builtinAddress = 29284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineShr2Imm8V8); 29294514f5e3Sopenharmony_ci LOG_INST() << " BaselineShr2Imm8V8 Address: " << std::hex << builtinAddress; 29304514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 29314514f5e3Sopenharmony_ci 29324514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 29334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 29344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 29354514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 29364514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 29374514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 29384514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 29394514f5e3Sopenharmony_ci} 29404514f5e3Sopenharmony_ci 29414514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASHR2_IMM8_V8) 29424514f5e3Sopenharmony_ci{ 29434514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 29444514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 29454514f5e3Sopenharmony_ci 29464514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 29474514f5e3Sopenharmony_ci Address builtinAddress = 29484514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAshr2Imm8V8); 29494514f5e3Sopenharmony_ci LOG_INST() << " BaselineAshr2Imm8V8 Address: " << std::hex << builtinAddress; 29504514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 29514514f5e3Sopenharmony_ci 29524514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 29534514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 29544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 29554514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 29564514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 29574514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 29584514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 29594514f5e3Sopenharmony_ci} 29604514f5e3Sopenharmony_ci 29614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(AND2_IMM8_V8) 29624514f5e3Sopenharmony_ci{ 29634514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 29644514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 29654514f5e3Sopenharmony_ci 29664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 29674514f5e3Sopenharmony_ci Address builtinAddress = 29684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAnd2Imm8V8); 29694514f5e3Sopenharmony_ci LOG_INST() << " BaselineAnd2Imm8V8 Address: " << std::hex << builtinAddress; 29704514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 29714514f5e3Sopenharmony_ci 29724514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 29734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 29744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 29754514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 29764514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 29774514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 29784514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 29794514f5e3Sopenharmony_ci} 29804514f5e3Sopenharmony_ci 29814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(OR2_IMM8_V8) 29824514f5e3Sopenharmony_ci{ 29834514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 29844514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 29854514f5e3Sopenharmony_ci 29864514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 29874514f5e3Sopenharmony_ci Address builtinAddress = 29884514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineOr2Imm8V8); 29894514f5e3Sopenharmony_ci LOG_INST() << " BaselineOr2Imm8V8 Address: " << std::hex << builtinAddress; 29904514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 29914514f5e3Sopenharmony_ci 29924514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 29934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 29944514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 29954514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 29964514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 29974514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 29984514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 29994514f5e3Sopenharmony_ci} 30004514f5e3Sopenharmony_ci 30014514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(XOR2_IMM8_V8) 30024514f5e3Sopenharmony_ci{ 30034514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 30044514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 30054514f5e3Sopenharmony_ci 30064514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30074514f5e3Sopenharmony_ci Address builtinAddress = 30084514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineXor2Imm8V8); 30094514f5e3Sopenharmony_ci LOG_INST() << " BaselineXor2Imm8V8 Address: " << std::hex << builtinAddress; 30104514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 30114514f5e3Sopenharmony_ci 30124514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 30144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 30154514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 30164514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 30174514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 30184514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 30194514f5e3Sopenharmony_ci} 30204514f5e3Sopenharmony_ci 30214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(EXP_IMM8_V8) 30224514f5e3Sopenharmony_ci{ 30234514f5e3Sopenharmony_ci uint8_t vBaseId = READ_INST_8_1(); 30244514f5e3Sopenharmony_ci 30254514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30264514f5e3Sopenharmony_ci Address builtinAddress = 30274514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineExpImm8V8); 30284514f5e3Sopenharmony_ci LOG_INST() << " BaselineExpImm8V8 Address: " << std::hex << builtinAddress; 30294514f5e3Sopenharmony_ci 30304514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 30324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 30334514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vBaseId)); 30344514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 30354514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 30364514f5e3Sopenharmony_ci} 30374514f5e3Sopenharmony_ci 30384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NEG_IMM8) 30394514f5e3Sopenharmony_ci{ 30404514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 30414514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30424514f5e3Sopenharmony_ci Address builtinAddress = 30434514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNegImm8); 30444514f5e3Sopenharmony_ci LOG_INST() << " BaselineNegImm8 Address: " << std::hex << builtinAddress; 30454514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 30464514f5e3Sopenharmony_ci 30474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 30494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 30504514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 30514514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 30524514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 30534514f5e3Sopenharmony_ci} 30544514f5e3Sopenharmony_ci 30554514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NOT_IMM8) 30564514f5e3Sopenharmony_ci{ 30574514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 30584514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30594514f5e3Sopenharmony_ci Address builtinAddress = 30604514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNotImm8); 30614514f5e3Sopenharmony_ci LOG_INST() << " BaselineNotImm8 Address: " << std::hex << builtinAddress; 30624514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 30634514f5e3Sopenharmony_ci 30644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 30664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 30674514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 30684514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 30694514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 30704514f5e3Sopenharmony_ci} 30714514f5e3Sopenharmony_ci 30724514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(INC_IMM8) 30734514f5e3Sopenharmony_ci{ 30744514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 30754514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30764514f5e3Sopenharmony_ci Address builtinAddress = 30774514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineIncImm8); 30784514f5e3Sopenharmony_ci LOG_INST() << " BaselineIncImm8 Address: " << std::hex << builtinAddress; 30794514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 30804514f5e3Sopenharmony_ci 30814514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 30834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 30844514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 30854514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 30864514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 30874514f5e3Sopenharmony_ci} 30884514f5e3Sopenharmony_ci 30894514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEC_IMM8) 30904514f5e3Sopenharmony_ci{ 30914514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 30924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 30934514f5e3Sopenharmony_ci Address builtinAddress = 30944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDecImm8); 30954514f5e3Sopenharmony_ci LOG_INST() << " BaselineDecImm8 Address: " << std::hex << builtinAddress; 30964514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 30974514f5e3Sopenharmony_ci 30984514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 30994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31014514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 31024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 31044514f5e3Sopenharmony_ci} 31054514f5e3Sopenharmony_ci 31064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TONUMBER_IMM8) 31074514f5e3Sopenharmony_ci{ 31084514f5e3Sopenharmony_ci (void)bytecodeArray; 31094514f5e3Sopenharmony_ci 31104514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 31114514f5e3Sopenharmony_ci Address builtinAddress = 31124514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTonumberImm8); 31134514f5e3Sopenharmony_ci LOG_INST() << " BaselineTonumberImm8 Address: " << std::hex << builtinAddress; 31144514f5e3Sopenharmony_ci 31154514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 31164514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31174514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31184514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 31194514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31204514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 31214514f5e3Sopenharmony_ci} 31224514f5e3Sopenharmony_ci 31234514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TONUMERIC_IMM8) 31244514f5e3Sopenharmony_ci{ 31254514f5e3Sopenharmony_ci (void)bytecodeArray; 31264514f5e3Sopenharmony_ci 31274514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 31284514f5e3Sopenharmony_ci Address builtinAddress = 31294514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTonumericImm8); 31304514f5e3Sopenharmony_ci LOG_INST() << " BaselineTonumericImm8 Address: " << std::hex << builtinAddress; 31314514f5e3Sopenharmony_ci 31324514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 31334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31354514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 31364514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31374514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 31384514f5e3Sopenharmony_ci} 31394514f5e3Sopenharmony_ci// ------- End parse bytecodes about arithmetic ------- 31404514f5e3Sopenharmony_ci 31414514f5e3Sopenharmony_ci// ------- parse bytecodes about comparison and check ------- 31424514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(EQ_IMM8_V8) 31434514f5e3Sopenharmony_ci{ 31444514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 31454514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 31464514f5e3Sopenharmony_ci 31474514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 31484514f5e3Sopenharmony_ci Address builtinAddress = 31494514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineEqImm8V8); 31504514f5e3Sopenharmony_ci LOG_INST() << " BaselineEqImm8V8 Address: " << std::hex << builtinAddress; 31514514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 31524514f5e3Sopenharmony_ci 31534514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 31544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31554514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31564514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 31574514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 31584514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31594514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 31604514f5e3Sopenharmony_ci} 31614514f5e3Sopenharmony_ci 31624514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NOTEQ_IMM8_V8) 31634514f5e3Sopenharmony_ci{ 31644514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 31654514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 31664514f5e3Sopenharmony_ci 31674514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 31684514f5e3Sopenharmony_ci Address builtinAddress = 31694514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineNoteqImm8V8); 31704514f5e3Sopenharmony_ci LOG_INST() << " BaselineNoteqImm8V8 Address: " << std::hex << builtinAddress; 31714514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 31724514f5e3Sopenharmony_ci 31734514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 31744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31754514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31764514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 31774514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 31784514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31794514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 31804514f5e3Sopenharmony_ci} 31814514f5e3Sopenharmony_ci 31824514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LESS_IMM8_V8) 31834514f5e3Sopenharmony_ci{ 31844514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 31854514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 31864514f5e3Sopenharmony_ci 31874514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 31884514f5e3Sopenharmony_ci Address builtinAddress = 31894514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLessImm8V8); 31904514f5e3Sopenharmony_ci LOG_INST() << " BaselineLessImm8V8 Address: " << std::hex << builtinAddress; 31914514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 31924514f5e3Sopenharmony_ci 31934514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 31944514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 31954514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 31964514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 31974514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 31984514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 31994514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32004514f5e3Sopenharmony_ci} 32014514f5e3Sopenharmony_ci 32024514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LESSEQ_IMM8_V8) 32034514f5e3Sopenharmony_ci{ 32044514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 32054514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 32064514f5e3Sopenharmony_ci 32074514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 32084514f5e3Sopenharmony_ci Address builtinAddress = 32094514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLesseqImm8V8); 32104514f5e3Sopenharmony_ci LOG_INST() << " BaselineLesseqImm8V8 Address: " << std::hex << builtinAddress; 32114514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 32124514f5e3Sopenharmony_ci 32134514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 32144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 32154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 32164514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 32174514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 32184514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 32194514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32204514f5e3Sopenharmony_ci} 32214514f5e3Sopenharmony_ci 32224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GREATER_IMM8_V8) 32234514f5e3Sopenharmony_ci{ 32244514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 32254514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 32264514f5e3Sopenharmony_ci 32274514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 32284514f5e3Sopenharmony_ci Address builtinAddress = 32294514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGreaterImm8V8); 32304514f5e3Sopenharmony_ci LOG_INST() << " BaselineGreaterImm8V8 Address: " << std::hex << builtinAddress; 32314514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 32324514f5e3Sopenharmony_ci 32334514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 32344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 32354514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 32364514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 32374514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 32384514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 32394514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32404514f5e3Sopenharmony_ci} 32414514f5e3Sopenharmony_ci 32424514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GREATEREQ_IMM8_V8) 32434514f5e3Sopenharmony_ci{ 32444514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 32454514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 32464514f5e3Sopenharmony_ci 32474514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 32484514f5e3Sopenharmony_ci Address builtinAddress = 32494514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGreatereqImm8V8); 32504514f5e3Sopenharmony_ci LOG_INST() << " BaselineGreatereqImm8V8 Address: " << std::hex << builtinAddress; 32514514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 32524514f5e3Sopenharmony_ci 32534514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 32544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 32554514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 32564514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 32574514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 32584514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 32594514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32604514f5e3Sopenharmony_ci} 32614514f5e3Sopenharmony_ci 32624514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ISIN_IMM8_V8) 32634514f5e3Sopenharmony_ci{ 32644514f5e3Sopenharmony_ci uint8_t vSrcId = READ_INST_8_1(); 32654514f5e3Sopenharmony_ci 32664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 32674514f5e3Sopenharmony_ci Address builtinAddress = 32684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineIsinImm8V8); 32694514f5e3Sopenharmony_ci LOG_INST() << " BaselineIsinImm8V8 Address: " << std::hex << builtinAddress; 32704514f5e3Sopenharmony_ci 32714514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 32724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 32734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 32744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 32754514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vSrcId)); 32764514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 32774514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32784514f5e3Sopenharmony_ci} 32794514f5e3Sopenharmony_ci 32804514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(INSTANCEOF_IMM8_V8) 32814514f5e3Sopenharmony_ci{ 32824514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 32834514f5e3Sopenharmony_ci uint8_t vObjId = READ_INST_8_1(); 32844514f5e3Sopenharmony_ci 32854514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 32864514f5e3Sopenharmony_ci Address builtinAddress = 32874514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineInstanceofImm8V8); 32884514f5e3Sopenharmony_ci LOG_INST() << " BaselineInstanceofImm8V8 Address: " << std::hex << builtinAddress; 32894514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 32904514f5e3Sopenharmony_ci 32914514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 32924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 32934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 32944514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(vObjId)); 32954514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 32964514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 32974514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 32984514f5e3Sopenharmony_ci} 32994514f5e3Sopenharmony_ci 33004514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STRICTNOTEQ_IMM8_V8) 33014514f5e3Sopenharmony_ci{ 33024514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 33034514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 33044514f5e3Sopenharmony_ci 33054514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33064514f5e3Sopenharmony_ci Address builtinAddress = 33074514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStrictnoteqImm8V8); 33084514f5e3Sopenharmony_ci LOG_INST() << " BaselineStrictnoteqImm8V8 Address: " << std::hex << builtinAddress; 33094514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 33104514f5e3Sopenharmony_ci 33114514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33124514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 33134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 33144514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 33154514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 33164514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 33174514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 33184514f5e3Sopenharmony_ci} 33194514f5e3Sopenharmony_ci 33204514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STRICTEQ_IMM8_V8) 33214514f5e3Sopenharmony_ci{ 33224514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 33234514f5e3Sopenharmony_ci uint8_t vLeftId = READ_INST_8_1(); 33244514f5e3Sopenharmony_ci 33254514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33264514f5e3Sopenharmony_ci Address builtinAddress = 33274514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStricteqImm8V8); 33284514f5e3Sopenharmony_ci LOG_INST() << " BaselineStricteqImm8V8 Address: " << std::hex << builtinAddress; 33294514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 33304514f5e3Sopenharmony_ci 33314514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 33334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 33344514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vLeftId)); 33354514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 33364514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 33374514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 33384514f5e3Sopenharmony_ci} 33394514f5e3Sopenharmony_ci 33404514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ISTRUE) 33414514f5e3Sopenharmony_ci{ 33424514f5e3Sopenharmony_ci (void)bytecodeArray; 33434514f5e3Sopenharmony_ci 33444514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33454514f5e3Sopenharmony_ci Address builtinAddress = 33464514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineIstrue); 33474514f5e3Sopenharmony_ci LOG_INST() << " BaselineIstrue Address: " << std::hex << builtinAddress; 33484514f5e3Sopenharmony_ci 33494514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 33514514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 33524514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 33534514f5e3Sopenharmony_ci} 33544514f5e3Sopenharmony_ci 33554514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_ISTRUE_PREF_IMM8) 33564514f5e3Sopenharmony_ci{ 33574514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_1(); 33584514f5e3Sopenharmony_ci 33594514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33604514f5e3Sopenharmony_ci Address builtinAddress = 33614514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeIstruePrefImm8); 33624514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeIstruePrefImm8 Address: " << std::hex << builtinAddress; 33634514f5e3Sopenharmony_ci 33644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 33664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 33674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 33684514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 33694514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 33704514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 33714514f5e3Sopenharmony_ci} 33724514f5e3Sopenharmony_ci 33734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ISFALSE) 33744514f5e3Sopenharmony_ci{ 33754514f5e3Sopenharmony_ci (void)bytecodeArray; 33764514f5e3Sopenharmony_ci 33774514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33784514f5e3Sopenharmony_ci Address builtinAddress = 33794514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineIsfalse); 33804514f5e3Sopenharmony_ci LOG_INST() << " BaselineIsfalse Address: " << std::hex << builtinAddress; 33814514f5e3Sopenharmony_ci 33824514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 33844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 33854514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 33864514f5e3Sopenharmony_ci} 33874514f5e3Sopenharmony_ci 33884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_ISFALSE_PREF_IMM8) 33894514f5e3Sopenharmony_ci{ 33904514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_1(); 33914514f5e3Sopenharmony_ci 33924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 33934514f5e3Sopenharmony_ci Address builtinAddress = 33944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeIsfalsePrefImm8); 33954514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeIsfalsePrefImm8 Address: " << std::hex << builtinAddress; 33964514f5e3Sopenharmony_ci 33974514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 33984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 33994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 34004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 34014514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 34024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 34034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 34044514f5e3Sopenharmony_ci} 34054514f5e3Sopenharmony_ci 34064514f5e3Sopenharmony_ci// ------- End parse bytecodes about comparison ------- 34074514f5e3Sopenharmony_ci 34084514f5e3Sopenharmony_ci// ------- parse bytecodes about control flow ------- 34094514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQZ_IMM8) 34104514f5e3Sopenharmony_ci{ 34114514f5e3Sopenharmony_ci int8_t offset = static_cast<int8_t>(READ_INST_8_0()); 34124514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 34134514f5e3Sopenharmony_ci 34144514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 34154514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 34164514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 34174514f5e3Sopenharmony_ci } else { 34184514f5e3Sopenharmony_ci jump = new JumpLabel(); 34194514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 34204514f5e3Sopenharmony_ci } 34214514f5e3Sopenharmony_ci 34224514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 34234514f5e3Sopenharmony_ci JumpLabel exitLabel; 34244514f5e3Sopenharmony_ci GetBaselineAssembler().Jnz(exitLabel); 34254514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 34264514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 34274514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(exitLabel); 34284514f5e3Sopenharmony_ci} 34294514f5e3Sopenharmony_ci 34304514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQZ_IMM16) 34314514f5e3Sopenharmony_ci{ 34324514f5e3Sopenharmony_ci int16_t offset = READ_INST_16_0(); 34334514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 34344514f5e3Sopenharmony_ci 34354514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 34364514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 34374514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 34384514f5e3Sopenharmony_ci } else { 34394514f5e3Sopenharmony_ci jump = new JumpLabel(); 34404514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 34414514f5e3Sopenharmony_ci } 34424514f5e3Sopenharmony_ci 34434514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 34444514f5e3Sopenharmony_ci JumpLabel exitLabel; 34454514f5e3Sopenharmony_ci GetBaselineAssembler().Jnz(exitLabel); 34464514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 34474514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 34484514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(exitLabel); 34494514f5e3Sopenharmony_ci} 34504514f5e3Sopenharmony_ci 34514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQZ_IMM32) 34524514f5e3Sopenharmony_ci{ 34534514f5e3Sopenharmony_ci int32_t offset = static_cast<int32_t>(READ_INST_32_0()); 34544514f5e3Sopenharmony_ci size_t pos = static_cast<size_t>(offset + static_cast<int32_t>(bytecodeOffset)); 34554514f5e3Sopenharmony_ci 34564514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 34574514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 34584514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 34594514f5e3Sopenharmony_ci } else { 34604514f5e3Sopenharmony_ci jump = new JumpLabel(); 34614514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 34624514f5e3Sopenharmony_ci } 34634514f5e3Sopenharmony_ci 34644514f5e3Sopenharmony_ci JumpLabel exitLabel; 34654514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 34664514f5e3Sopenharmony_ci GetBaselineAssembler().Jnz(exitLabel); 34674514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 34684514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 34694514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(exitLabel); 34704514f5e3Sopenharmony_ci} 34714514f5e3Sopenharmony_ci 34724514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNEZ_IMM8) 34734514f5e3Sopenharmony_ci{ 34744514f5e3Sopenharmony_ci int8_t offset = READ_INST_8_0(); 34754514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 34764514f5e3Sopenharmony_ci 34774514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 34784514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 34794514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 34804514f5e3Sopenharmony_ci } else { 34814514f5e3Sopenharmony_ci jump = new JumpLabel(); 34824514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 34834514f5e3Sopenharmony_ci } 34844514f5e3Sopenharmony_ci 34854514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 34864514f5e3Sopenharmony_ci JumpLabel labelExit; 34874514f5e3Sopenharmony_ci GetBaselineAssembler().Jz(labelExit); 34884514f5e3Sopenharmony_ci 34894514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 34904514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 34914514f5e3Sopenharmony_ci 34924514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(labelExit); 34934514f5e3Sopenharmony_ci} 34944514f5e3Sopenharmony_ci 34954514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNEZ_IMM16) 34964514f5e3Sopenharmony_ci{ 34974514f5e3Sopenharmony_ci int16_t offset = READ_INST_16_0(); 34984514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 34994514f5e3Sopenharmony_ci 35004514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 35014514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 35024514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 35034514f5e3Sopenharmony_ci } else { 35044514f5e3Sopenharmony_ci jump = new JumpLabel(); 35054514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 35064514f5e3Sopenharmony_ci } 35074514f5e3Sopenharmony_ci 35084514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 35094514f5e3Sopenharmony_ci JumpLabel labelExit; 35104514f5e3Sopenharmony_ci GetBaselineAssembler().Jz(labelExit); 35114514f5e3Sopenharmony_ci 35124514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 35134514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 35144514f5e3Sopenharmony_ci 35154514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(labelExit); 35164514f5e3Sopenharmony_ci} 35174514f5e3Sopenharmony_ci 35184514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNEZ_IMM32) 35194514f5e3Sopenharmony_ci{ 35204514f5e3Sopenharmony_ci int32_t offset = static_cast<int32_t>(READ_INST_32_0()); 35214514f5e3Sopenharmony_ci size_t pos = static_cast<size_t>(offset + static_cast<int32_t>(bytecodeOffset)); 35224514f5e3Sopenharmony_ci 35234514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 35244514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 35254514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 35264514f5e3Sopenharmony_ci } else { 35274514f5e3Sopenharmony_ci jump = new JumpLabel(); 35284514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 35294514f5e3Sopenharmony_ci } 35304514f5e3Sopenharmony_ci 35314514f5e3Sopenharmony_ci GetBaselineAssembler().Cmp(SpecialRegister::ACC_REGISTER, Immediate(JSTaggedValue::VALUE_FALSE)); 35324514f5e3Sopenharmony_ci JumpLabel labelExit; 35334514f5e3Sopenharmony_ci GetBaselineAssembler().Jz(labelExit); 35344514f5e3Sopenharmony_ci 35354514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 35364514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 35374514f5e3Sopenharmony_ci 35384514f5e3Sopenharmony_ci GetBaselineAssembler().Bind(labelExit); 35394514f5e3Sopenharmony_ci} 35404514f5e3Sopenharmony_ci 35414514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQ_V8_IMM8) 35424514f5e3Sopenharmony_ci{ 35434514f5e3Sopenharmony_ci (void)bytecodeArray; 35444514f5e3Sopenharmony_ci} 35454514f5e3Sopenharmony_ci 35464514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQ_V8_IMM16) 35474514f5e3Sopenharmony_ci{ 35484514f5e3Sopenharmony_ci (void)bytecodeArray; 35494514f5e3Sopenharmony_ci} 35504514f5e3Sopenharmony_ci 35514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNE_V8_IMM8) 35524514f5e3Sopenharmony_ci{ 35534514f5e3Sopenharmony_ci (void)bytecodeArray; 35544514f5e3Sopenharmony_ci} 35554514f5e3Sopenharmony_ci 35564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNE_V8_IMM16) 35574514f5e3Sopenharmony_ci{ 35584514f5e3Sopenharmony_ci (void)bytecodeArray; 35594514f5e3Sopenharmony_ci} 35604514f5e3Sopenharmony_ci 35614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JMP_IMM8) 35624514f5e3Sopenharmony_ci{ 35634514f5e3Sopenharmony_ci int8_t offset = READ_INST_8_0(); 35644514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 35654514f5e3Sopenharmony_ci 35664514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 35674514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 35684514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 35694514f5e3Sopenharmony_ci } else { 35704514f5e3Sopenharmony_ci jump = new JumpLabel(); 35714514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 35724514f5e3Sopenharmony_ci } 35734514f5e3Sopenharmony_ci 35744514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 35754514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 35764514f5e3Sopenharmony_ci} 35774514f5e3Sopenharmony_ci 35784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JMP_IMM16) 35794514f5e3Sopenharmony_ci{ 35804514f5e3Sopenharmony_ci int16_t offset = READ_INST_16_0(); 35814514f5e3Sopenharmony_ci size_t pos = offset + bytecodeOffset; 35824514f5e3Sopenharmony_ci 35834514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 35844514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 35854514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 35864514f5e3Sopenharmony_ci } else { 35874514f5e3Sopenharmony_ci jump = new JumpLabel(); 35884514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 35894514f5e3Sopenharmony_ci } 35904514f5e3Sopenharmony_ci 35914514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 35924514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 35934514f5e3Sopenharmony_ci} 35944514f5e3Sopenharmony_ci 35954514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JMP_IMM32) 35964514f5e3Sopenharmony_ci{ 35974514f5e3Sopenharmony_ci int32_t offset = static_cast<int32_t>(READ_INST_32_0()); 35984514f5e3Sopenharmony_ci size_t pos = static_cast<size_t>(offset + static_cast<int32_t>(bytecodeOffset)); 35994514f5e3Sopenharmony_ci 36004514f5e3Sopenharmony_ci JumpLabel *jump = nullptr; 36014514f5e3Sopenharmony_ci if (jumpMap.count(pos) != 0) { 36024514f5e3Sopenharmony_ci jump = jumpMap.at(pos); 36034514f5e3Sopenharmony_ci } else { 36044514f5e3Sopenharmony_ci jump = new JumpLabel(); 36054514f5e3Sopenharmony_ci jumpMap.insert({pos, jump}); 36064514f5e3Sopenharmony_ci } 36074514f5e3Sopenharmony_ci 36084514f5e3Sopenharmony_ci CALL_BASELINE_UPDATE_HOTNESS(); 36094514f5e3Sopenharmony_ci GetBaselineAssembler().Jump(*jump); 36104514f5e3Sopenharmony_ci} 36114514f5e3Sopenharmony_ci 36124514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQNULL_IMM8) 36134514f5e3Sopenharmony_ci{ 36144514f5e3Sopenharmony_ci (void)bytecodeArray; 36154514f5e3Sopenharmony_ci} 36164514f5e3Sopenharmony_ci 36174514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQNULL_IMM16) 36184514f5e3Sopenharmony_ci{ 36194514f5e3Sopenharmony_ci (void)bytecodeArray; 36204514f5e3Sopenharmony_ci} 36214514f5e3Sopenharmony_ci 36224514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNENULL_IMM8) 36234514f5e3Sopenharmony_ci{ 36244514f5e3Sopenharmony_ci (void)bytecodeArray; 36254514f5e3Sopenharmony_ci} 36264514f5e3Sopenharmony_ci 36274514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNENULL_IMM16) 36284514f5e3Sopenharmony_ci{ 36294514f5e3Sopenharmony_ci (void)bytecodeArray; 36304514f5e3Sopenharmony_ci} 36314514f5e3Sopenharmony_ci 36324514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQZ_IMM8) 36334514f5e3Sopenharmony_ci{ 36344514f5e3Sopenharmony_ci (void)bytecodeArray; 36354514f5e3Sopenharmony_ci} 36364514f5e3Sopenharmony_ci 36374514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQZ_IMM16) 36384514f5e3Sopenharmony_ci{ 36394514f5e3Sopenharmony_ci (void)bytecodeArray; 36404514f5e3Sopenharmony_ci} 36414514f5e3Sopenharmony_ci 36424514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQZ_IMM8) 36434514f5e3Sopenharmony_ci{ 36444514f5e3Sopenharmony_ci (void)bytecodeArray; 36454514f5e3Sopenharmony_ci} 36464514f5e3Sopenharmony_ci 36474514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQZ_IMM16) 36484514f5e3Sopenharmony_ci{ 36494514f5e3Sopenharmony_ci (void)bytecodeArray; 36504514f5e3Sopenharmony_ci} 36514514f5e3Sopenharmony_ci 36524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQNULL_IMM8) 36534514f5e3Sopenharmony_ci{ 36544514f5e3Sopenharmony_ci (void)bytecodeArray; 36554514f5e3Sopenharmony_ci} 36564514f5e3Sopenharmony_ci 36574514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQNULL_IMM16) 36584514f5e3Sopenharmony_ci{ 36594514f5e3Sopenharmony_ci (void)bytecodeArray; 36604514f5e3Sopenharmony_ci} 36614514f5e3Sopenharmony_ci 36624514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQNULL_IMM8) 36634514f5e3Sopenharmony_ci{ 36644514f5e3Sopenharmony_ci (void)bytecodeArray; 36654514f5e3Sopenharmony_ci} 36664514f5e3Sopenharmony_ci// ------- End parse bytecodes about control flow ------- 36674514f5e3Sopenharmony_ci 36684514f5e3Sopenharmony_ci// ------- parse other bytecodes ------- 36694514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(POPLEXENV) 36704514f5e3Sopenharmony_ci{ 36714514f5e3Sopenharmony_ci (void)bytecodeArray; 36724514f5e3Sopenharmony_ci 36734514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 36744514f5e3Sopenharmony_ci Address builtinAddress = 36754514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselinePoplexenv); 36764514f5e3Sopenharmony_ci LOG_INST() << " BaselinePoplexenv Address: " << std::hex << builtinAddress; 36774514f5e3Sopenharmony_ci 36784514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 36794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 36804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); // state 36814514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 36824514f5e3Sopenharmony_ci} 36834514f5e3Sopenharmony_ci 36844514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CREATEASYNCGENERATOROBJ_V8) 36854514f5e3Sopenharmony_ci{ 36864514f5e3Sopenharmony_ci uint8_t func = READ_INST_8_0(); 36874514f5e3Sopenharmony_ci LOG_INST() << " createasyncgeneratorobj v" << std::dec << func; 36884514f5e3Sopenharmony_ci 36894514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 36904514f5e3Sopenharmony_ci Address builtinAddress = 36914514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCreateasyncgeneratorobjV8); 36924514f5e3Sopenharmony_ci LOG_INST() << " BaselineCreateasyncgeneratorobjV8 Address: " << std::hex << builtinAddress; 36934514f5e3Sopenharmony_ci 36944514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 36954514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 36964514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 36974514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(func)); 36984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 36994514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37004514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 37014514f5e3Sopenharmony_ci} 37024514f5e3Sopenharmony_ci 37034514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DELOBJPROP_V8) 37044514f5e3Sopenharmony_ci{ 37054514f5e3Sopenharmony_ci int8_t object = READ_INST_8_0(); 37064514f5e3Sopenharmony_ci 37074514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37084514f5e3Sopenharmony_ci Address builtinAddress = 37094514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDelobjpropV8); 37104514f5e3Sopenharmony_ci LOG_INST() << " BaselineDelobjpropV8 Address: " << std::hex << builtinAddress; 37114514f5e3Sopenharmony_ci 37124514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 37134514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 37144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 37154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 37164514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(object)); 37174514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37184514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 37194514f5e3Sopenharmony_ci} 37204514f5e3Sopenharmony_ci 37214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SUSPENDGENERATOR_V8) 37224514f5e3Sopenharmony_ci{ 37234514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_0(); 37244514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 37254514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37264514f5e3Sopenharmony_ci Address builtinAddress = 37274514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSuspendgeneratorV8); 37284514f5e3Sopenharmony_ci LOG_INST() << " BaselineSuspendgeneratorV8 Address: " << std::hex << builtinAddress; 37294514f5e3Sopenharmony_ci 37304514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 37314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 37324514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 37334514f5e3Sopenharmony_ci parameters.emplace_back(offset); 37344514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 37354514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37364514f5e3Sopenharmony_ci} 37374514f5e3Sopenharmony_ci 37384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEBUGGER) 37394514f5e3Sopenharmony_ci{ 37404514f5e3Sopenharmony_ci (void)bytecodeArray; 37414514f5e3Sopenharmony_ci 37424514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37434514f5e3Sopenharmony_ci Address builtinAddress = 37444514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDebugger); 37454514f5e3Sopenharmony_ci LOG_INST() << " BaselineDebugger Address: " << std::hex << builtinAddress; 37464514f5e3Sopenharmony_ci 37474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 37484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 37494514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37504514f5e3Sopenharmony_ci} 37514514f5e3Sopenharmony_ci 37524514f5e3Sopenharmony_ci// ------- parse wide bytecodes ------- 37534514f5e3Sopenharmony_ci// GLUE, SP, V0, INDEX, SLOT_ID 37544514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_STOBJBYINDEX_PREF_V8_IMM32) 37554514f5e3Sopenharmony_ci{ 37564514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 37574514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_1(); 37584514f5e3Sopenharmony_ci int32_t index = static_cast<int32_t>(READ_INST_32_2()); 37594514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37604514f5e3Sopenharmony_ci Address builtinAddress = 37614514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideStobjbyindexPrefV8Imm32); 37624514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideStobjbyindexPrefV8Imm32 Address: " << std::hex << builtinAddress; 37634514f5e3Sopenharmony_ci 37644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 37654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 37664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 37674514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 37684514f5e3Sopenharmony_ci parameters.emplace_back(index); 37694514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 37704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37714514f5e3Sopenharmony_ci} 37724514f5e3Sopenharmony_ci 37734514f5e3Sopenharmony_ci// GLUE, SP, ACC, V0, INDEX 37744514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_STOWNBYINDEX_PREF_V8_IMM32) 37754514f5e3Sopenharmony_ci{ 37764514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 37774514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_1(); 37784514f5e3Sopenharmony_ci int32_t index = static_cast<int32_t>(READ_INST_32_2()); 37794514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37804514f5e3Sopenharmony_ci Address builtinAddress = 37814514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideStownbyindexPrefV8Imm32); 37824514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideStownbyindexPrefV8Imm32 Address: " << std::hex << builtinAddress; 37834514f5e3Sopenharmony_ci 37844514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 37854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 37864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 37874514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 37884514f5e3Sopenharmony_ci parameters.emplace_back(index); 37894514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 37904514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 37914514f5e3Sopenharmony_ci} 37924514f5e3Sopenharmony_ci 37934514f5e3Sopenharmony_ci// GLUE, SP, INDEX 37944514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_COPYRESTARGS_PREF_IMM16) 37954514f5e3Sopenharmony_ci{ 37964514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_1(); 37974514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 37984514f5e3Sopenharmony_ci Address builtinAddress = 37994514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideCopyrestargsPrefImm16); 38004514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideCopyrestargsPrefImm16 Address: " << std::hex << builtinAddress; 38014514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 38024514f5e3Sopenharmony_ci 38034514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 38054514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 38064514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 38074514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38084514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 38094514f5e3Sopenharmony_ci} 38104514f5e3Sopenharmony_ci 38114514f5e3Sopenharmony_ci// SP, LEVEL, SLOT 38124514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_LDLEXVAR_PREF_IMM16_IMM16) 38134514f5e3Sopenharmony_ci{ 38144514f5e3Sopenharmony_ci uint16_t level = READ_INST_16_1(); 38154514f5e3Sopenharmony_ci uint16_t slot = READ_INST_16_3(); 38164514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 38174514f5e3Sopenharmony_ci Address builtinAddress = 38184514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideLdlexvarPrefImm16Imm16); 38194514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideLdlexvarPrefImm16Imm16 Address: " << std::hex << builtinAddress; 38204514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 38214514f5e3Sopenharmony_ci LOG_INST() << " slot: " << static_cast<int32_t>(slot); 38224514f5e3Sopenharmony_ci 38234514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 38254514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 38264514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 38274514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38284514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 38294514f5e3Sopenharmony_ci} 38304514f5e3Sopenharmony_ci 38314514f5e3Sopenharmony_ci// GLUE, SP, ACC, LEVEL, SLOT 38324514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_STLEXVAR_PREF_IMM16_IMM16) 38334514f5e3Sopenharmony_ci{ 38344514f5e3Sopenharmony_ci uint16_t level = READ_INST_16_1(); 38354514f5e3Sopenharmony_ci uint16_t slot = READ_INST_16_3(); 38364514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 38374514f5e3Sopenharmony_ci Address builtinAddress = 38384514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideStlexvarPrefImm16Imm16); 38394514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideStlexvarPrefImm16Imm16 Address: " << std::hex << builtinAddress; 38404514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 38414514f5e3Sopenharmony_ci LOG_INST() << " slot: " << static_cast<int32_t>(slot); 38424514f5e3Sopenharmony_ci 38434514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38444514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 38454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 38464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 38474514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 38484514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 38494514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38504514f5e3Sopenharmony_ci} 38514514f5e3Sopenharmony_ci 38524514f5e3Sopenharmony_ci// GLUE, ACC, INDEX 38534514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_GETMODULENAMESPACE_PREF_IMM16) 38544514f5e3Sopenharmony_ci{ 38554514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 38564514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 38574514f5e3Sopenharmony_ci Address builtinAddress = 38584514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideGetmodulenamespacePrefImm16); 38594514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideGetmodulenamespacePrefImm16 Address: " << std::hex << builtinAddress; 38604514f5e3Sopenharmony_ci 38614514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 38634514f5e3Sopenharmony_ci parameters.emplace_back(index); 38644514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38654514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 38664514f5e3Sopenharmony_ci} 38674514f5e3Sopenharmony_ci 38684514f5e3Sopenharmony_ci// GLUE, ACC, INDEX 38694514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_STMODULEVAR_PREF_IMM16) 38704514f5e3Sopenharmony_ci{ 38714514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 38724514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 38734514f5e3Sopenharmony_ci Address builtinAddress = 38744514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideStmodulevarPrefImm16); 38754514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideStmodulevarPrefImm16 Address: " << std::hex << builtinAddress; 38764514f5e3Sopenharmony_ci 38774514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38784514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 38794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 38804514f5e3Sopenharmony_ci parameters.emplace_back(index); 38814514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38824514f5e3Sopenharmony_ci} 38834514f5e3Sopenharmony_ci 38844514f5e3Sopenharmony_ci// GLUE, INDEX 38854514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_LDLOCALMODULEVAR_PREF_IMM16) 38864514f5e3Sopenharmony_ci{ 38874514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 38884514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 38894514f5e3Sopenharmony_ci Address builtinAddress = 38904514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideLdlocalmodulevarPrefImm16); 38914514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideLdlocalmodulevarPrefImm16 Address: " << std::hex << builtinAddress; 38924514f5e3Sopenharmony_ci 38934514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 38944514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 38954514f5e3Sopenharmony_ci parameters.emplace_back(index); 38964514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 38974514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 38984514f5e3Sopenharmony_ci} 38994514f5e3Sopenharmony_ci 39004514f5e3Sopenharmony_ci// GLUE, INDEX 39014514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_LDEXTERNALMODULEVAR_PREF_IMM16) 39024514f5e3Sopenharmony_ci{ 39034514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 39044514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39054514f5e3Sopenharmony_ci Address builtinAddress = 39064514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideLdexternalmodulevarPrefImm16); 39074514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideLdexternalmodulevarPrefImm16 Address: " << std::hex << builtinAddress; 39084514f5e3Sopenharmony_ci 39094514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 39104514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 39114514f5e3Sopenharmony_ci parameters.emplace_back(index); 39124514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 39134514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 39144514f5e3Sopenharmony_ci} 39154514f5e3Sopenharmony_ci 39164514f5e3Sopenharmony_ci// GLUE, SP, INDEX 39174514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_LDPATCHVAR_PREF_IMM16) 39184514f5e3Sopenharmony_ci{ 39194514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 39204514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39214514f5e3Sopenharmony_ci Address builtinAddress = 39224514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideLdpatchvarPrefImm16); 39234514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideLdpatchvarPrefImm16 Address: " << std::hex << builtinAddress; 39244514f5e3Sopenharmony_ci 39254514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 39264514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 39274514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 39284514f5e3Sopenharmony_ci parameters.emplace_back(index); 39294514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 39304514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 39314514f5e3Sopenharmony_ci} 39324514f5e3Sopenharmony_ci 39334514f5e3Sopenharmony_ci// GLUE, ACC, INDEX 39344514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_STPATCHVAR_PREF_IMM16) 39354514f5e3Sopenharmony_ci{ 39364514f5e3Sopenharmony_ci int16_t index = READ_INST_16_1(); 39374514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39384514f5e3Sopenharmony_ci Address builtinAddress = 39394514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideStpatchvarPrefImm16); 39404514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideStpatchvarPrefImm16 Address: " << std::hex << builtinAddress; 39414514f5e3Sopenharmony_ci 39424514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 39434514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 39444514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 39454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 39464514f5e3Sopenharmony_ci parameters.emplace_back(index); 39474514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 39484514f5e3Sopenharmony_ci} 39494514f5e3Sopenharmony_ci 39504514f5e3Sopenharmony_ci// GLUE, ACC, INDEX 39514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_LDOBJBYINDEX_PREF_IMM32) 39524514f5e3Sopenharmony_ci{ 39534514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 39544514f5e3Sopenharmony_ci int32_t index = static_cast<int32_t>(READ_INST_32_1()); 39554514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39564514f5e3Sopenharmony_ci Address builtinAddress = 39574514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideLdobjbyindexPrefImm32); 39584514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideLdobjbyindexPrefImm32 Address: " << std::hex << builtinAddress; 39594514f5e3Sopenharmony_ci 39604514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 39614514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 39624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 39634514f5e3Sopenharmony_ci parameters.emplace_back(index); 39644514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 39654514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 39664514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 39674514f5e3Sopenharmony_ci} 39684514f5e3Sopenharmony_ci 39694514f5e3Sopenharmony_ci// GLUE, ACC, RANGE, V0_I8 39704514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_SUPERCALLARROWRANGE_PREF_IMM16_V8) 39714514f5e3Sopenharmony_ci{ 39724514f5e3Sopenharmony_ci int16_t range = READ_INST_16_1(); 39734514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_3(); 39744514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39754514f5e3Sopenharmony_ci Address builtinAddress = 39764514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideSupercallarrowrangePrefImm16V8); 39774514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideSupercallarrowrangePrefImm16V8 Address: " << std::hex << builtinAddress; 39784514f5e3Sopenharmony_ci LOG_INST() << " range: " << range; 39794514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int16_t>(v0); 39804514f5e3Sopenharmony_ci 39814514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 39824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 39834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 39844514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 39854514f5e3Sopenharmony_ci parameters.emplace_back(range); 39864514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(v0)); 39874514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 39884514f5e3Sopenharmony_ci} 39894514f5e3Sopenharmony_ci 39904514f5e3Sopenharmony_ci// GLUE, SP, RANGE, V0_I8 39914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_SUPERCALLTHISRANGE_PREF_IMM16_V8) 39924514f5e3Sopenharmony_ci{ 39934514f5e3Sopenharmony_ci int16_t range = READ_INST_16_1(); 39944514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_3(); 39954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 39964514f5e3Sopenharmony_ci Address builtinAddress = 39974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideSupercallthisrangePrefImm16V8); 39984514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideSupercallthisrangePrefImm16V8 Address: " << std::hex << builtinAddress; 39994514f5e3Sopenharmony_ci LOG_INST() << " range: " << range; 40004514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int16_t>(v0); 40014514f5e3Sopenharmony_ci 40024514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 40034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 40044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 40054514f5e3Sopenharmony_ci parameters.emplace_back(range); 40064514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(v0)); 40074514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 40084514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 40094514f5e3Sopenharmony_ci} 40104514f5e3Sopenharmony_ci 40114514f5e3Sopenharmony_ci// GLUE, SP, ACC, ACTUAL_NUM_ARGS, VREG_ID, HOTNESS_COUNTER 40124514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_CALLTHISRANGE_PREF_IMM16_V8) 40134514f5e3Sopenharmony_ci{ 40144514f5e3Sopenharmony_ci uint16_t actualNumArgs = READ_INST_16_1(); 40154514f5e3Sopenharmony_ci int8_t vregId = READ_INST_8_3(); 40164514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 40174514f5e3Sopenharmony_ci Address builtinAddress = 40184514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideCallthisrangePrefImm16V8); 40194514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideCallthisrangePrefImm16V8 Address: " << std::hex << builtinAddress; 40204514f5e3Sopenharmony_ci LOG_INST() << " actualNumArgs: " << static_cast<int32_t>(actualNumArgs); 40214514f5e3Sopenharmony_ci 40224514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 40234514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 40244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 40254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 40264514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(actualNumArgs)); 40274514f5e3Sopenharmony_ci parameters.emplace_back(vregId); 40284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 40294514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 40304514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 40314514f5e3Sopenharmony_ci} 40324514f5e3Sopenharmony_ci 40334514f5e3Sopenharmony_ci// GLUE, SP, ACC, ACTUAL_NUM_ARGS, VREG_ID, HOTNESS_COUNTER 40344514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_CALLRANGE_PREF_IMM16_V8) 40354514f5e3Sopenharmony_ci{ 40364514f5e3Sopenharmony_ci uint16_t actualNumArgs = READ_INST_16_1(); 40374514f5e3Sopenharmony_ci int8_t vregId = READ_INST_8_2(); 40384514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 40394514f5e3Sopenharmony_ci Address builtinAddress = 40404514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideCallrangePrefImm16V8); 40414514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideCallrangePrefImm16V8 Address: " << std::hex << builtinAddress; 40424514f5e3Sopenharmony_ci LOG_INST() << " actualNumArgs: " << static_cast<int32_t>(actualNumArgs); 40434514f5e3Sopenharmony_ci 40444514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 40454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 40464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 40474514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 40484514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(actualNumArgs)); 40494514f5e3Sopenharmony_ci parameters.emplace_back(vregId); 40504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 40514514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 40524514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 40534514f5e3Sopenharmony_ci} 40544514f5e3Sopenharmony_ci 40554514f5e3Sopenharmony_ci// GLUE, SP, ACC, NUM_VARS, SCOPE_ID 40564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_NEWLEXENVWITHNAME_PREF_IMM16_ID16) 40574514f5e3Sopenharmony_ci{ 40584514f5e3Sopenharmony_ci int16_t numVars = READ_INST_16_1(); 40594514f5e3Sopenharmony_ci int16_t scopeId = READ_INST_16_3(); 40604514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 40614514f5e3Sopenharmony_ci Address builtinAddress = 40624514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideNewlexenvwithnamePrefImm16Id16); 40634514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideNewlexenvwithnamePrefImm16Id16 Address: " << std::hex << builtinAddress; 40644514f5e3Sopenharmony_ci LOG_INST() << " numVars: " << numVars; 40654514f5e3Sopenharmony_ci LOG_INST() << " scopeId: " << scopeId; 40664514f5e3Sopenharmony_ci 40674514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 40684514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 40694514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 40704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 40714514f5e3Sopenharmony_ci parameters.emplace_back(numVars); 40724514f5e3Sopenharmony_ci parameters.emplace_back(scopeId); 40734514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 40744514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 40754514f5e3Sopenharmony_ci} 40764514f5e3Sopenharmony_ci 40774514f5e3Sopenharmony_ci// GLUE, SP, ACC, NUM_VARS 40784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_NEWLEXENV_PREF_IMM16) 40794514f5e3Sopenharmony_ci{ 40804514f5e3Sopenharmony_ci uint16_t numVars = READ_INST_16_1(); 40814514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 40824514f5e3Sopenharmony_ci Address builtinAddress = 40834514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideNewlexenvPrefImm16); 40844514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideNewlexenvPrefImm16 Address: " << std::hex << builtinAddress; 40854514f5e3Sopenharmony_ci LOG_INST() << " numVars: " << static_cast<int32_t>(numVars); 40864514f5e3Sopenharmony_ci 40874514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 40884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 40894514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 40904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 40914514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(numVars)); 40924514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 40934514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 40944514f5e3Sopenharmony_ci} 40954514f5e3Sopenharmony_ci 40964514f5e3Sopenharmony_ci// GLUE, SP, NUM_ARGS, IDX, HOTNESS_COUNTER, SLOT_ID 40974514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_NEWOBJRANGE_PREF_IMM16_V8) 40984514f5e3Sopenharmony_ci{ 40994514f5e3Sopenharmony_ci uint16_t slotId = READ_INST_16_0(); 41004514f5e3Sopenharmony_ci int16_t numArgs = READ_INST_16_1(); 41014514f5e3Sopenharmony_ci uint8_t firstArgRegIdx = READ_INST_8_3(); 41024514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41034514f5e3Sopenharmony_ci Address builtinAddress = 41044514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideNewobjrangePrefImm16V8); 41054514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideNewobjrangePrefImm16V8 Address: " << std::hex << builtinAddress; 41064514f5e3Sopenharmony_ci LOG_INST() << " numArgs: " << numArgs; 41074514f5e3Sopenharmony_ci LOG_INST() << " firstArgRegIdx: " << static_cast<int16_t>(firstArgRegIdx); 41084514f5e3Sopenharmony_ci 41094514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 41104514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 41114514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 41124514f5e3Sopenharmony_ci parameters.emplace_back(numArgs); 41134514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(firstArgRegIdx)); 41144514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 41154514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 41164514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 41174514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 41184514f5e3Sopenharmony_ci} 41194514f5e3Sopenharmony_ci 41204514f5e3Sopenharmony_ci// GLUE, SP, V0, V1, V2 41214514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(WIDE_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8) 41224514f5e3Sopenharmony_ci{ 41234514f5e3Sopenharmony_ci int16_t numKeys = READ_INST_16_1(); 41244514f5e3Sopenharmony_ci int8_t objId = READ_INST_8_3(); 41254514f5e3Sopenharmony_ci uint8_t firstArgRegIdx = READ_INST_8_4(); 41264514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41274514f5e3Sopenharmony_ci Address builtinAddress = 41284514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineWideCreateobjectwithexcludedkeysPrefImm16V8V8); 41294514f5e3Sopenharmony_ci LOG_INST() << " BaselineWideCreateobjectwithexcludedkeysPrefImm16V8V8 Address: " << std::hex << builtinAddress; 41304514f5e3Sopenharmony_ci LOG_INST() << " numKeys: " << numKeys; 41314514f5e3Sopenharmony_ci LOG_INST() << " objId: " << static_cast<int16_t>(objId); 41324514f5e3Sopenharmony_ci LOG_INST() << " firstArgRegIdx: " << static_cast<int16_t>(firstArgRegIdx); 41334514f5e3Sopenharmony_ci 41344514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 41354514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 41364514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 41374514f5e3Sopenharmony_ci parameters.emplace_back(numKeys); 41384514f5e3Sopenharmony_ci parameters.emplace_back(objId); 41394514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int16_t>(firstArgRegIdx)); 41404514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 41414514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 41424514f5e3Sopenharmony_ci} 41434514f5e3Sopenharmony_ci 41444514f5e3Sopenharmony_ci// ------- End parse wide bytecodes ------- 41454514f5e3Sopenharmony_ci 41464514f5e3Sopenharmony_ci// ------- parse throw bytecodes ------- 41474514f5e3Sopenharmony_ci 41484514f5e3Sopenharmony_ci// GLUE, SP 41494514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_PATTERNNONCOERCIBLE_PREF_NONE) 41504514f5e3Sopenharmony_ci{ 41514514f5e3Sopenharmony_ci (void)bytecodeArray; 41524514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41534514f5e3Sopenharmony_ci Address builtinAddress = 41544514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowPatternnoncoerciblePrefNone); 41554514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowPatternnoncoerciblePrefNone Address: " << std::hex << builtinAddress; 41564514f5e3Sopenharmony_ci 41574514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 41584514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 41594514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 41604514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 41614514f5e3Sopenharmony_ci} 41624514f5e3Sopenharmony_ci 41634514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_NOTEXISTS_PREF_NONE) 41644514f5e3Sopenharmony_ci{ 41654514f5e3Sopenharmony_ci (void)bytecodeArray; 41664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41674514f5e3Sopenharmony_ci Address builtinAddress = 41684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowNotexistsPrefNone); 41694514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowNotexistsPrefNone Address: " << std::hex << builtinAddress; 41704514f5e3Sopenharmony_ci 41714514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 41724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 41734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 41744514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 41754514f5e3Sopenharmony_ci} 41764514f5e3Sopenharmony_ci 41774514f5e3Sopenharmony_ci// GLUE, SP 41784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_DELETESUPERPROPERTY_PREF_NONE) 41794514f5e3Sopenharmony_ci{ 41804514f5e3Sopenharmony_ci (void)bytecodeArray; 41814514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41824514f5e3Sopenharmony_ci Address builtinAddress = 41834514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowDeletesuperpropertyPrefNone); 41844514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowDeletesuperpropertyPrefNone Address: " << std::hex << builtinAddress; 41854514f5e3Sopenharmony_ci 41864514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 41874514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 41884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 41894514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 41904514f5e3Sopenharmony_ci} 41914514f5e3Sopenharmony_ci 41924514f5e3Sopenharmony_ci// GLUE, ACC, IMM 41934514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_IFSUPERNOTCORRECTCALL_PREF_IMM16) 41944514f5e3Sopenharmony_ci{ 41954514f5e3Sopenharmony_ci int16_t imm = READ_INST_16_1(); 41964514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 41974514f5e3Sopenharmony_ci Address builtinAddress = 41984514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowIfsupernotcorrectcallPrefImm16); 41994514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowIfsupernotcorrectcallPrefImm16 Address: " << std::hex << builtinAddress; 42004514f5e3Sopenharmony_ci 42014514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 42054514f5e3Sopenharmony_ci parameters.emplace_back(imm); 42064514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42074514f5e3Sopenharmony_ci} 42084514f5e3Sopenharmony_ci 42094514f5e3Sopenharmony_ci// GLUE, ACC, IMM 42104514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_IFSUPERNOTCORRECTCALL_PREF_IMM8) 42114514f5e3Sopenharmony_ci{ 42124514f5e3Sopenharmony_ci int8_t imm = READ_INST_8_1(); 42134514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42144514f5e3Sopenharmony_ci Address builtinAddress = 42154514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowIfsupernotcorrectcallPrefImm8); 42164514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowIfsupernotcorrectcallPrefImm8 Address: " << std::hex << builtinAddress; 42174514f5e3Sopenharmony_ci 42184514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42194514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42214514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 42224514f5e3Sopenharmony_ci parameters.emplace_back(imm); 42234514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42244514f5e3Sopenharmony_ci} 42254514f5e3Sopenharmony_ci 42264514f5e3Sopenharmony_ci// GLUE, ACC, SP, STRING_ID 42274514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_UNDEFINEDIFHOLEWITHNAME_PREF_ID16) 42284514f5e3Sopenharmony_ci{ 42294514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 42304514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42314514f5e3Sopenharmony_ci Address builtinAddress = 42324514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowUndefinedifholewithnamePrefId16); 42334514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowUndefinedifholewithnamePrefId16 Address: " << std::hex << builtinAddress; 42344514f5e3Sopenharmony_ci 42354514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42364514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42374514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42384514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 42394514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42404514f5e3Sopenharmony_ci} 42414514f5e3Sopenharmony_ci 42424514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 42434514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_UNDEFINEDIFHOLE_PREF_V8_V8) 42444514f5e3Sopenharmony_ci{ 42454514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 42464514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 42474514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42484514f5e3Sopenharmony_ci Address builtinAddress = 42494514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowUndefinedifholePrefV8V8); 42504514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowUndefinedifholePrefV8V8 Address: " << std::hex << builtinAddress; 42514514f5e3Sopenharmony_ci 42524514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42534514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42554514f5e3Sopenharmony_ci parameters.emplace_back(v0); 42564514f5e3Sopenharmony_ci parameters.emplace_back(v1); 42574514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42584514f5e3Sopenharmony_ci} 42594514f5e3Sopenharmony_ci 42604514f5e3Sopenharmony_ci// GLUE, SP, V0 42614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_IFNOTOBJECT_PREF_V8) 42624514f5e3Sopenharmony_ci{ 42634514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 42644514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42654514f5e3Sopenharmony_ci Address builtinAddress = 42664514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowIfnotobjectPrefV8); 42674514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowIfnotobjectPrefV8 Address: " << std::hex << builtinAddress; 42684514f5e3Sopenharmony_ci 42694514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42724514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(v0)); 42734514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42744514f5e3Sopenharmony_ci} 42754514f5e3Sopenharmony_ci 42764514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_CONSTASSIGNMENT_PREF_V8) 42774514f5e3Sopenharmony_ci{ 42784514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 42794514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42804514f5e3Sopenharmony_ci Address builtinAddress = 42814514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowConstassignmentPrefV8); 42824514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowConstassignmentPrefV8 Address: " << std::hex << builtinAddress; 42834514f5e3Sopenharmony_ci 42844514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 42854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 42864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 42874514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(v0)); 42884514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 42894514f5e3Sopenharmony_ci} 42904514f5e3Sopenharmony_ci 42914514f5e3Sopenharmony_ci// GLUE, SP, ACC 42924514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(THROW_PREF_NONE) 42934514f5e3Sopenharmony_ci{ 42944514f5e3Sopenharmony_ci (void)bytecodeArray; 42954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 42964514f5e3Sopenharmony_ci Address builtinAddress = 42974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineThrowPrefNone); 42984514f5e3Sopenharmony_ci LOG_INST() << " BaselineThrowPrefNone Address: " << std::hex << builtinAddress; 42994514f5e3Sopenharmony_ci 43004514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 43014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 43024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 43034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 43044514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 43054514f5e3Sopenharmony_ci} 43064514f5e3Sopenharmony_ci 43074514f5e3Sopenharmony_ci// ------- End parse throw bytecodes ------- 43084514f5e3Sopenharmony_ci 43094514f5e3Sopenharmony_ci// ------- parse SET/GET bytecodes ------- 43104514f5e3Sopenharmony_ci 43114514f5e3Sopenharmony_ci// GLUE, SP, ACC, INDEX0, INDEX1, ENV 43124514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(TESTIN_IMM8_IMM16_IMM16) 43134514f5e3Sopenharmony_ci{ 43144514f5e3Sopenharmony_ci uint16_t levelIndex = READ_INST_16_1(); 43154514f5e3Sopenharmony_ci uint16_t slotIndex = READ_INST_16_3(); 43164514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 43174514f5e3Sopenharmony_ci Address builtinAddress = 43184514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineTestInImm8Imm16Imm16); 43194514f5e3Sopenharmony_ci LOG_INST() << " BaselineTestInImm8Imm16Imm16 Address: " << std::hex << builtinAddress; 43204514f5e3Sopenharmony_ci LOG_INST() << " levelIndex: " << static_cast<int32_t>(levelIndex); 43214514f5e3Sopenharmony_ci LOG_INST() << " slotIndex: " << static_cast<int32_t>(slotIndex); 43224514f5e3Sopenharmony_ci 43234514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 43244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 43254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 43264514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 43274514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(levelIndex)); 43284514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotIndex)); 43294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ENV); 43304514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 43314514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 43324514f5e3Sopenharmony_ci} 43334514f5e3Sopenharmony_ci 43344514f5e3Sopenharmony_ci// GLUE, SP, INDEX0, INDEX1, INDEX2 43354514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(STPRIVATEPROPERTY_IMM8_IMM16_IMM16_V8) 43364514f5e3Sopenharmony_ci{ 43374514f5e3Sopenharmony_ci uint16_t levelIndex = READ_INST_16_1(); 43384514f5e3Sopenharmony_ci uint16_t slotIndex = READ_INST_16_3(); 43394514f5e3Sopenharmony_ci int8_t objId = READ_INST_8_5(); 43404514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 43414514f5e3Sopenharmony_ci Address builtinAddress = 43424514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineStPrivatePropertyImm8Imm16Imm16V8); 43434514f5e3Sopenharmony_ci LOG_INST() << " BaselineStPrivatePropertyImm8Imm16Imm16V8 Address: " << std::hex << builtinAddress; 43444514f5e3Sopenharmony_ci LOG_INST() << " levelIndex: " << static_cast<int32_t>(levelIndex); 43454514f5e3Sopenharmony_ci LOG_INST() << " slotIndex: " << static_cast<int32_t>(slotIndex); 43464514f5e3Sopenharmony_ci 43474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 43484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 43494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 43504514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(levelIndex)); 43514514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotIndex)); 43524514f5e3Sopenharmony_ci parameters.emplace_back(objId); 43534514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 43544514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 43554514f5e3Sopenharmony_ci} 43564514f5e3Sopenharmony_ci 43574514f5e3Sopenharmony_ci// GLUE, ACC, INDEX0, INDEX1, ENV 43584514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(LDPRIVATEPROPERTY_IMM8_IMM16_IMM16) 43594514f5e3Sopenharmony_ci{ 43604514f5e3Sopenharmony_ci uint16_t levelIndex = READ_INST_16_1(); 43614514f5e3Sopenharmony_ci uint16_t slotIndex = READ_INST_16_3(); 43624514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 43634514f5e3Sopenharmony_ci Address builtinAddress = 43644514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineLdPrivatePropertyImm8Imm16Imm16); 43654514f5e3Sopenharmony_ci LOG_INST() << " BaselineLdPrivatePropertyImm8Imm16Imm16 Address: " << std::hex << builtinAddress; 43664514f5e3Sopenharmony_ci LOG_INST() << " levelIndex: " << static_cast<int32_t>(levelIndex); 43674514f5e3Sopenharmony_ci LOG_INST() << " slotIndex: " << static_cast<int32_t>(slotIndex); 43684514f5e3Sopenharmony_ci 43694514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 43704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 43714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 43724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 43734514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(levelIndex)); 43744514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotIndex)); 43754514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ENV); 43764514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 43774514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 43784514f5e3Sopenharmony_ci} 43794514f5e3Sopenharmony_ci 43804514f5e3Sopenharmony_ci// GLUE, SP, ACC 43814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(GETASYNCITERATOR_IMM8) 43824514f5e3Sopenharmony_ci{ 43834514f5e3Sopenharmony_ci (void)bytecodeArray; 43844514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 43854514f5e3Sopenharmony_ci Address builtinAddress = 43864514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineGetasynciteratorImm8); 43874514f5e3Sopenharmony_ci LOG_INST() << " BaselineGetasynciteratorImm8 Address: " << std::hex << builtinAddress; 43884514f5e3Sopenharmony_ci 43894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 43904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 43914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 43924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 43934514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 43944514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 43954514f5e3Sopenharmony_ci} 43964514f5e3Sopenharmony_ci 43974514f5e3Sopenharmony_ci// GLUE, ACC, INDEX 43984514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(SETGENERATORSTATE_IMM8) 43994514f5e3Sopenharmony_ci{ 44004514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_0(); 44014514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 44024514f5e3Sopenharmony_ci Address builtinAddress = 44034514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineSetgeneratorstateImm8); 44044514f5e3Sopenharmony_ci LOG_INST() << " BaselineSetgeneratorstateImm8 Address: " << std::hex << builtinAddress; 44054514f5e3Sopenharmony_ci LOG_INST() << " v0: " << static_cast<int32_t>(v0); 44064514f5e3Sopenharmony_ci 44074514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 44084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 44094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 44104514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 44114514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 44124514f5e3Sopenharmony_ci} 44134514f5e3Sopenharmony_ci 44144514f5e3Sopenharmony_ci// ------- End parse SET/GET bytecodes ------- 44154514f5e3Sopenharmony_ci 44164514f5e3Sopenharmony_ci// ------- parse JUMP bytecodes ------- 44174514f5e3Sopenharmony_ci 44184514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQNULL_IMM16) 44194514f5e3Sopenharmony_ci{ 44204514f5e3Sopenharmony_ci (void)bytecodeArray; 44214514f5e3Sopenharmony_ci} 44224514f5e3Sopenharmony_ci 44234514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQUNDEFINED_IMM8) 44244514f5e3Sopenharmony_ci{ 44254514f5e3Sopenharmony_ci (void)bytecodeArray; 44264514f5e3Sopenharmony_ci} 44274514f5e3Sopenharmony_ci 44284514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JEQUNDEFINED_IMM16) 44294514f5e3Sopenharmony_ci{ 44304514f5e3Sopenharmony_ci (void)bytecodeArray; 44314514f5e3Sopenharmony_ci} 44324514f5e3Sopenharmony_ci 44334514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNEUNDEFINED_IMM8) 44344514f5e3Sopenharmony_ci{ 44354514f5e3Sopenharmony_ci (void)bytecodeArray; 44364514f5e3Sopenharmony_ci} 44374514f5e3Sopenharmony_ci 44384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNEUNDEFINED_IMM16) 44394514f5e3Sopenharmony_ci{ 44404514f5e3Sopenharmony_ci (void)bytecodeArray; 44414514f5e3Sopenharmony_ci} 44424514f5e3Sopenharmony_ci 44434514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQUNDEFINED_IMM8) 44444514f5e3Sopenharmony_ci{ 44454514f5e3Sopenharmony_ci (void)bytecodeArray; 44464514f5e3Sopenharmony_ci} 44474514f5e3Sopenharmony_ci 44484514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQUNDEFINED_IMM16) 44494514f5e3Sopenharmony_ci{ 44504514f5e3Sopenharmony_ci (void)bytecodeArray; 44514514f5e3Sopenharmony_ci} 44524514f5e3Sopenharmony_ci 44534514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQUNDEFINED_IMM8) 44544514f5e3Sopenharmony_ci{ 44554514f5e3Sopenharmony_ci (void)bytecodeArray; 44564514f5e3Sopenharmony_ci} 44574514f5e3Sopenharmony_ci 44584514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQUNDEFINED_IMM16) 44594514f5e3Sopenharmony_ci{ 44604514f5e3Sopenharmony_ci (void)bytecodeArray; 44614514f5e3Sopenharmony_ci} 44624514f5e3Sopenharmony_ci 44634514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQ_V8_IMM8) 44644514f5e3Sopenharmony_ci{ 44654514f5e3Sopenharmony_ci (void)bytecodeArray; 44664514f5e3Sopenharmony_ci} 44674514f5e3Sopenharmony_ci 44684514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JSTRICTEQ_V8_IMM16) 44694514f5e3Sopenharmony_ci{ 44704514f5e3Sopenharmony_ci (void)bytecodeArray; 44714514f5e3Sopenharmony_ci} 44724514f5e3Sopenharmony_ci 44734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQ_V8_IMM8) 44744514f5e3Sopenharmony_ci{ 44754514f5e3Sopenharmony_ci (void)bytecodeArray; 44764514f5e3Sopenharmony_ci} 44774514f5e3Sopenharmony_ci 44784514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(JNSTRICTEQ_V8_IMM16) 44794514f5e3Sopenharmony_ci{ 44804514f5e3Sopenharmony_ci (void)bytecodeArray; 44814514f5e3Sopenharmony_ci} 44824514f5e3Sopenharmony_ci 44834514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(NOP) 44844514f5e3Sopenharmony_ci{ 44854514f5e3Sopenharmony_ci (void)bytecodeArray; 44864514f5e3Sopenharmony_ci} 44874514f5e3Sopenharmony_ci 44884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(ASYNCGENERATORREJECT_V8) 44894514f5e3Sopenharmony_ci{ 44904514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_0(); 44914514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 44924514f5e3Sopenharmony_ci Address builtinAddress = 44934514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineAsyncgeneratorrejectV8); 44944514f5e3Sopenharmony_ci LOG_INST() << " BaselineAsyncgeneratorrejectV8 Address: " << std::hex << builtinAddress; 44954514f5e3Sopenharmony_ci 44964514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 44974514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 44984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 44994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 45004514f5e3Sopenharmony_ci parameters.emplace_back(v0); 45014514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 45024514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 45034514f5e3Sopenharmony_ci} 45044514f5e3Sopenharmony_ci 45054514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(MOV_V16_V16) 45064514f5e3Sopenharmony_ci{ 45074514f5e3Sopenharmony_ci uint16_t vdst = READ_INST_16_0(); 45084514f5e3Sopenharmony_ci uint16_t vsrc = READ_INST_16_2(); 45094514f5e3Sopenharmony_ci LOG_INST() << "mov v" << static_cast<VRegIDType>(vdst) << ", v" << static_cast<VRegIDType>(vsrc); 45104514f5e3Sopenharmony_ci GetBaselineAssembler().Move(VirtualRegister(static_cast<VRegIDType>(vdst)), 45114514f5e3Sopenharmony_ci VirtualRegister(static_cast<VRegIDType>(vsrc))); 45124514f5e3Sopenharmony_ci} 45134514f5e3Sopenharmony_ci 45144514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(MOV_V8_V8) 45154514f5e3Sopenharmony_ci{ 45164514f5e3Sopenharmony_ci uint8_t vdst = READ_INST_8_0(); 45174514f5e3Sopenharmony_ci uint8_t vsrc = READ_INST_8_1(); 45184514f5e3Sopenharmony_ci LOG_INST() << "mov v" << static_cast<VRegIDType>(vdst) << ", v" << static_cast<VRegIDType>(vsrc); 45194514f5e3Sopenharmony_ci GetBaselineAssembler().Move(VirtualRegister(static_cast<VRegIDType>(vdst)), 45204514f5e3Sopenharmony_ci VirtualRegister(static_cast<VRegIDType>(vsrc))); 45214514f5e3Sopenharmony_ci} 45224514f5e3Sopenharmony_ci 45234514f5e3Sopenharmony_ci// GLUE, SP, VDST, VSRC 45244514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(MOV_V4_V4) 45254514f5e3Sopenharmony_ci{ 45264514f5e3Sopenharmony_ci uint8_t vdst = READ_INST_4_0(); 45274514f5e3Sopenharmony_ci uint8_t vsrc = READ_INST_4_1(); 45284514f5e3Sopenharmony_ci LOG_INST() << "mov v" << static_cast<VRegIDType>(vdst) << ", v" << static_cast<VRegIDType>(vsrc); 45294514f5e3Sopenharmony_ci GetBaselineAssembler().Move(VirtualRegister(static_cast<VRegIDType>(vdst)), 45304514f5e3Sopenharmony_ci VirtualRegister(static_cast<VRegIDType>(vsrc))); 45314514f5e3Sopenharmony_ci} 45324514f5e3Sopenharmony_ci 45334514f5e3Sopenharmony_ci// ------- End parse JUMP bytecodes ------- 45344514f5e3Sopenharmony_ci 45354514f5e3Sopenharmony_ci// ------- parse deprecated bytecodes ------- 45364514f5e3Sopenharmony_ci 45374514f5e3Sopenharmony_ci// GLUE, SP, ACC, PROFILE_TYPE_INFO, HOTNESS_COUNTER, V0, V1 45384514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_SUSPENDGENERATOR_PREF_V8_V8) 45394514f5e3Sopenharmony_ci{ 45404514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 45414514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 45424514f5e3Sopenharmony_ci auto offset = static_cast<int32_t>(bytecodeArray - firstPC); 45434514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 45444514f5e3Sopenharmony_ci Address builtinAddress = 45454514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedSuspendgeneratorPrefV8V8); 45464514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedSuspendgeneratorPrefV8V8 Address: " << std::hex << builtinAddress; 45474514f5e3Sopenharmony_ci 45484514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 45494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 45504514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 45514514f5e3Sopenharmony_ci parameters.emplace_back(offset); 45524514f5e3Sopenharmony_ci parameters.emplace_back(v0); 45534514f5e3Sopenharmony_ci parameters.emplace_back(v1); 45544514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 45554514f5e3Sopenharmony_ci} 45564514f5e3Sopenharmony_ci 45574514f5e3Sopenharmony_ci// ACC, SP 45584514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDLEXENV_PREF_NONE) 45594514f5e3Sopenharmony_ci{ 45604514f5e3Sopenharmony_ci (void)bytecodeArray; 45614514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 45624514f5e3Sopenharmony_ci Address builtinAddress = 45634514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdlexenvPrefNone); 45644514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdlexenvPrefNone Address: " << std::hex << builtinAddress; 45654514f5e3Sopenharmony_ci 45664514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 45674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 45684514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 45694514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 45704514f5e3Sopenharmony_ci} 45714514f5e3Sopenharmony_ci 45724514f5e3Sopenharmony_ci// GLUE, SP 45734514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_POPLEXENV_PREF_NONE) 45744514f5e3Sopenharmony_ci{ 45754514f5e3Sopenharmony_ci (void)bytecodeArray; 45764514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 45774514f5e3Sopenharmony_ci Address builtinAddress = 45784514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedPoplexenvPrefNone); 45794514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedPoplexenvPrefNone Address: " << std::hex << builtinAddress; 45804514f5e3Sopenharmony_ci 45814514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 45824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 45834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 45844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 45854514f5e3Sopenharmony_ci} 45864514f5e3Sopenharmony_ci 45874514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 45884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_GETITERATORNEXT_PREF_V8_V8) 45894514f5e3Sopenharmony_ci{ 45904514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 45914514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 45924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 45934514f5e3Sopenharmony_ci Address builtinAddress = 45944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedGetiteratornextPrefV8V8); 45954514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedGetiteratornextPrefV8V8 Address: " << std::hex << builtinAddress; 45964514f5e3Sopenharmony_ci 45974514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 45984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 45994514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46004514f5e3Sopenharmony_ci parameters.emplace_back(v0); 46014514f5e3Sopenharmony_ci parameters.emplace_back(v1); 46024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46044514f5e3Sopenharmony_ci} 46054514f5e3Sopenharmony_ci 46064514f5e3Sopenharmony_ci// GLUE, IMM_I16, FUNC, SLOT_ID_I8, PROFILE_TYPE_INFO, PC 46074514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CREATEARRAYWITHBUFFER_PREF_IMM16) 46084514f5e3Sopenharmony_ci{ 46094514f5e3Sopenharmony_ci int16_t immI16 = READ_INST_16_1(); 46104514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 46114514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 46124514f5e3Sopenharmony_ci Address builtinAddress = 46134514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCreatearraywithbufferPrefImm16); 46144514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCreatearraywithbufferPrefImm16 Address: " << std::hex << builtinAddress; 46154514f5e3Sopenharmony_ci LOG_INST() << " immI16: " << immI16; 46164514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 46174514f5e3Sopenharmony_ci 46184514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 46194514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 46204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46214514f5e3Sopenharmony_ci parameters.emplace_back(immI16); 46224514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 46234514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::PROFILE_TYPE_INFO); 46244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::PC); 46254514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46264514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46274514f5e3Sopenharmony_ci} 46284514f5e3Sopenharmony_ci 46294514f5e3Sopenharmony_ci// GLUE, IMM_I16, SP, FUNC 46304514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CREATEOBJECTWITHBUFFER_PREF_IMM16) 46314514f5e3Sopenharmony_ci{ 46324514f5e3Sopenharmony_ci int16_t immI16 = READ_INST_16_1(); 46334514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 46344514f5e3Sopenharmony_ci Address builtinAddress = 46354514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCreateobjectwithbufferPrefImm16); 46364514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCreateobjectwithbufferPrefImm16 Address: " << std::hex << builtinAddress; 46374514f5e3Sopenharmony_ci 46384514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 46394514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 46404514f5e3Sopenharmony_ci parameters.emplace_back(immI16); 46414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46424514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46434514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46444514f5e3Sopenharmony_ci} 46454514f5e3Sopenharmony_ci 46464514f5e3Sopenharmony_ci// GLUE, SP, V0 46474514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_TONUMBER_PREF_V8) 46484514f5e3Sopenharmony_ci{ 46494514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 46504514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 46514514f5e3Sopenharmony_ci Address builtinAddress = 46524514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedTonumberPrefV8); 46534514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedTonumberPrefV8 Address: " << std::hex << builtinAddress; 46544514f5e3Sopenharmony_ci 46554514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 46564514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 46574514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46584514f5e3Sopenharmony_ci parameters.emplace_back(v0); 46594514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46604514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46614514f5e3Sopenharmony_ci} 46624514f5e3Sopenharmony_ci 46634514f5e3Sopenharmony_ci// GLUE, SP, V0 46644514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_TONUMERIC_PREF_V8) 46654514f5e3Sopenharmony_ci{ 46664514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 46674514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 46684514f5e3Sopenharmony_ci Address builtinAddress = 46694514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedTonumericPrefV8); 46704514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedTonumericPrefV8 Address: " << std::hex << builtinAddress; 46714514f5e3Sopenharmony_ci 46724514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 46734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 46744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46754514f5e3Sopenharmony_ci parameters.emplace_back(v0); 46764514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46774514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46784514f5e3Sopenharmony_ci} 46794514f5e3Sopenharmony_ci 46804514f5e3Sopenharmony_ci// GLUE, SP, V0 46814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_NEG_PREF_V8) 46824514f5e3Sopenharmony_ci{ 46834514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 46844514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 46854514f5e3Sopenharmony_ci Address builtinAddress = 46864514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedNegPrefV8); 46874514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedNegPrefV8 Address: " << std::hex << builtinAddress; 46884514f5e3Sopenharmony_ci 46894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 46904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 46914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 46924514f5e3Sopenharmony_ci parameters.emplace_back(v0); 46934514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 46944514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 46954514f5e3Sopenharmony_ci} 46964514f5e3Sopenharmony_ci 46974514f5e3Sopenharmony_ci// GLUE, SP, V0 46984514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_INC_PREF_V8) 46994514f5e3Sopenharmony_ci{ 47004514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 47014514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47024514f5e3Sopenharmony_ci Address builtinAddress = 47034514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedIncPrefV8); 47044514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedIncPrefV8 Address: " << std::hex << builtinAddress; 47054514f5e3Sopenharmony_ci 47064514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 47074514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 47084514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 47094514f5e3Sopenharmony_ci parameters.emplace_back(v0); 47104514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 47114514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 47124514f5e3Sopenharmony_ci} 47134514f5e3Sopenharmony_ci 47144514f5e3Sopenharmony_ci// GLUE, SP, INDEX 47154514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_NOT_PREF_V8) 47164514f5e3Sopenharmony_ci{ 47174514f5e3Sopenharmony_ci int8_t index = READ_INST_8_1(); 47184514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47194514f5e3Sopenharmony_ci Address builtinAddress = 47204514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedNotPrefV8); 47214514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedNotPrefV8 Address: " << std::hex << builtinAddress; 47224514f5e3Sopenharmony_ci 47234514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 47244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 47254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 47264514f5e3Sopenharmony_ci parameters.emplace_back(index); 47274514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 47284514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 47294514f5e3Sopenharmony_ci} 47304514f5e3Sopenharmony_ci 47314514f5e3Sopenharmony_ci// GLUE, SP, INDEX 47324514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_DEC_PREF_V8) 47334514f5e3Sopenharmony_ci{ 47344514f5e3Sopenharmony_ci int8_t index = READ_INST_8_1(); 47354514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47364514f5e3Sopenharmony_ci Address builtinAddress = 47374514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedDecPrefV8); 47384514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedDecPrefV8 Address: " << std::hex << builtinAddress; 47394514f5e3Sopenharmony_ci 47404514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 47414514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 47424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 47434514f5e3Sopenharmony_ci parameters.emplace_back(index); 47444514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 47454514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 47464514f5e3Sopenharmony_ci} 47474514f5e3Sopenharmony_ci 47484514f5e3Sopenharmony_ci// GLUE, SP, FUNC_REG, HOTNESS_COUNTER 47494514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLARG0_PREF_V8) 47504514f5e3Sopenharmony_ci{ 47514514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_1(); 47524514f5e3Sopenharmony_ci 47534514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47544514f5e3Sopenharmony_ci Address builtinAddress = 47554514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallarg0PrefV8); 47564514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallarg0PrefV8 Address: " << std::hex << builtinAddress; 47574514f5e3Sopenharmony_ci 47584514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 47594514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 47604514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 47614514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 47624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 47634514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 47644514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 47654514f5e3Sopenharmony_ci} 47664514f5e3Sopenharmony_ci 47674514f5e3Sopenharmony_ci// GLUE, SP, FUNC_REG, A0, HOTNESS_COUNTER 47684514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLARG1_PREF_V8_V8) 47694514f5e3Sopenharmony_ci{ 47704514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_1(); 47714514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 47724514f5e3Sopenharmony_ci 47734514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47744514f5e3Sopenharmony_ci Address builtinAddress = 47754514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallarg1PrefV8V8); 47764514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallarg1PrefV8V8 Address: " << std::hex << builtinAddress; 47774514f5e3Sopenharmony_ci 47784514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 47794514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 47804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 47814514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 47824514f5e3Sopenharmony_ci parameters.emplace_back(v0); 47834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 47844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 47854514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 47864514f5e3Sopenharmony_ci} 47874514f5e3Sopenharmony_ci 47884514f5e3Sopenharmony_ci// GLUE, SP, FUNC_REG, A0, A1, HOTNESS_COUNTER 47894514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLARGS2_PREF_V8_V8_V8) 47904514f5e3Sopenharmony_ci{ 47914514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_1(); 47924514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 47934514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_3(); 47944514f5e3Sopenharmony_ci 47954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 47964514f5e3Sopenharmony_ci Address builtinAddress = 47974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallargs2PrefV8V8V8); 47984514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallargs2PrefV8V8V8 Address: " << std::hex << builtinAddress; 47994514f5e3Sopenharmony_ci 48004514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 48014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 48024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 48034514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 48044514f5e3Sopenharmony_ci parameters.emplace_back(v0); 48054514f5e3Sopenharmony_ci parameters.emplace_back(v1); 48064514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 48074514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 48084514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 48094514f5e3Sopenharmony_ci} 48104514f5e3Sopenharmony_ci 48114514f5e3Sopenharmony_ci// GLUE, SP, FUNC_REG, A0, A1, A2, HOTNESS_COUNTER 48124514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLARGS3_PREF_V8_V8_V8_V8) 48134514f5e3Sopenharmony_ci{ 48144514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_1(); 48154514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 48164514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_3(); 48174514f5e3Sopenharmony_ci int8_t v2 = READ_INST_8_4(); 48184514f5e3Sopenharmony_ci 48194514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 48204514f5e3Sopenharmony_ci Address builtinAddress = 48214514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallargs3PrefV8V8V8V8); 48224514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallargs3PrefV8V8V8V8 Address: " << std::hex << builtinAddress; 48234514f5e3Sopenharmony_ci 48244514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 48254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 48264514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 48274514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 48284514f5e3Sopenharmony_ci parameters.emplace_back(v0); 48294514f5e3Sopenharmony_ci parameters.emplace_back(v1); 48304514f5e3Sopenharmony_ci parameters.emplace_back(v2); 48314514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 48324514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 48334514f5e3Sopenharmony_ci} 48344514f5e3Sopenharmony_ci 48354514f5e3Sopenharmony_ci// GLUE, SP, V0, V1, V2 48364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLSPREAD_PREF_V8_V8_V8) 48374514f5e3Sopenharmony_ci{ 48384514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 48394514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 48404514f5e3Sopenharmony_ci int8_t v2 = READ_INST_8_3(); 48414514f5e3Sopenharmony_ci 48424514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 48434514f5e3Sopenharmony_ci Address builtinAddress = 48444514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallspreadPrefV8V8V8); 48454514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallspreadPrefV8V8V8 Address: " << std::hex << builtinAddress; 48464514f5e3Sopenharmony_ci 48474514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 48484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 48494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 48504514f5e3Sopenharmony_ci parameters.emplace_back(v0); 48514514f5e3Sopenharmony_ci parameters.emplace_back(v1); 48524514f5e3Sopenharmony_ci parameters.emplace_back(v2); 48534514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 48544514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 48554514f5e3Sopenharmony_ci} 48564514f5e3Sopenharmony_ci 48574514f5e3Sopenharmony_ci// GLUE, SP, INDEX, FUNC_REG, HOTNESS_COUNTER 48584514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLRANGE_PREF_IMM16_V8) 48594514f5e3Sopenharmony_ci{ 48604514f5e3Sopenharmony_ci uint16_t actualNumArgs = READ_INST_16_1(); 48614514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_3(); 48624514f5e3Sopenharmony_ci 48634514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 48644514f5e3Sopenharmony_ci Address builtinAddress = 48654514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallrangePrefImm16V8); 48664514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallrangePrefImm16V8 Address: " << std::hex << builtinAddress; 48674514f5e3Sopenharmony_ci LOG_INST() << " actualNumArgs: " << static_cast<int32_t>(actualNumArgs); 48684514f5e3Sopenharmony_ci 48694514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 48704514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 48714514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 48724514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(actualNumArgs)); 48734514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 48744514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 48754514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 48764514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 48774514f5e3Sopenharmony_ci} 48784514f5e3Sopenharmony_ci 48794514f5e3Sopenharmony_ci// GLUE, SP, INDEX, FUNC_REG, HOTNESS_COUNTER 48804514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CALLTHISRANGE_PREF_IMM16_V8) 48814514f5e3Sopenharmony_ci{ 48824514f5e3Sopenharmony_ci uint16_t index = READ_INST_16_1(); 48834514f5e3Sopenharmony_ci int8_t funcReg = READ_INST_8_3(); 48844514f5e3Sopenharmony_ci 48854514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 48864514f5e3Sopenharmony_ci Address builtinAddress = 48874514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCallthisrangePrefImm16V8); 48884514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCallthisrangePrefImm16V8 Address: " << std::hex << builtinAddress; 48894514f5e3Sopenharmony_ci LOG_INST() << " index: " << static_cast<int32_t>(index); 48904514f5e3Sopenharmony_ci 48914514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 48924514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 48934514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 48944514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(index)); 48954514f5e3Sopenharmony_ci parameters.emplace_back(funcReg); 48964514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 48974514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 48984514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 48994514f5e3Sopenharmony_ci} 49004514f5e3Sopenharmony_ci 49014514f5e3Sopenharmony_ci// GLUE, SP, ACC, METHOD_ID, LITERAL_ID, LENGTH, V0, V1, FUNC 49024514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8) 49034514f5e3Sopenharmony_ci{ 49044514f5e3Sopenharmony_ci uint16_t methodId = READ_INST_16_1(); 49054514f5e3Sopenharmony_ci uint16_t literalId = READ_INST_16_3(); 49064514f5e3Sopenharmony_ci uint16_t length = READ_INST_16_5(); 49074514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_7(); 49084514f5e3Sopenharmony_ci uint8_t v1 = READ_INST_8_8(); 49094514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 49104514f5e3Sopenharmony_ci Address builtinAddress = thread->GetBaselineStubEntry( 49114514f5e3Sopenharmony_ci BaselineStubCSigns::BaselineDeprecatedDefineclasswithbufferPrefId16Imm16Imm16V8V8); 49124514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedDefineclasswithbufferPrefId16Imm16Imm16V8V8 Address: " 49134514f5e3Sopenharmony_ci << std::hex << builtinAddress; 49144514f5e3Sopenharmony_ci 49154514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 49164514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 49174514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(methodId)); 49184514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(literalId)); 49194514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(length)); 49204514f5e3Sopenharmony_ci uint32_t vregIds = static_cast<uint32_t>(v0) | (static_cast<uint32_t>(v1) << ONE_BYTE_SIZE); 49214514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(vregIds)); 49224514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 49234514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 49244514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 49254514f5e3Sopenharmony_ci} 49264514f5e3Sopenharmony_ci 49274514f5e3Sopenharmony_ci// GLUE, SP, ACC, V0, FUNC 49284514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_RESUMEGENERATOR_PREF_V8) 49294514f5e3Sopenharmony_ci{ 49304514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 49314514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 49324514f5e3Sopenharmony_ci Address builtinAddress = 49334514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedResumegeneratorPrefV8); 49344514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedResumegeneratorPrefV8 Address: " << std::hex << builtinAddress; 49354514f5e3Sopenharmony_ci 49364514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 49374514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 49384514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 49394514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 49404514f5e3Sopenharmony_ci parameters.emplace_back(v0); 49414514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 49424514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 49434514f5e3Sopenharmony_ci} 49444514f5e3Sopenharmony_ci 49454514f5e3Sopenharmony_ci// SP, ACC, V0 49464514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_GETRESUMEMODE_PREF_V8) 49474514f5e3Sopenharmony_ci{ 49484514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 49494514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 49504514f5e3Sopenharmony_ci Address builtinAddress = 49514514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedGetresumemodePrefV8); 49524514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedGetresumemodePrefV8 Address: " << std::hex << builtinAddress; 49534514f5e3Sopenharmony_ci 49544514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 49554514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 49564514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 49574514f5e3Sopenharmony_ci parameters.emplace_back(v0); 49584514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 49594514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 49604514f5e3Sopenharmony_ci} 49614514f5e3Sopenharmony_ci 49624514f5e3Sopenharmony_ci// GLUE, SP, V0 49634514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_GETTEMPLATEOBJECT_PREF_V8) 49644514f5e3Sopenharmony_ci{ 49654514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 49664514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 49674514f5e3Sopenharmony_ci Address builtinAddress = 49684514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedGettemplateobjectPrefV8); 49694514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedGettemplateobjectPrefV8 Address: " << std::hex << builtinAddress; 49704514f5e3Sopenharmony_ci 49714514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 49724514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 49734514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 49744514f5e3Sopenharmony_ci parameters.emplace_back(v0); 49754514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 49764514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 49774514f5e3Sopenharmony_ci} 49784514f5e3Sopenharmony_ci 49794514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 49804514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_DELOBJPROP_PREF_V8_V8) 49814514f5e3Sopenharmony_ci{ 49824514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 49834514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 49844514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 49854514f5e3Sopenharmony_ci Address builtinAddress = 49864514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedDelobjpropPrefV8V8); 49874514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedDelobjpropPrefV8V8 Address: " << std::hex << builtinAddress; 49884514f5e3Sopenharmony_ci 49894514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 49904514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 49914514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 49924514f5e3Sopenharmony_ci parameters.emplace_back(v0); 49934514f5e3Sopenharmony_ci parameters.emplace_back(v1); 49944514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 49954514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 49964514f5e3Sopenharmony_ci} 49974514f5e3Sopenharmony_ci 49984514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 49994514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8) 50004514f5e3Sopenharmony_ci{ 50014514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50024514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 50034514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50044514f5e3Sopenharmony_ci Address builtinAddress = 50054514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedAsyncfunctionawaituncaughtPrefV8V8); 50064514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedAsyncfunctionawaituncaughtPrefV8V8 Address: " << std::hex << builtinAddress; 50074514f5e3Sopenharmony_ci 50084514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 50094514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 50104514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 50114514f5e3Sopenharmony_ci parameters.emplace_back(v0); 50124514f5e3Sopenharmony_ci parameters.emplace_back(v1); 50134514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 50144514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 50154514f5e3Sopenharmony_ci} 50164514f5e3Sopenharmony_ci 50174514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 50184514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_COPYDATAPROPERTIES_PREF_V8_V8) 50194514f5e3Sopenharmony_ci{ 50204514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50214514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 50224514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50234514f5e3Sopenharmony_ci Address builtinAddress = 50244514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCopydatapropertiesPrefV8V8); 50254514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCopydatapropertiesPrefV8V8 Address: " << std::hex << builtinAddress; 50264514f5e3Sopenharmony_ci 50274514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 50284514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 50294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 50304514f5e3Sopenharmony_ci parameters.emplace_back(v0); 50314514f5e3Sopenharmony_ci parameters.emplace_back(v1); 50324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 50334514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 50344514f5e3Sopenharmony_ci} 50354514f5e3Sopenharmony_ci 50364514f5e3Sopenharmony_ci// GLUE, SP, ACC, V0, V1 50374514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_SETOBJECTWITHPROTO_PREF_V8_V8) 50384514f5e3Sopenharmony_ci{ 50394514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50404514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 50414514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50424514f5e3Sopenharmony_ci Address builtinAddress = 50434514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedSetobjectwithprotoPrefV8V8); 50444514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedSetobjectwithprotoPrefV8V8 Address: " << std::hex << builtinAddress; 50454514f5e3Sopenharmony_ci 50464514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 50474514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 50484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 50494514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 50504514f5e3Sopenharmony_ci parameters.emplace_back(v0); 50514514f5e3Sopenharmony_ci parameters.emplace_back(v1); 50524514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 50534514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 50544514f5e3Sopenharmony_ci} 50554514f5e3Sopenharmony_ci 50564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDOBJBYVALUE_PREF_V8_V8) 50574514f5e3Sopenharmony_ci{ 50584514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50594514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 50604514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50614514f5e3Sopenharmony_ci Address builtinAddress = 50624514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdobjbyvaluePrefV8V8); 50634514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdobjbyvaluePrefV8V8 Address: " << std::hex << builtinAddress; 50644514f5e3Sopenharmony_ci 50654514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 50664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 50674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 50684514f5e3Sopenharmony_ci parameters.emplace_back(v0); 50694514f5e3Sopenharmony_ci parameters.emplace_back(v1); 50704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 50714514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 50724514f5e3Sopenharmony_ci} 50734514f5e3Sopenharmony_ci 50744514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 50754514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDSUPERBYVALUE_PREF_V8_V8) 50764514f5e3Sopenharmony_ci{ 50774514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50784514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_2(); 50794514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50804514f5e3Sopenharmony_ci Address builtinAddress = 50814514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdsuperbyvaluePrefV8V8); 50824514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdsuperbyvaluePrefV8V8 Address: " << std::hex << builtinAddress; 50834514f5e3Sopenharmony_ci 50844514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 50854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 50864514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 50874514f5e3Sopenharmony_ci parameters.emplace_back(v0); 50884514f5e3Sopenharmony_ci parameters.emplace_back(v1); 50894514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 50904514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 50914514f5e3Sopenharmony_ci} 50924514f5e3Sopenharmony_ci 50934514f5e3Sopenharmony_ci// GLUE, SP, V0, INDEX 50944514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDOBJBYINDEX_PREF_V8_IMM32) 50954514f5e3Sopenharmony_ci{ 50964514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 50974514f5e3Sopenharmony_ci int32_t index = static_cast<int32_t>(READ_INST_32_2()); 50984514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 50994514f5e3Sopenharmony_ci Address builtinAddress = 51004514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdobjbyindexPrefV8Imm32); 51014514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdobjbyindexPrefV8Imm32 Address: " << std::hex << builtinAddress; 51024514f5e3Sopenharmony_ci 51034514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 51044514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 51054514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 51064514f5e3Sopenharmony_ci parameters.emplace_back(v0); 51074514f5e3Sopenharmony_ci parameters.emplace_back(index); 51084514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 51094514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 51104514f5e3Sopenharmony_ci} 51114514f5e3Sopenharmony_ci 51124514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 51134514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8) 51144514f5e3Sopenharmony_ci{ 51154514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 51164514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_3(); 51174514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 51184514f5e3Sopenharmony_ci Address builtinAddress = 51194514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedAsyncfunctionresolvePrefV8V8V8); 51204514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedAsyncfunctionresolvePrefV8V8V8 Address: " << std::hex << builtinAddress; 51214514f5e3Sopenharmony_ci 51224514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 51234514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 51244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 51254514f5e3Sopenharmony_ci parameters.emplace_back(v0); 51264514f5e3Sopenharmony_ci parameters.emplace_back(v1); 51274514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 51284514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 51294514f5e3Sopenharmony_ci} 51304514f5e3Sopenharmony_ci 51314514f5e3Sopenharmony_ci// GLUE, SP, V0, V1 51324514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8) 51334514f5e3Sopenharmony_ci{ 51344514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_1(); 51354514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_3(); 51364514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 51374514f5e3Sopenharmony_ci Address builtinAddress = 51384514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedAsyncfunctionrejectPrefV8V8V8); 51394514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedAsyncfunctionrejectPrefV8V8V8 Address: " << std::hex << builtinAddress; 51404514f5e3Sopenharmony_ci 51414514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 51424514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 51434514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 51444514f5e3Sopenharmony_ci parameters.emplace_back(v0); 51454514f5e3Sopenharmony_ci parameters.emplace_back(v1); 51464514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 51474514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 51484514f5e3Sopenharmony_ci} 51494514f5e3Sopenharmony_ci 51504514f5e3Sopenharmony_ci// GLUE, SP, LEVEL, SLOT, V0 51514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STLEXVAR_PREF_IMM4_IMM4_V8) 51524514f5e3Sopenharmony_ci{ 51534514f5e3Sopenharmony_ci uint8_t level = READ_INST_4_2(); 51544514f5e3Sopenharmony_ci uint8_t slot = READ_INST_4_3(); 51554514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 51564514f5e3Sopenharmony_ci 51574514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 51584514f5e3Sopenharmony_ci Address builtinAddress = 51594514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStlexvarPrefImm4Imm4V8); 51604514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStlexvarPrefImm4Imm4V8 Address: " << std::hex << builtinAddress; 51614514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 51624514f5e3Sopenharmony_ci LOG_INST() << " slot: " << static_cast<int32_t>(slot); 51634514f5e3Sopenharmony_ci 51644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 51654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 51664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 51674514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 51684514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 51694514f5e3Sopenharmony_ci parameters.emplace_back(v0); 51704514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 51714514f5e3Sopenharmony_ci} 51724514f5e3Sopenharmony_ci 51734514f5e3Sopenharmony_ci// GLUE, SP, LEVEL, SLOT, V0 51744514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STLEXVAR_PREF_IMM8_IMM8_V8) 51754514f5e3Sopenharmony_ci{ 51764514f5e3Sopenharmony_ci uint8_t level = READ_INST_8_1(); 51774514f5e3Sopenharmony_ci uint8_t slot = READ_INST_8_2(); 51784514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_3(); 51794514f5e3Sopenharmony_ci 51804514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 51814514f5e3Sopenharmony_ci Address builtinAddress = 51824514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStlexvarPrefImm8Imm8V8); 51834514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStlexvarPrefImm8Imm8V8 Address: " << std::hex << builtinAddress; 51844514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 51854514f5e3Sopenharmony_ci LOG_INST() << " slot: " << static_cast<int32_t>(slot); 51864514f5e3Sopenharmony_ci 51874514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 51884514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 51894514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 51904514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 51914514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 51924514f5e3Sopenharmony_ci parameters.emplace_back(v0); 51934514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 51944514f5e3Sopenharmony_ci} 51954514f5e3Sopenharmony_ci 51964514f5e3Sopenharmony_ci// GLUE, SP, LEVEL, SLOT, V0 51974514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STLEXVAR_PREF_IMM16_IMM16_V8) 51984514f5e3Sopenharmony_ci{ 51994514f5e3Sopenharmony_ci uint16_t level = READ_INST_16_1(); 52004514f5e3Sopenharmony_ci uint16_t slot = READ_INST_16_3(); 52014514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_5(); 52024514f5e3Sopenharmony_ci 52034514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52044514f5e3Sopenharmony_ci Address builtinAddress = 52054514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStlexvarPrefImm16Imm16V8); 52064514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStlexvarPrefImm16Imm16V8 Address: " << std::hex << builtinAddress; 52074514f5e3Sopenharmony_ci LOG_INST() << " level: " << static_cast<int32_t>(level); 52084514f5e3Sopenharmony_ci LOG_INST() << " slot: " << static_cast<int32_t>(slot); 52094514f5e3Sopenharmony_ci 52104514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52114514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52124514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 52134514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(level)); 52144514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slot)); 52154514f5e3Sopenharmony_ci parameters.emplace_back(v0); 52164514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 52174514f5e3Sopenharmony_ci} 52184514f5e3Sopenharmony_ci 52194514f5e3Sopenharmony_ci// GLUE, STRING_ID, SP 52204514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_GETMODULENAMESPACE_PREF_ID32) 52214514f5e3Sopenharmony_ci{ 52224514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 52234514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52244514f5e3Sopenharmony_ci Address builtinAddress = 52254514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedGetmodulenamespacePrefId32); 52264514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedGetmodulenamespacePrefId32 Address: " << std::hex << builtinAddress; 52274514f5e3Sopenharmony_ci 52284514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52294514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52304514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 52314514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 52324514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 52334514f5e3Sopenharmony_ci} 52344514f5e3Sopenharmony_ci 52354514f5e3Sopenharmony_ci// GLUE, ACC, STRING_ID, SP 52364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STMODULEVAR_PREF_ID32) 52374514f5e3Sopenharmony_ci{ 52384514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 52394514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52404514f5e3Sopenharmony_ci Address builtinAddress = 52414514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStmodulevarPrefId32); 52424514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStmodulevarPrefId32 Address: " << std::hex << builtinAddress; 52434514f5e3Sopenharmony_ci 52444514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52454514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52464514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 52474514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 52484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 52494514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 52504514f5e3Sopenharmony_ci} 52514514f5e3Sopenharmony_ci 52524514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDOBJBYNAME_PREF_ID32_V8) 52534514f5e3Sopenharmony_ci{ 52544514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 52554514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_5(); 52564514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52574514f5e3Sopenharmony_ci Address builtinAddress = 52584514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdobjbynamePrefId32V8); 52594514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdobjbynamePrefId32V8 Address: " << std::hex << builtinAddress; 52604514f5e3Sopenharmony_ci 52614514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 52644514f5e3Sopenharmony_ci parameters.emplace_back(v0); 52654514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 52664514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 52674514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 52684514f5e3Sopenharmony_ci} 52694514f5e3Sopenharmony_ci 52704514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDSUPERBYNAME_PREF_ID32_V8) 52714514f5e3Sopenharmony_ci{ 52724514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 52734514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_5(); 52744514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52754514f5e3Sopenharmony_ci Address builtinAddress = 52764514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdsuperbynamePrefId32V8); 52774514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdsuperbynamePrefId32V8 Address: " << std::hex << builtinAddress; 52784514f5e3Sopenharmony_ci 52794514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52804514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 52824514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 52834514f5e3Sopenharmony_ci parameters.emplace_back(v0); 52844514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 52854514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 52864514f5e3Sopenharmony_ci} 52874514f5e3Sopenharmony_ci 52884514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDMODULEVAR_PREF_ID32_IMM8) 52894514f5e3Sopenharmony_ci{ 52904514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 52914514f5e3Sopenharmony_ci int8_t flagI8 = READ_INST_8_5(); 52924514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 52934514f5e3Sopenharmony_ci Address builtinAddress = 52944514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdmodulevarPrefId32Imm8); 52954514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdmodulevarPrefId32Imm8 Address: " << std::hex << builtinAddress; 52964514f5e3Sopenharmony_ci 52974514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 52984514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 52994514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 53004514f5e3Sopenharmony_ci parameters.emplace_back(flagI8); 53014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53024514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53034514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53044514f5e3Sopenharmony_ci} 53054514f5e3Sopenharmony_ci 53064514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STCONSTTOGLOBALRECORD_PREF_ID32) 53074514f5e3Sopenharmony_ci{ 53084514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 53094514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53104514f5e3Sopenharmony_ci Address builtinAddress = 53114514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStconsttoglobalrecordPrefId32); 53124514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStconsttoglobalrecordPrefId32 Address: " << std::hex << builtinAddress; 53134514f5e3Sopenharmony_ci 53144514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 53154514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 53164514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 53174514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 53184514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53194514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53204514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53214514f5e3Sopenharmony_ci} 53224514f5e3Sopenharmony_ci 53234514f5e3Sopenharmony_ci// GLUE, ACC, STRING_ID, SP 53244514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STLETTOGLOBALRECORD_PREF_ID32) 53254514f5e3Sopenharmony_ci{ 53264514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 53274514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53284514f5e3Sopenharmony_ci Address builtinAddress = 53294514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStlettoglobalrecordPrefId32); 53304514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStlettoglobalrecordPrefId32 Address: " << std::hex << builtinAddress; 53314514f5e3Sopenharmony_ci 53324514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 53334514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 53344514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 53354514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 53364514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53374514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53384514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53394514f5e3Sopenharmony_ci} 53404514f5e3Sopenharmony_ci 53414514f5e3Sopenharmony_ci// GLUE, ACC, STRING_ID, SP 53424514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_STCLASSTOGLOBALRECORD_PREF_ID32) 53434514f5e3Sopenharmony_ci{ 53444514f5e3Sopenharmony_ci int32_t stringId = static_cast<int32_t>(READ_INST_32_1()); 53454514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53464514f5e3Sopenharmony_ci Address builtinAddress = 53474514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedStclasstoglobalrecordPrefId32); 53484514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedStclasstoglobalrecordPrefId32 Address: " << std::hex << builtinAddress; 53494514f5e3Sopenharmony_ci 53504514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 53514514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 53524514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 53534514f5e3Sopenharmony_ci parameters.emplace_back(stringId); 53544514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53554514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53564514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53574514f5e3Sopenharmony_ci} 53584514f5e3Sopenharmony_ci 53594514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_LDHOMEOBJECT_PREF_NONE) 53604514f5e3Sopenharmony_ci{ 53614514f5e3Sopenharmony_ci (void)bytecodeArray; 53624514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53634514f5e3Sopenharmony_ci Address builtinAddress = 53644514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedLdhomeobjectPrefNone); 53654514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedLdhomeobjectPrefNone Address: " << std::hex << builtinAddress; 53664514f5e3Sopenharmony_ci 53674514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 53684514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53694514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53704514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53714514f5e3Sopenharmony_ci} 53724514f5e3Sopenharmony_ci 53734514f5e3Sopenharmony_ci// GLUE, ACC, CONSTPOOL, IMM_I16, FUNC 53744514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_CREATEOBJECTHAVINGMETHOD_PREF_IMM16) 53754514f5e3Sopenharmony_ci{ 53764514f5e3Sopenharmony_ci int16_t immI16 = READ_INST_16_1(); 53774514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53784514f5e3Sopenharmony_ci Address builtinAddress = 53794514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedCreateobjecthavingmethodPrefImm16); 53804514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedCreateobjecthavingmethodPrefImm16 Address: " << std::hex << builtinAddress; 53814514f5e3Sopenharmony_ci 53824514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 53834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 53844514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 53854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 53864514f5e3Sopenharmony_ci parameters.emplace_back(immI16); 53874514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 53884514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 53894514f5e3Sopenharmony_ci} 53904514f5e3Sopenharmony_ci 53914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEPRECATED_DYNAMICIMPORT_PREF_V8) 53924514f5e3Sopenharmony_ci{ 53934514f5e3Sopenharmony_ci int8_t vregId = READ_INST_8_1(); 53944514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 53954514f5e3Sopenharmony_ci Address builtinAddress = 53964514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDeprecatedDynamicimportPrefV8); 53974514f5e3Sopenharmony_ci LOG_INST() << " BaselineDeprecatedDynamicimportPrefV8 Address: " << std::hex << builtinAddress; 53984514f5e3Sopenharmony_ci 53994514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 54004514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 54014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 54024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 54034514f5e3Sopenharmony_ci parameters.emplace_back(VirtualRegister(vregId)); 54044514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 54054514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 54064514f5e3Sopenharmony_ci} 54074514f5e3Sopenharmony_ci 54084514f5e3Sopenharmony_ci// ------- End deprecated ------- 54094514f5e3Sopenharmony_ci 54104514f5e3Sopenharmony_ci// GLUE, SP, SLOT_ID, STRING_ID, V0 54114514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEFIELDBYNAME_IMM8_ID16_V8) 54124514f5e3Sopenharmony_ci{ 54134514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 54144514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 54154514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_3(); 54164514f5e3Sopenharmony_ci 54174514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 54184514f5e3Sopenharmony_ci Address builtinAddress = 54194514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefineFieldByNameImm8Id16V8); 54204514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefineFieldByNameImm8Id16V8 Address: " << std::hex << builtinAddress; 54214514f5e3Sopenharmony_ci LOG_INST() << " slotId: " << static_cast<int32_t>(slotId); 54224514f5e3Sopenharmony_ci LOG_INST() << " stringId: " << static_cast<int32_t>(stringId); 54234514f5e3Sopenharmony_ci 54244514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 54254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 54264514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 54274514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 54284514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 54294514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 54304514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 54314514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 54324514f5e3Sopenharmony_ci} 54334514f5e3Sopenharmony_ci 54344514f5e3Sopenharmony_ci// GLUE, SP, ACC, PROFILE_TYPE_INFO, SLOT_ID_I8, STRING_ID, V0 54354514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(DEFINEPROPERTYBYNAME_IMM8_ID16_V8) 54364514f5e3Sopenharmony_ci{ 54374514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_0(); 54384514f5e3Sopenharmony_ci uint16_t stringId = READ_INST_16_1(); 54394514f5e3Sopenharmony_ci uint8_t v0 = READ_INST_8_3(); 54404514f5e3Sopenharmony_ci 54414514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 54424514f5e3Sopenharmony_ci Address builtinAddress = 54434514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineDefinePropertyByNameImm8Id16V8); 54444514f5e3Sopenharmony_ci LOG_INST() << " BaselineDefinePropertyByNameImm8Id16V8 Address: " << std::hex << builtinAddress; 54454514f5e3Sopenharmony_ci 54464514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 54474514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 54484514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 54494514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 54504514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(stringId)); 54514514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(v0)); 54524514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 54534514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 54544514f5e3Sopenharmony_ci} 54554514f5e3Sopenharmony_ci 54564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_NOTIFYCONCURRENTRESULT_PREF_NONE) 54574514f5e3Sopenharmony_ci{ 54584514f5e3Sopenharmony_ci (void)bytecodeArray; 54594514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 54604514f5e3Sopenharmony_ci Address builtinAddress = 54614514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeNotifyConcurrentResultPrefNone); 54624514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeNotifyConcurrentResultPrefNone Address: " << std::hex << builtinAddress; 54634514f5e3Sopenharmony_ci 54644514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 54654514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 54664514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 54674514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 54684514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 54694514f5e3Sopenharmony_ci} 54704514f5e3Sopenharmony_ci 54714514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_DEFINEFIELDBYVALUE_PREF_IMM8_V8_V8) 54724514f5e3Sopenharmony_ci{ 54734514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 54744514f5e3Sopenharmony_ci int8_t v1 = READ_INST_8_3(); 54754514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 54764514f5e3Sopenharmony_ci Address builtinAddress = 54774514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeDefineFieldByValuePrefImm8V8V8); 54784514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeDefineFieldByValuePrefImm8V8V8 Address: " << std::hex << builtinAddress; 54794514f5e3Sopenharmony_ci 54804514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 54814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 54824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 54834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 54844514f5e3Sopenharmony_ci parameters.emplace_back(v0); 54854514f5e3Sopenharmony_ci parameters.emplace_back(v1); 54864514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 54874514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 54884514f5e3Sopenharmony_ci} 54894514f5e3Sopenharmony_ci 54904514f5e3Sopenharmony_ci// GLUE, SP, ACC, INDEX, V0 54914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_DEFINEFIELDBYINDEX_PREF_IMM8_IMM32_V8) 54924514f5e3Sopenharmony_ci{ 54934514f5e3Sopenharmony_ci int32_t index = static_cast<int32_t>(READ_INST_32_2()); 54944514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_6(); 54954514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 54964514f5e3Sopenharmony_ci Address builtinAddress = 54974514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeDefineFieldByIndexPrefImm8Imm32V8); 54984514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeDefineFieldByIndexPrefImm8Imm32V8 Address: " << std::hex << builtinAddress; 54994514f5e3Sopenharmony_ci 55004514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 55014514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 55024514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 55034514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 55044514f5e3Sopenharmony_ci parameters.emplace_back(index); 55054514f5e3Sopenharmony_ci parameters.emplace_back(v0); 55064514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 55074514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 55084514f5e3Sopenharmony_ci} 55094514f5e3Sopenharmony_ci 55104514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_TOPROPERTYKEY_PREF_NONE) 55114514f5e3Sopenharmony_ci{ 55124514f5e3Sopenharmony_ci (void)bytecodeArray; 55134514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 55144514f5e3Sopenharmony_ci Address builtinAddress = 55154514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeToPropertyKeyPrefNone); 55164514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeToPropertyKeyPrefNone Address: " << std::hex << builtinAddress; 55174514f5e3Sopenharmony_ci 55184514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 55194514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 55204514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 55214514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 55224514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 55234514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 55244514f5e3Sopenharmony_ci} 55254514f5e3Sopenharmony_ci 55264514f5e3Sopenharmony_ci// GLUE, SP, COUNT, LITERAL_ID 55274514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_CREATEPRIVATEPROPERTY_PREF_IMM16_ID16) 55284514f5e3Sopenharmony_ci{ 55294514f5e3Sopenharmony_ci uint16_t count = READ_INST_16_1(); 55304514f5e3Sopenharmony_ci uint16_t literalId = READ_INST_16_3(); 55314514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 55324514f5e3Sopenharmony_ci Address builtinAddress = 55334514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeCreatePrivatePropertyPrefImm16Id16); 55344514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeCreatePrivatePropertyPrefImm16Id16 Address: " << std::hex << builtinAddress; 55354514f5e3Sopenharmony_ci LOG_INST() << " count: " << static_cast<int32_t>(count); 55364514f5e3Sopenharmony_ci LOG_INST() << " literalId: " << static_cast<int32_t>(literalId); 55374514f5e3Sopenharmony_ci 55384514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 55394514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 55404514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 55414514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(count)); 55424514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(literalId)); 55434514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 55444514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 55454514f5e3Sopenharmony_ci} 55464514f5e3Sopenharmony_ci 55474514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_DEFINEPRIVATEPROPERTY_PREF_IMM8_IMM16_IMM16_V8) 55484514f5e3Sopenharmony_ci{ 55494514f5e3Sopenharmony_ci uint16_t levelIndex = READ_INST_16_2(); 55504514f5e3Sopenharmony_ci uint16_t slotIndex = READ_INST_16_4(); 55514514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_6(); 55524514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 55534514f5e3Sopenharmony_ci Address builtinAddress = thread->GetBaselineStubEntry( 55544514f5e3Sopenharmony_ci BaselineStubCSigns::BaselineCallRuntimeDefinePrivatePropertyPrefImm8Imm16Imm16V8); 55554514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeDefinePrivatePropertyPrefImm8Imm16Imm16V8 Address: " 55564514f5e3Sopenharmony_ci << std::hex << builtinAddress; 55574514f5e3Sopenharmony_ci LOG_INST() << " levelIndex: " << static_cast<int32_t>(levelIndex); 55584514f5e3Sopenharmony_ci LOG_INST() << " slotIndex: " << static_cast<int32_t>(slotIndex); 55594514f5e3Sopenharmony_ci 55604514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 55614514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 55624514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 55634514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 55644514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(levelIndex)); 55654514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotIndex)); 55664514f5e3Sopenharmony_ci parameters.emplace_back(v0); 55674514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 55684514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 55694514f5e3Sopenharmony_ci} 55704514f5e3Sopenharmony_ci 55714514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_CALLINIT_PREF_IMM8_V8) 55724514f5e3Sopenharmony_ci{ 55734514f5e3Sopenharmony_ci uint8_t slotId = READ_INST_8_1(); 55744514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_2(); 55754514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 55764514f5e3Sopenharmony_ci Address builtinAddress = 55774514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeCallInitPrefImm8V8); 55784514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeCallInitPrefImm8V8 Address: " << std::hex << builtinAddress; 55794514f5e3Sopenharmony_ci 55804514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 55814514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 55824514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 55834514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::ACC); 55844514f5e3Sopenharmony_ci parameters.emplace_back(v0); 55854514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::HOTNESS_COUNTER); 55864514f5e3Sopenharmony_ci parameters.emplace_back(static_cast<int32_t>(slotId)); 55874514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 55884514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 55894514f5e3Sopenharmony_ci} 55904514f5e3Sopenharmony_ci 55914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_DEFINESENDABLECLASS_PREF_IMM16_ID16_ID16_IMM16_V8) 55924514f5e3Sopenharmony_ci{ 55934514f5e3Sopenharmony_ci int16_t methodId = READ_INST_16_3(); 55944514f5e3Sopenharmony_ci int16_t literalId = READ_INST_16_5(); 55954514f5e3Sopenharmony_ci int16_t length = READ_INST_16_7(); 55964514f5e3Sopenharmony_ci int8_t v0 = READ_INST_8_9(); 55974514f5e3Sopenharmony_ci 55984514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 55994514f5e3Sopenharmony_ci Address builtinAddress = thread->GetBaselineStubEntry( 56004514f5e3Sopenharmony_ci BaselineStubCSigns::BaselineCallRuntimeDefineSendableClassPrefImm16Id16Id16Imm16V8); 56014514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeDefineSendableClassPrefImm16Id16Id16Imm16V8 Address: " 56024514f5e3Sopenharmony_ci << std::hex << builtinAddress; 56034514f5e3Sopenharmony_ci 56044514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 56054514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 56064514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 56074514f5e3Sopenharmony_ci parameters.emplace_back(methodId); 56084514f5e3Sopenharmony_ci parameters.emplace_back(literalId); 56094514f5e3Sopenharmony_ci parameters.emplace_back(length); 56104514f5e3Sopenharmony_ci parameters.emplace_back(v0); 56114514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 56124514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 56134514f5e3Sopenharmony_ci} 56144514f5e3Sopenharmony_ci 56154514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDSENDABLECLASS_PREF_IMM16) 56164514f5e3Sopenharmony_ci{ 56174514f5e3Sopenharmony_ci int16_t level = READ_INST_16_1(); 56184514f5e3Sopenharmony_ci auto *thread = vm->GetAssociatedJSThread(); 56194514f5e3Sopenharmony_ci Address builtinAddress = 56204514f5e3Sopenharmony_ci thread->GetBaselineStubEntry(BaselineStubCSigns::BaselineCallRuntimeLdSendableClassPrefImm16); 56214514f5e3Sopenharmony_ci LOG_INST() << " BaselineCallRuntimeLdSendableClassPrefImm16 Address: " << std::hex << builtinAddress; 56224514f5e3Sopenharmony_ci 56234514f5e3Sopenharmony_ci std::vector<BaselineParameter> parameters; 56244514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::GLUE); 56254514f5e3Sopenharmony_ci parameters.emplace_back(BaselineSpecialParameter::SP); 56264514f5e3Sopenharmony_ci parameters.emplace_back(level); 56274514f5e3Sopenharmony_ci GetBaselineAssembler().CallBuiltin(builtinAddress, parameters); 56284514f5e3Sopenharmony_ci GetBaselineAssembler().SaveResultIntoAcc(); 56294514f5e3Sopenharmony_ci} 56304514f5e3Sopenharmony_ci 56314514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDSENDABLEEXTERNALMODULEVAR_PREF_IMM8) 56324514f5e3Sopenharmony_ci{ 56334514f5e3Sopenharmony_ci (void)bytecodeArray; 56344514f5e3Sopenharmony_ci} 56354514f5e3Sopenharmony_ci 56364514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDELDSENDABLEEXTERNALMODULEVAR_PREF_IMM16) 56374514f5e3Sopenharmony_ci{ 56384514f5e3Sopenharmony_ci (void)bytecodeArray; 56394514f5e3Sopenharmony_ci} 56404514f5e3Sopenharmony_ci 56414514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_NEWSENDABLEENV_PREF_IMM8) 56424514f5e3Sopenharmony_ci{ 56434514f5e3Sopenharmony_ci (void)bytecodeArray; 56444514f5e3Sopenharmony_ci} 56454514f5e3Sopenharmony_ci 56464514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDENEWSENDABLEENV_PREF_IMM16) 56474514f5e3Sopenharmony_ci{ 56484514f5e3Sopenharmony_ci (void)bytecodeArray; 56494514f5e3Sopenharmony_ci} 56504514f5e3Sopenharmony_ci 56514514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_STSENDABLEVAR_PREF_IMM4_IMM4) 56524514f5e3Sopenharmony_ci{ 56534514f5e3Sopenharmony_ci (void)bytecodeArray; 56544514f5e3Sopenharmony_ci} 56554514f5e3Sopenharmony_ci 56564514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_STSENDABLEVAR_PREF_IMM8_IMM8) 56574514f5e3Sopenharmony_ci{ 56584514f5e3Sopenharmony_ci (void)bytecodeArray; 56594514f5e3Sopenharmony_ci} 56604514f5e3Sopenharmony_ci 56614514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDESTSENDABLEVAR_PREF_IMM16_IMM16) 56624514f5e3Sopenharmony_ci{ 56634514f5e3Sopenharmony_ci (void)bytecodeArray; 56644514f5e3Sopenharmony_ci} 56654514f5e3Sopenharmony_ci 56664514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDSENDABLEVAR_PREF_IMM4_IMM4) 56674514f5e3Sopenharmony_ci{ 56684514f5e3Sopenharmony_ci (void)bytecodeArray; 56694514f5e3Sopenharmony_ci} 56704514f5e3Sopenharmony_ci 56714514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDSENDABLEVAR_PREF_IMM8_IMM8) 56724514f5e3Sopenharmony_ci{ 56734514f5e3Sopenharmony_ci (void)bytecodeArray; 56744514f5e3Sopenharmony_ci} 56754514f5e3Sopenharmony_ci 56764514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDELDSENDABLEVAR_PREF_IMM16_IMM16) 56774514f5e3Sopenharmony_ci{ 56784514f5e3Sopenharmony_ci (void)bytecodeArray; 56794514f5e3Sopenharmony_ci} 56804514f5e3Sopenharmony_ci 56814514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDLAZYMODULEVAR_PREF_IMM8) 56824514f5e3Sopenharmony_ci{ 56834514f5e3Sopenharmony_ci (void)bytecodeArray; 56844514f5e3Sopenharmony_ci} 56854514f5e3Sopenharmony_ci 56864514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDELDLAZYMODULEVAR_PREF_IMM16) 56874514f5e3Sopenharmony_ci{ 56884514f5e3Sopenharmony_ci (void)bytecodeArray; 56894514f5e3Sopenharmony_ci} 56904514f5e3Sopenharmony_ci 56914514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_LDLAZYSENDABLEMODULEVAR_PREF_IMM8) 56924514f5e3Sopenharmony_ci{ 56934514f5e3Sopenharmony_ci (void)bytecodeArray; 56944514f5e3Sopenharmony_ci} 56954514f5e3Sopenharmony_ci 56964514f5e3Sopenharmony_ciBYTECODE_BASELINE_HANDLER_IMPLEMENT(CALLRUNTIME_WIDELDLAZYSENDABLEMODULEVAR_PREF_IMM16) 56974514f5e3Sopenharmony_ci{ 56984514f5e3Sopenharmony_ci (void)bytecodeArray; 56994514f5e3Sopenharmony_ci} 57004514f5e3Sopenharmony_ci#undef LOG_INST 57014514f5e3Sopenharmony_ci} // namespace panda::ecmascript::kungfu 5702