14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2021 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/call_signature.h" 174514f5e3Sopenharmony_ci#include "ecmascript/compiler/variable_type.h" 184514f5e3Sopenharmony_ci 194514f5e3Sopenharmony_ci#if defined(__clang__) 204514f5e3Sopenharmony_ci#pragma clang diagnostic push 214514f5e3Sopenharmony_ci#pragma clang diagnostic ignored "-Wshadow" 224514f5e3Sopenharmony_ci#pragma clang diagnostic ignored "-Wunused-parameter" 234514f5e3Sopenharmony_ci#elif defined(__GNUC__) 244514f5e3Sopenharmony_ci#pragma GCC diagnostic push 254514f5e3Sopenharmony_ci#pragma GCC diagnostic ignored "-Wshadow" 264514f5e3Sopenharmony_ci#pragma GCC diagnostic ignored "-Wunused-parameter" 274514f5e3Sopenharmony_ci#endif 284514f5e3Sopenharmony_ci 294514f5e3Sopenharmony_ci#include "llvm-c/Core.h" 304514f5e3Sopenharmony_ci#include "llvm/Support/Host.h" 314514f5e3Sopenharmony_ci 324514f5e3Sopenharmony_ci#if defined(__clang__) 334514f5e3Sopenharmony_ci#pragma clang diagnostic pop 344514f5e3Sopenharmony_ci#elif defined(__GNUC__) 354514f5e3Sopenharmony_ci#pragma GCC diagnostic pop 364514f5e3Sopenharmony_ci#endif 374514f5e3Sopenharmony_ci 384514f5e3Sopenharmony_cinamespace panda::ecmascript::kungfu { 394514f5e3Sopenharmony_ci#define BINARY_CALL_SIGNATURE(name) \ 404514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ \ 414514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 3, \ 424514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 434514f5e3Sopenharmony_ci *callSign = signature; \ 444514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ \ 454514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { \ 464514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 474514f5e3Sopenharmony_ci VariableType::JS_ANY(), \ 484514f5e3Sopenharmony_ci VariableType::JS_ANY(), \ 494514f5e3Sopenharmony_ci }; \ 504514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 514514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 524514f5e3Sopenharmony_ci 534514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Add) 544514f5e3Sopenharmony_ci{ 554514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Add) 564514f5e3Sopenharmony_ci} 574514f5e3Sopenharmony_ci 584514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Sub) 594514f5e3Sopenharmony_ci{ 604514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Sub) 614514f5e3Sopenharmony_ci} 624514f5e3Sopenharmony_ci 634514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Mul) 644514f5e3Sopenharmony_ci{ 654514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Mul) 664514f5e3Sopenharmony_ci} 674514f5e3Sopenharmony_ci 684514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Div) 694514f5e3Sopenharmony_ci{ 704514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Div) 714514f5e3Sopenharmony_ci} 724514f5e3Sopenharmony_ci 734514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Mod) 744514f5e3Sopenharmony_ci{ 754514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Mod) 764514f5e3Sopenharmony_ci} 774514f5e3Sopenharmony_ci 784514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Equal) 794514f5e3Sopenharmony_ci{ 804514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Equal) 814514f5e3Sopenharmony_ci} 824514f5e3Sopenharmony_ci 834514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NotEqual) 844514f5e3Sopenharmony_ci{ 854514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(NotEqual) 864514f5e3Sopenharmony_ci} 874514f5e3Sopenharmony_ci 884514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StrictEqual) 894514f5e3Sopenharmony_ci{ 904514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(StrictEqual) 914514f5e3Sopenharmony_ci} 924514f5e3Sopenharmony_ci 934514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StrictNotEqual) 944514f5e3Sopenharmony_ci{ 954514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(StrictNotEqual) 964514f5e3Sopenharmony_ci} 974514f5e3Sopenharmony_ci 984514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Less) 994514f5e3Sopenharmony_ci{ 1004514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Less) 1014514f5e3Sopenharmony_ci} 1024514f5e3Sopenharmony_ci 1034514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(LessEq) 1044514f5e3Sopenharmony_ci{ 1054514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(LessEq) 1064514f5e3Sopenharmony_ci} 1074514f5e3Sopenharmony_ci 1084514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Greater) 1094514f5e3Sopenharmony_ci{ 1104514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Greater) 1114514f5e3Sopenharmony_ci} 1124514f5e3Sopenharmony_ci 1134514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GreaterEq) 1144514f5e3Sopenharmony_ci{ 1154514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(GreaterEq) 1164514f5e3Sopenharmony_ci} 1174514f5e3Sopenharmony_ci 1184514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Shl) 1194514f5e3Sopenharmony_ci{ 1204514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Shl) 1214514f5e3Sopenharmony_ci} 1224514f5e3Sopenharmony_ci 1234514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Shr) 1244514f5e3Sopenharmony_ci{ 1254514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Shr) 1264514f5e3Sopenharmony_ci} 1274514f5e3Sopenharmony_ci 1284514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Ashr) 1294514f5e3Sopenharmony_ci{ 1304514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Ashr) 1314514f5e3Sopenharmony_ci} 1324514f5e3Sopenharmony_ci 1334514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(And) 1344514f5e3Sopenharmony_ci{ 1354514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(And) 1364514f5e3Sopenharmony_ci} 1374514f5e3Sopenharmony_ci 1384514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Or) 1394514f5e3Sopenharmony_ci{ 1404514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Or) 1414514f5e3Sopenharmony_ci} 1424514f5e3Sopenharmony_ci 1434514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Xor) 1444514f5e3Sopenharmony_ci{ 1454514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(Xor) 1464514f5e3Sopenharmony_ci} 1474514f5e3Sopenharmony_ci 1484514f5e3Sopenharmony_ci#ifndef NDEBUG 1494514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(MulGCTest) 1504514f5e3Sopenharmony_ci{ 1514514f5e3Sopenharmony_ci // 3 : 3 input parameters 1524514f5e3Sopenharmony_ci CallSignature MulGC("MulGCTest", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 1534514f5e3Sopenharmony_ci *callSign = MulGC; 1544514f5e3Sopenharmony_ci // 3 : 3 input parameters 1554514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 1564514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 1574514f5e3Sopenharmony_ci VariableType::INT64(), 1584514f5e3Sopenharmony_ci VariableType::INT64(), 1594514f5e3Sopenharmony_ci }; 1604514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 1614514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 1624514f5e3Sopenharmony_ci} 1634514f5e3Sopenharmony_ci#else 1644514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(MulGCTest) {} 1654514f5e3Sopenharmony_ci#endif 1664514f5e3Sopenharmony_ci 1674514f5e3Sopenharmony_ci#define UNARY_CALL_SIGNATURE(name) \ 1684514f5e3Sopenharmony_ci /* 2 : 2 input parameters */ \ 1694514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 2, \ 1704514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 1714514f5e3Sopenharmony_ci *callSign = signature; \ 1724514f5e3Sopenharmony_ci /* 2 : 2 input parameters */ \ 1734514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { \ 1744514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 1754514f5e3Sopenharmony_ci VariableType::JS_ANY(), \ 1764514f5e3Sopenharmony_ci }; \ 1774514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 1784514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 1794514f5e3Sopenharmony_ci 1804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Inc) 1814514f5e3Sopenharmony_ci{ 1824514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(Inc) 1834514f5e3Sopenharmony_ci} 1844514f5e3Sopenharmony_ci 1854514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Dec) 1864514f5e3Sopenharmony_ci{ 1874514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(Dec) 1884514f5e3Sopenharmony_ci} 1894514f5e3Sopenharmony_ci 1904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Neg) 1914514f5e3Sopenharmony_ci{ 1924514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(Neg) 1934514f5e3Sopenharmony_ci} 1944514f5e3Sopenharmony_ci 1954514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Not) 1964514f5e3Sopenharmony_ci{ 1974514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(Not) 1984514f5e3Sopenharmony_ci} 1994514f5e3Sopenharmony_ci 2004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ToBooleanTrue) 2014514f5e3Sopenharmony_ci{ 2024514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(ToBooleanTrue) 2034514f5e3Sopenharmony_ci} 2044514f5e3Sopenharmony_ci 2054514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ToBooleanFalse) 2064514f5e3Sopenharmony_ci{ 2074514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(ToBooleanFalse) 2084514f5e3Sopenharmony_ci} 2094514f5e3Sopenharmony_ci 2104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TypeOf) 2114514f5e3Sopenharmony_ci{ 2124514f5e3Sopenharmony_ci // 2 input parameters 2134514f5e3Sopenharmony_ci CallSignature TypeOf("TypeOf", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_POINTER()); 2144514f5e3Sopenharmony_ci *callSign = TypeOf; 2154514f5e3Sopenharmony_ci // 2 input parameters 2164514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 2174514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 2184514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ACC 2194514f5e3Sopenharmony_ci }; 2204514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 2214514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 2224514f5e3Sopenharmony_ci} 2234514f5e3Sopenharmony_ci 2244514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByName) 2254514f5e3Sopenharmony_ci{ 2264514f5e3Sopenharmony_ci // 6 : 6 input parameters 2274514f5e3Sopenharmony_ci CallSignature setPropertyByName("SetPropertyByName", 0, 6, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 2284514f5e3Sopenharmony_ci *callSign = setPropertyByName; 2294514f5e3Sopenharmony_ci // 6 : 6 input parameters 2304514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 2314514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 2324514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 2334514f5e3Sopenharmony_ci VariableType::INT64(), // key 2344514f5e3Sopenharmony_ci VariableType::JS_ANY(), // value 2354514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 2364514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 2374514f5e3Sopenharmony_ci }; 2384514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 2394514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 2404514f5e3Sopenharmony_ci} 2414514f5e3Sopenharmony_ci 2424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeprecatedSetPropertyByName) 2434514f5e3Sopenharmony_ci{ 2444514f5e3Sopenharmony_ci // 4 : 4 input parameters 2454514f5e3Sopenharmony_ci CallSignature setPropertyByName("DeprecatedSetPropertyByName", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 2464514f5e3Sopenharmony_ci VariableType::JS_ANY()); 2474514f5e3Sopenharmony_ci *callSign = setPropertyByName; 2484514f5e3Sopenharmony_ci // 4 : 4 input parameters 2494514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 2504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 2514514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 2524514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 2534514f5e3Sopenharmony_ci VariableType::JS_ANY() 2544514f5e3Sopenharmony_ci }; 2554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 2564514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 2574514f5e3Sopenharmony_ci} 2584514f5e3Sopenharmony_ci 2594514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByNameWithOwn) 2604514f5e3Sopenharmony_ci{ 2614514f5e3Sopenharmony_ci // 4 : 4 input parameters 2624514f5e3Sopenharmony_ci CallSignature setPropertyByNameWithOwn("SetPropertyByNameWithOwn", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 2634514f5e3Sopenharmony_ci VariableType::JS_ANY()); 2644514f5e3Sopenharmony_ci *callSign = setPropertyByNameWithOwn; 2654514f5e3Sopenharmony_ci // 4 : 4 input parameters 2664514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 2674514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 2684514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 2694514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 2704514f5e3Sopenharmony_ci VariableType::JS_ANY() 2714514f5e3Sopenharmony_ci }; 2724514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 2734514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 2744514f5e3Sopenharmony_ci} 2754514f5e3Sopenharmony_ci 2764514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByValue) 2774514f5e3Sopenharmony_ci{ 2784514f5e3Sopenharmony_ci // 6 : 6 input parameters 2794514f5e3Sopenharmony_ci CallSignature setPropertyByName("SetPropertyByValue", 0, 6, ArgumentsOrder::DEFAULT_ORDER, 2804514f5e3Sopenharmony_ci VariableType::JS_ANY()); 2814514f5e3Sopenharmony_ci *callSign = setPropertyByName; 2824514f5e3Sopenharmony_ci // 6 : 6 input parameters 2834514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 2844514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 2854514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // receiver 2864514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 2874514f5e3Sopenharmony_ci VariableType::JS_ANY(), // value 2884514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 2894514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 2904514f5e3Sopenharmony_ci }; 2914514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 2924514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 2934514f5e3Sopenharmony_ci} 2944514f5e3Sopenharmony_ci 2954514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Definefunc) 2964514f5e3Sopenharmony_ci{ 2974514f5e3Sopenharmony_ci // 6 : 6 input parameters 2984514f5e3Sopenharmony_ci CallSignature definefunc("Definefunc", 0, 6, ArgumentsOrder::DEFAULT_ORDER, 2994514f5e3Sopenharmony_ci VariableType::JS_ANY()); 3004514f5e3Sopenharmony_ci *callSign = definefunc; 3014514f5e3Sopenharmony_ci // 6 : 6 input parameters 3024514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 3034514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 3044514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 3054514f5e3Sopenharmony_ci VariableType::INT32(), // methodId 3064514f5e3Sopenharmony_ci VariableType::INT32(), // length 3074514f5e3Sopenharmony_ci VariableType::JS_ANY(), // lexEnv 3084514f5e3Sopenharmony_ci VariableType::INT32(), // slotId 3094514f5e3Sopenharmony_ci }; 3104514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3114514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3124514f5e3Sopenharmony_ci} 3134514f5e3Sopenharmony_ci 3144514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DefineField) 3154514f5e3Sopenharmony_ci{ 3164514f5e3Sopenharmony_ci // 4 : 4 input parameters 3174514f5e3Sopenharmony_ci CallSignature defineField("DefineField", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 3184514f5e3Sopenharmony_ci VariableType::JS_ANY()); 3194514f5e3Sopenharmony_ci *callSign = defineField; 3204514f5e3Sopenharmony_ci // 4 : 4 input parameters 3214514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 3224514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 3234514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 3244514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 3254514f5e3Sopenharmony_ci VariableType::JS_ANY(), // acc 3264514f5e3Sopenharmony_ci }; 3274514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3284514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3294514f5e3Sopenharmony_ci} 3304514f5e3Sopenharmony_ci 3314514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ConvertCharToInt32) 3324514f5e3Sopenharmony_ci{ 3334514f5e3Sopenharmony_ci // 2 : 2 input parameters 3344514f5e3Sopenharmony_ci CallSignature convertCharToInt32("ConvertCharToInt32", 0, 2, ArgumentsOrder::DEFAULT_ORDER, 3354514f5e3Sopenharmony_ci VariableType::INT32()); 3364514f5e3Sopenharmony_ci *callSign = convertCharToInt32; 3374514f5e3Sopenharmony_ci // 2 : 2 input parameters 3384514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 3394514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 3404514f5e3Sopenharmony_ci VariableType::INT32(), // charcode 3414514f5e3Sopenharmony_ci }; 3424514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3434514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3444514f5e3Sopenharmony_ci} 3454514f5e3Sopenharmony_ci 3464514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ConvertCharToDouble) 3474514f5e3Sopenharmony_ci{ 3484514f5e3Sopenharmony_ci // 2 : 2 input parameters 3494514f5e3Sopenharmony_ci CallSignature convertCharToDouble("ConvertCharToDouble", 0, 2, ArgumentsOrder::DEFAULT_ORDER, 3504514f5e3Sopenharmony_ci VariableType::FLOAT64()); 3514514f5e3Sopenharmony_ci *callSign = convertCharToDouble; 3524514f5e3Sopenharmony_ci // 2 : 2 input parameters 3534514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 3544514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 3554514f5e3Sopenharmony_ci VariableType::INT32(), // charcode 3564514f5e3Sopenharmony_ci }; 3574514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3584514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3594514f5e3Sopenharmony_ci} 3604514f5e3Sopenharmony_ci 3614514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeprecatedSetPropertyByValue) 3624514f5e3Sopenharmony_ci{ 3634514f5e3Sopenharmony_ci // 4 : 4 input parameters 3644514f5e3Sopenharmony_ci CallSignature setPropertyByName("DeprecatedSetPropertyByValue", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 3654514f5e3Sopenharmony_ci VariableType::JS_ANY()); 3664514f5e3Sopenharmony_ci *callSign = setPropertyByName; 3674514f5e3Sopenharmony_ci // 4 : 4 input parameters 3684514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 3694514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 3704514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 3714514f5e3Sopenharmony_ci VariableType::JS_ANY(), 3724514f5e3Sopenharmony_ci VariableType::JS_ANY() 3734514f5e3Sopenharmony_ci }; 3744514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3754514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3764514f5e3Sopenharmony_ci} 3774514f5e3Sopenharmony_ci 3784514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByValueWithOwn) 3794514f5e3Sopenharmony_ci{ 3804514f5e3Sopenharmony_ci // 4 : 4 input parameters 3814514f5e3Sopenharmony_ci CallSignature setPropertyByValueWithOwn("SetPropertyByValueWithOwn", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 3824514f5e3Sopenharmony_ci VariableType::JS_ANY()); 3834514f5e3Sopenharmony_ci *callSign = setPropertyByValueWithOwn; 3844514f5e3Sopenharmony_ci // 4 : 4 input parameters 3854514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 3864514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 3874514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 3884514f5e3Sopenharmony_ci VariableType::JS_ANY(), 3894514f5e3Sopenharmony_ci VariableType::JS_ANY() 3904514f5e3Sopenharmony_ci }; 3914514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 3924514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 3934514f5e3Sopenharmony_ci} 3944514f5e3Sopenharmony_ci 3954514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetPropertyByName) 3964514f5e3Sopenharmony_ci{ 3974514f5e3Sopenharmony_ci // 5 : 5 input parameters 3984514f5e3Sopenharmony_ci CallSignature getPropertyByName("GetPropertyByName", 0, 5, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 3994514f5e3Sopenharmony_ci *callSign = getPropertyByName; 4004514f5e3Sopenharmony_ci // 5 : 5 input parameters 4014514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 4024514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4034514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 4044514f5e3Sopenharmony_ci VariableType::INT64(), // key 4054514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 4064514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 4074514f5e3Sopenharmony_ci }; 4084514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4094514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4104514f5e3Sopenharmony_ci} 4114514f5e3Sopenharmony_ci 4124514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Instanceof) 4134514f5e3Sopenharmony_ci{ 4144514f5e3Sopenharmony_ci // 5 : 5 input parameters 4154514f5e3Sopenharmony_ci CallSignature instanceof("Instanceof", 0, 5, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 4164514f5e3Sopenharmony_ci *callSign = instanceof; 4174514f5e3Sopenharmony_ci // 5 : 5 input parameters 4184514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 4194514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4204514f5e3Sopenharmony_ci VariableType::JS_ANY(), // object 4214514f5e3Sopenharmony_ci VariableType::JS_ANY(), // target 4224514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 4234514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 4244514f5e3Sopenharmony_ci }; 4254514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4264514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4274514f5e3Sopenharmony_ci} 4284514f5e3Sopenharmony_ci 4294514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeprecatedGetPropertyByName) 4304514f5e3Sopenharmony_ci{ 4314514f5e3Sopenharmony_ci // 3 : 3 input parameters 4324514f5e3Sopenharmony_ci CallSignature getPropertyByName("DeprecatedGetPropertyByName", 0, 3, ArgumentsOrder::DEFAULT_ORDER, 4334514f5e3Sopenharmony_ci VariableType::JS_ANY()); 4344514f5e3Sopenharmony_ci *callSign = getPropertyByName; 4354514f5e3Sopenharmony_ci // 3 : 3 input parameters 4364514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 4374514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4384514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 4394514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // key 4404514f5e3Sopenharmony_ci }; 4414514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4424514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4434514f5e3Sopenharmony_ci} 4444514f5e3Sopenharmony_ci 4454514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryLdGlobalByName) 4464514f5e3Sopenharmony_ci{ 4474514f5e3Sopenharmony_ci // 4 : 4 input parameters 4484514f5e3Sopenharmony_ci CallSignature signature("TryLdGlobalByName", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 4494514f5e3Sopenharmony_ci *callSign = signature; 4504514f5e3Sopenharmony_ci // 4 : 4 input parameters 4514514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 4524514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4534514f5e3Sopenharmony_ci VariableType::INT64(), // key 4544514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 4554514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 4564514f5e3Sopenharmony_ci }; 4574514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4584514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4594514f5e3Sopenharmony_ci} 4604514f5e3Sopenharmony_ci 4614514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryStGlobalByName) 4624514f5e3Sopenharmony_ci{ 4634514f5e3Sopenharmony_ci // 5 : 5 input parameters 4644514f5e3Sopenharmony_ci CallSignature signature("TryStGlobalByName", 0, 5, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 4654514f5e3Sopenharmony_ci *callSign = signature; 4664514f5e3Sopenharmony_ci // 5 : 5 input parameters 4674514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 4684514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4694514f5e3Sopenharmony_ci VariableType::INT64(), // key 4704514f5e3Sopenharmony_ci VariableType::JS_ANY(), // value 4714514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 4724514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 4734514f5e3Sopenharmony_ci }; 4744514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4754514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4764514f5e3Sopenharmony_ci} 4774514f5e3Sopenharmony_ci 4784514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(LdGlobalVar) 4794514f5e3Sopenharmony_ci{ 4804514f5e3Sopenharmony_ci // 4 : 4 input parameters 4814514f5e3Sopenharmony_ci CallSignature signature("LdGlobalVar", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 4824514f5e3Sopenharmony_ci *callSign = signature; 4834514f5e3Sopenharmony_ci // 4 : 4 input parameters 4844514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 4854514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 4864514f5e3Sopenharmony_ci VariableType::INT64(), // key 4874514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 4884514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 4894514f5e3Sopenharmony_ci }; 4904514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 4914514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 4924514f5e3Sopenharmony_ci} 4934514f5e3Sopenharmony_ci 4944514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StGlobalVar) 4954514f5e3Sopenharmony_ci{ 4964514f5e3Sopenharmony_ci // 5 : 5 input parameters 4974514f5e3Sopenharmony_ci CallSignature signature("StGlobalVar", 0, 5, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 4984514f5e3Sopenharmony_ci *callSign = signature; 4994514f5e3Sopenharmony_ci // 5 : 5 input parameters 5004514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 5014514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 5024514f5e3Sopenharmony_ci VariableType::INT64(), // string id 5034514f5e3Sopenharmony_ci VariableType::JS_ANY(), // value 5044514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 5054514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 5064514f5e3Sopenharmony_ci }; 5074514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5084514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5094514f5e3Sopenharmony_ci} 5104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StOwnByValue) 5114514f5e3Sopenharmony_ci{ 5124514f5e3Sopenharmony_ci // 4 : 4 input parameters 5134514f5e3Sopenharmony_ci CallSignature signature("StOwnByValue", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5144514f5e3Sopenharmony_ci VariableType::JS_ANY()); 5154514f5e3Sopenharmony_ci *callSign = signature; 5164514f5e3Sopenharmony_ci // 4 : 4 input parameters 5174514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5184514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5194514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5204514f5e3Sopenharmony_ci VariableType::JS_ANY(), 5214514f5e3Sopenharmony_ci VariableType::JS_ANY() 5224514f5e3Sopenharmony_ci }; 5234514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5244514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5254514f5e3Sopenharmony_ci} 5264514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StOwnByIndex) 5274514f5e3Sopenharmony_ci{ 5284514f5e3Sopenharmony_ci // 4 : 4 input parameters 5294514f5e3Sopenharmony_ci CallSignature signature("StOwnByIndex", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5304514f5e3Sopenharmony_ci VariableType::JS_ANY()); // hole or undefined 5314514f5e3Sopenharmony_ci *callSign = signature; 5324514f5e3Sopenharmony_ci // 4 : 4 input parameters 5334514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5344514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5354514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5364514f5e3Sopenharmony_ci VariableType::INT32(), 5374514f5e3Sopenharmony_ci VariableType::JS_ANY() 5384514f5e3Sopenharmony_ci }; 5394514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5404514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5414514f5e3Sopenharmony_ci} 5424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StOwnByName) 5434514f5e3Sopenharmony_ci{ 5444514f5e3Sopenharmony_ci // 4 : 4 input parameters 5454514f5e3Sopenharmony_ci CallSignature signature("StOwnByName", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5464514f5e3Sopenharmony_ci VariableType::JS_ANY()); 5474514f5e3Sopenharmony_ci *callSign = signature; 5484514f5e3Sopenharmony_ci // 4 : 4 input parameters 5494514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5514514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5524514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5534514f5e3Sopenharmony_ci VariableType::JS_ANY() 5544514f5e3Sopenharmony_ci }; 5554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5564514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5574514f5e3Sopenharmony_ci} 5584514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StOwnByValueWithNameSet) 5594514f5e3Sopenharmony_ci{ 5604514f5e3Sopenharmony_ci // 4 : 4 input parameters 5614514f5e3Sopenharmony_ci CallSignature signature("StOwnByValueWithNameSet", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5624514f5e3Sopenharmony_ci VariableType::JS_ANY()); 5634514f5e3Sopenharmony_ci *callSign = signature; 5644514f5e3Sopenharmony_ci // 4 : 4 input parameters 5654514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5664514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5674514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5684514f5e3Sopenharmony_ci VariableType::JS_ANY(), 5694514f5e3Sopenharmony_ci VariableType::JS_ANY() 5704514f5e3Sopenharmony_ci }; 5714514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5724514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5734514f5e3Sopenharmony_ci} 5744514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StOwnByNameWithNameSet) 5754514f5e3Sopenharmony_ci{ 5764514f5e3Sopenharmony_ci // 4 : 4 input parameters 5774514f5e3Sopenharmony_ci CallSignature signature("StOwnByNameWithNameSet", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5784514f5e3Sopenharmony_ci VariableType::JS_ANY()); 5794514f5e3Sopenharmony_ci *callSign = signature; 5804514f5e3Sopenharmony_ci // 4 : 4 input parameters 5814514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5824514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5834514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5844514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 5854514f5e3Sopenharmony_ci VariableType::JS_ANY() 5864514f5e3Sopenharmony_ci }; 5874514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 5884514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 5894514f5e3Sopenharmony_ci} 5904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StObjByIndex) 5914514f5e3Sopenharmony_ci{ 5924514f5e3Sopenharmony_ci // 4 : 4 input parameters 5934514f5e3Sopenharmony_ci CallSignature signature("StObjByIndex", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 5944514f5e3Sopenharmony_ci VariableType::JS_ANY()); // hole or undefined 5954514f5e3Sopenharmony_ci *callSign = signature; 5964514f5e3Sopenharmony_ci // 4 : 4 input parameters 5974514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 5984514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 5994514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 6004514f5e3Sopenharmony_ci VariableType::INT32(), 6014514f5e3Sopenharmony_ci VariableType::JS_ANY() 6024514f5e3Sopenharmony_ci }; 6034514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6044514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6054514f5e3Sopenharmony_ci} 6064514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(LdObjByIndex) 6074514f5e3Sopenharmony_ci{ 6084514f5e3Sopenharmony_ci // 3 : 3 input parameters 6094514f5e3Sopenharmony_ci CallSignature signature("LdObjByIndex", 0, 3, ArgumentsOrder::DEFAULT_ORDER, 6104514f5e3Sopenharmony_ci VariableType::JS_ANY()); 6114514f5e3Sopenharmony_ci *callSign = signature; 6124514f5e3Sopenharmony_ci // 3 : 3 input parameters 6134514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 6144514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 6154514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 6164514f5e3Sopenharmony_ci VariableType::INT32(), // index 6174514f5e3Sopenharmony_ci }; 6184514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6194514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6204514f5e3Sopenharmony_ci} 6214514f5e3Sopenharmony_ci 6224514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetPropertyByIndex) 6234514f5e3Sopenharmony_ci{ 6244514f5e3Sopenharmony_ci // 3 : 3 input parameters 6254514f5e3Sopenharmony_ci CallSignature getPropertyByIndex("GetPropertyByIndex", 0, 3, ArgumentsOrder::DEFAULT_ORDER, 6264514f5e3Sopenharmony_ci VariableType::JS_ANY()); 6274514f5e3Sopenharmony_ci *callSign = getPropertyByIndex; 6284514f5e3Sopenharmony_ci // 3 : 3 input parameters 6294514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 6304514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 6314514f5e3Sopenharmony_ci VariableType::JS_ANY(), // receiver 6324514f5e3Sopenharmony_ci VariableType::INT32(), // index 6334514f5e3Sopenharmony_ci }; 6344514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6354514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6364514f5e3Sopenharmony_ci} 6374514f5e3Sopenharmony_ci 6384514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByIndex) 6394514f5e3Sopenharmony_ci{ 6404514f5e3Sopenharmony_ci // 4 : 4 input parameters 6414514f5e3Sopenharmony_ci CallSignature setPropertyByIndex("SetPropertyByIndex", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 6424514f5e3Sopenharmony_ci VariableType::JS_ANY()); // hole or undefined 6434514f5e3Sopenharmony_ci *callSign = setPropertyByIndex; 6444514f5e3Sopenharmony_ci // 4 : 4 input parameters 6454514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 6464514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 6474514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 6484514f5e3Sopenharmony_ci VariableType::INT32(), 6494514f5e3Sopenharmony_ci VariableType::JS_ANY() 6504514f5e3Sopenharmony_ci }; 6514514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6524514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6534514f5e3Sopenharmony_ci} 6544514f5e3Sopenharmony_ci 6554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetPropertyByIndexWithOwn) 6564514f5e3Sopenharmony_ci{ 6574514f5e3Sopenharmony_ci // 4 : 4 input parameters 6584514f5e3Sopenharmony_ci CallSignature setPropertyByIndexWithOwn("SetPropertyByIndexWithOwn", 0, 4, ArgumentsOrder::DEFAULT_ORDER, 6594514f5e3Sopenharmony_ci VariableType::JS_ANY()); // hole or undefined 6604514f5e3Sopenharmony_ci *callSign = setPropertyByIndexWithOwn; 6614514f5e3Sopenharmony_ci // 4 : 4 input parameters 6624514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 6634514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 6644514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 6654514f5e3Sopenharmony_ci VariableType::INT32(), 6664514f5e3Sopenharmony_ci VariableType::JS_ANY() 6674514f5e3Sopenharmony_ci }; 6684514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6694514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6704514f5e3Sopenharmony_ci} 6714514f5e3Sopenharmony_ci 6724514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetPropertyByValue) 6734514f5e3Sopenharmony_ci{ 6744514f5e3Sopenharmony_ci // 5 : 5 input parameters 6754514f5e3Sopenharmony_ci CallSignature getPropertyByValue("GetPropertyByValue", 0, 5, ArgumentsOrder::DEFAULT_ORDER, 6764514f5e3Sopenharmony_ci VariableType::JS_ANY()); 6774514f5e3Sopenharmony_ci *callSign = getPropertyByValue; 6784514f5e3Sopenharmony_ci // 5 : 5 input parameters 6794514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 6804514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 6814514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // receiver 6824514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 6834514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 6844514f5e3Sopenharmony_ci VariableType::INT32(), // slot id 6854514f5e3Sopenharmony_ci }; 6864514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 6874514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 6884514f5e3Sopenharmony_ci} 6894514f5e3Sopenharmony_ci 6904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeprecatedGetPropertyByValue) 6914514f5e3Sopenharmony_ci{ 6924514f5e3Sopenharmony_ci // 3 : 3 input parameters 6934514f5e3Sopenharmony_ci CallSignature getPropertyByValue("DeprecatedGetPropertyByValue", 0, 3, ArgumentsOrder::DEFAULT_ORDER, 6944514f5e3Sopenharmony_ci VariableType::JS_ANY()); 6954514f5e3Sopenharmony_ci *callSign = getPropertyByValue; 6964514f5e3Sopenharmony_ci // 3 : 3 input parameters 6974514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 6984514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 6994514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 7004514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7014514f5e3Sopenharmony_ci }; 7024514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 7034514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 7044514f5e3Sopenharmony_ci} 7054514f5e3Sopenharmony_ci 7064514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryLoadICByName) 7074514f5e3Sopenharmony_ci{ 7084514f5e3Sopenharmony_ci // 4 : 4 input parameters 7094514f5e3Sopenharmony_ci CallSignature tryLoadICByName("TryLoadICByName", 0, 4, 7104514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 7114514f5e3Sopenharmony_ci *callSign = tryLoadICByName; 7124514f5e3Sopenharmony_ci // 4 : 4 input parameters 7134514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 7144514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 7154514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7164514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7174514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7184514f5e3Sopenharmony_ci }; 7194514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 7204514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 7214514f5e3Sopenharmony_ci} 7224514f5e3Sopenharmony_ci 7234514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryLoadICByValue) 7244514f5e3Sopenharmony_ci{ 7254514f5e3Sopenharmony_ci // 5 : 5 input parameters 7264514f5e3Sopenharmony_ci CallSignature tryLoadICByValue("TryLoadICByValue", 0, 5, 7274514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 7284514f5e3Sopenharmony_ci *callSign = tryLoadICByValue; 7294514f5e3Sopenharmony_ci // 5 : 5 input parameters 7304514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 7314514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 7324514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7334514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7344514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7354514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7364514f5e3Sopenharmony_ci }; 7374514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 7384514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 7394514f5e3Sopenharmony_ci} 7404514f5e3Sopenharmony_ci 7414514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryStoreICByName) 7424514f5e3Sopenharmony_ci{ 7434514f5e3Sopenharmony_ci // 5 : 5 input parameters 7444514f5e3Sopenharmony_ci CallSignature tryStoreICByName("TryStoreICByName", 0, 5, 7454514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); // undefined or hole 7464514f5e3Sopenharmony_ci *callSign = tryStoreICByName; 7474514f5e3Sopenharmony_ci // 5 : 5 input parameters 7484514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 7494514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 7504514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 7514514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7524514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7534514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 7544514f5e3Sopenharmony_ci }; 7554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 7564514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 7574514f5e3Sopenharmony_ci} 7584514f5e3Sopenharmony_ci 7594514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TryStoreICByValue) 7604514f5e3Sopenharmony_ci{ 7614514f5e3Sopenharmony_ci // 6 : 6 input parameters 7624514f5e3Sopenharmony_ci CallSignature tryStoreICByValue("TryStoreICByValue", 0, 6, 7634514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); // undefined or hole 7644514f5e3Sopenharmony_ci *callSign = tryStoreICByValue; 7654514f5e3Sopenharmony_ci // 6 : 6 input parameters 7664514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 7674514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 7684514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 7694514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7704514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7714514f5e3Sopenharmony_ci VariableType::JS_ANY(), 7724514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 7734514f5e3Sopenharmony_ci }; 7744514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 7754514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 7764514f5e3Sopenharmony_ci} 7774514f5e3Sopenharmony_ci 7784514f5e3Sopenharmony_ci#define SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(name) \ 7794514f5e3Sopenharmony_ci /* 6 : 4 input parameters + 2 fake parameter */ \ 7804514f5e3Sopenharmony_ci CallSignature signature("#name", 0, 6, \ 7814514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); \ 7824514f5e3Sopenharmony_ci *callSign = signature; \ 7834514f5e3Sopenharmony_ci /* 6 : 4 input parameters + 2 fake parameter */ \ 7844514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { \ 7854514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 7864514f5e3Sopenharmony_ci VariableType::JS_POINTER(), \ 7874514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 7884514f5e3Sopenharmony_ci VariableType::JS_ANY(), \ 7894514f5e3Sopenharmony_ci VariableType::INT64(), \ 7904514f5e3Sopenharmony_ci VariableType::INT64(), \ 7914514f5e3Sopenharmony_ci }; \ 7924514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 7934514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); \ 7944514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); \ 7954514f5e3Sopenharmony_ci \ 7964514f5e3Sopenharmony_ci std::vector<CallSignature::ParamAttr> paramAttrs = { \ 7974514f5e3Sopenharmony_ci CallSignature::ParamAttr::NoAttr, \ 7984514f5e3Sopenharmony_ci CallSignature::ParamAttr::NoAttr, \ 7994514f5e3Sopenharmony_ci CallSignature::ParamAttr::NoAttr, \ 8004514f5e3Sopenharmony_ci CallSignature::ParamAttr::NoAttr, \ 8014514f5e3Sopenharmony_ci CallSignature::ParamAttr::Dead, \ 8024514f5e3Sopenharmony_ci CallSignature::ParamAttr::Dead, \ 8034514f5e3Sopenharmony_ci }; \ 8044514f5e3Sopenharmony_ci callSign->SetParamAttr(std::move(paramAttrs)) 8054514f5e3Sopenharmony_ci 8064514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetValueWithBarrier) 8074514f5e3Sopenharmony_ci{ 8084514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(SetValueWithBarrier); 8094514f5e3Sopenharmony_ci} 8104514f5e3Sopenharmony_ci 8114514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetNonSValueWithBarrier) 8124514f5e3Sopenharmony_ci{ 8134514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(SetNonSValueWithBarrier); 8144514f5e3Sopenharmony_ci} 8154514f5e3Sopenharmony_ci 8164514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetValueWithEdenBarrier) 8174514f5e3Sopenharmony_ci{ 8184514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(SetValueWithEdenBarrier); 8194514f5e3Sopenharmony_ci} 8204514f5e3Sopenharmony_ci 8214514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetNonSValueWithEdenBarrier) 8224514f5e3Sopenharmony_ci{ 8234514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(SetNonSValueWithEdenBarrier); 8244514f5e3Sopenharmony_ci} 8254514f5e3Sopenharmony_ci 8264514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetSValueWithBarrier) 8274514f5e3Sopenharmony_ci{ 8284514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(SetSValueWithBarrier); 8294514f5e3Sopenharmony_ci} 8304514f5e3Sopenharmony_ci 8314514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ASMFastWriteBarrier) 8324514f5e3Sopenharmony_ci{ 8334514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(ASMFastWriteBarrier); 8344514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::ASM_CALL_BARRIER_STUB); 8354514f5e3Sopenharmony_ci} 8364514f5e3Sopenharmony_ci 8374514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ASMWriteBarrierWithEden) 8384514f5e3Sopenharmony_ci{ 8394514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(ASMWriteBarrierWithEden); 8404514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::ASM_CALL_BARRIER_STUB); 8414514f5e3Sopenharmony_ci} 8424514f5e3Sopenharmony_ci 8434514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(VerifyBarrier) 8444514f5e3Sopenharmony_ci{ 8454514f5e3Sopenharmony_ci SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON(VerifyBarrier); 8464514f5e3Sopenharmony_ci} 8474514f5e3Sopenharmony_ci 8484514f5e3Sopenharmony_ci#undef SETVALUEBARRIER_CALL_ARGS_SIGNATURE_COMMON 8494514f5e3Sopenharmony_ci 8504514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NewThisObjectChecked) 8514514f5e3Sopenharmony_ci{ 8524514f5e3Sopenharmony_ci // 2 : 2 input parameters 8534514f5e3Sopenharmony_ci CallSignature signature("NewThisObjectChecked", 0, 2, 8544514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 8554514f5e3Sopenharmony_ci *callSign = signature; 8564514f5e3Sopenharmony_ci // 2 : 2 input parameters 8574514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 8584514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 8594514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ctor 8604514f5e3Sopenharmony_ci }; 8614514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 8624514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 8634514f5e3Sopenharmony_ci} 8644514f5e3Sopenharmony_ci 8654514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ConstructorCheck) 8664514f5e3Sopenharmony_ci{ 8674514f5e3Sopenharmony_ci // 4 : 4 input parameters 8684514f5e3Sopenharmony_ci CallSignature signature("ConstructorCheck", 0, 4, 8694514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 8704514f5e3Sopenharmony_ci *callSign = signature; 8714514f5e3Sopenharmony_ci // 4 : 4 input parameters 8724514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 8734514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 8744514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ctor 8754514f5e3Sopenharmony_ci VariableType::JS_ANY(), // result 8764514f5e3Sopenharmony_ci VariableType::JS_ANY(), // thisObj 8774514f5e3Sopenharmony_ci }; 8784514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 8794514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 8804514f5e3Sopenharmony_ci} 8814514f5e3Sopenharmony_ci 8824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateEmptyArray) 8834514f5e3Sopenharmony_ci{ 8844514f5e3Sopenharmony_ci // 5 : 5 input parameters 8854514f5e3Sopenharmony_ci CallSignature signature("CreateEmptyArray", 0, 5, 8864514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 8874514f5e3Sopenharmony_ci *callSign = signature; 8884514f5e3Sopenharmony_ci // 5 : 5 input parameters 8894514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 8904514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 8914514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 8924514f5e3Sopenharmony_ci VariableType::JS_ANY(), // pc 8934514f5e3Sopenharmony_ci VariableType::INT32(), // profileTypeInfo 8944514f5e3Sopenharmony_ci VariableType::INT32(), // slotId 8954514f5e3Sopenharmony_ci }; 8964514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 8974514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 8984514f5e3Sopenharmony_ci} 8994514f5e3Sopenharmony_ci 9004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateArrayWithBuffer) 9014514f5e3Sopenharmony_ci{ 9024514f5e3Sopenharmony_ci // 6 : 6 input parameters 9034514f5e3Sopenharmony_ci CallSignature signature("CreateArrayWithBuffer", 0, 6, 9044514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9054514f5e3Sopenharmony_ci *callSign = signature; 9064514f5e3Sopenharmony_ci // 6 : 6 input parameters 9074514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 9084514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9094514f5e3Sopenharmony_ci VariableType::INT32(), // index 9104514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsFunc 9114514f5e3Sopenharmony_ci VariableType::JS_ANY(), // pc 9124514f5e3Sopenharmony_ci VariableType::INT32(), // profileTypeInfo 9134514f5e3Sopenharmony_ci VariableType::INT32(), // slotId 9144514f5e3Sopenharmony_ci }; 9154514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9164514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9174514f5e3Sopenharmony_ci} 9184514f5e3Sopenharmony_ci 9194514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CopyRestArgs) 9204514f5e3Sopenharmony_ci{ 9214514f5e3Sopenharmony_ci // 5 : 5 input parameters 9224514f5e3Sopenharmony_ci CallSignature signature("CopyRestArgs", 0, 5, 9234514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9244514f5e3Sopenharmony_ci *callSign = signature; 9254514f5e3Sopenharmony_ci // 5 : 5 input parameters 9264514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 9274514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9284514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // actual argv 9294514f5e3Sopenharmony_ci VariableType::INT32(), // startIdx 9304514f5e3Sopenharmony_ci VariableType::INT32(), // numArgs 9314514f5e3Sopenharmony_ci VariableType::JS_ANY(), // actual argv Array 9324514f5e3Sopenharmony_ci }; 9334514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9344514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9354514f5e3Sopenharmony_ci} 9364514f5e3Sopenharmony_ci 9374514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NewJSObject) 9384514f5e3Sopenharmony_ci{ 9394514f5e3Sopenharmony_ci // 2 : 2 input parameters 9404514f5e3Sopenharmony_ci CallSignature signature("NewJSObject", 0, 2, 9414514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9424514f5e3Sopenharmony_ci *callSign = signature; 9434514f5e3Sopenharmony_ci // 2 : 2 input parameters 9444514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 9454514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9464514f5e3Sopenharmony_ci VariableType::JS_ANY(), // hclass 9474514f5e3Sopenharmony_ci }; 9484514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9494514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9504514f5e3Sopenharmony_ci} 9514514f5e3Sopenharmony_ci 9524514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NewLexicalEnv) 9534514f5e3Sopenharmony_ci{ 9544514f5e3Sopenharmony_ci // 3 : 3 input parameters 9554514f5e3Sopenharmony_ci CallSignature signature("NewLexicalEnv", 0, 3, 9564514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9574514f5e3Sopenharmony_ci *callSign = signature; 9584514f5e3Sopenharmony_ci // 3 : 3 input parameters 9594514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 9604514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9614514f5e3Sopenharmony_ci VariableType::JS_ANY(), // parent 9624514f5e3Sopenharmony_ci VariableType::INT32(), // numArgs 9634514f5e3Sopenharmony_ci }; 9644514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9654514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9664514f5e3Sopenharmony_ci} 9674514f5e3Sopenharmony_ci 9684514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetUnmappedArgs) 9694514f5e3Sopenharmony_ci{ 9704514f5e3Sopenharmony_ci // 4 : 4 input parameters 9714514f5e3Sopenharmony_ci CallSignature signature("GetUnmappedArgs", 0, 4, 9724514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9734514f5e3Sopenharmony_ci *callSign = signature; 9744514f5e3Sopenharmony_ci // 4 : 4 input parameters 9754514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 9764514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9774514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // actual argv 9784514f5e3Sopenharmony_ci VariableType::INT32(), // numArgs 9794514f5e3Sopenharmony_ci VariableType::JS_ANY(), // actual argv Array 9804514f5e3Sopenharmony_ci }; 9814514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9824514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9834514f5e3Sopenharmony_ci} 9844514f5e3Sopenharmony_ci 9854514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetCallSpreadArgs) 9864514f5e3Sopenharmony_ci{ 9874514f5e3Sopenharmony_ci // 2 : 2 input parameters 9884514f5e3Sopenharmony_ci CallSignature signature("GetCallSpreadArgs", 0, 2, 9894514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 9904514f5e3Sopenharmony_ci *callSign = signature; 9914514f5e3Sopenharmony_ci // 2 : 2 input parameters 9924514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 9934514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 9944514f5e3Sopenharmony_ci VariableType::JS_ANY(), // array 9954514f5e3Sopenharmony_ci }; 9964514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 9974514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 9984514f5e3Sopenharmony_ci} 9994514f5e3Sopenharmony_ci 10004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetTaggedArrayPtrTest) 10014514f5e3Sopenharmony_ci{ 10024514f5e3Sopenharmony_ci // 2 : 2 input parameters 10034514f5e3Sopenharmony_ci CallSignature getTaggedArrayPtr("GetTaggedArrayPtrTest", 0, 2, ArgumentsOrder::DEFAULT_ORDER, 10044514f5e3Sopenharmony_ci VariableType::JS_POINTER()); 10054514f5e3Sopenharmony_ci *callSign = getTaggedArrayPtr; 10064514f5e3Sopenharmony_ci // 2 : 2 input parameters 10074514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 10084514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10094514f5e3Sopenharmony_ci VariableType::JS_ANY(), 10104514f5e3Sopenharmony_ci }; 10114514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 10124514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 10134514f5e3Sopenharmony_ci} 10144514f5e3Sopenharmony_ci 10154514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Builtins) 10164514f5e3Sopenharmony_ci{ 10174514f5e3Sopenharmony_ci // 9 : 9 input parameters 10184514f5e3Sopenharmony_ci CallSignature builtins("Builtins", 0, 9, 10194514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 10204514f5e3Sopenharmony_ci *callSign = builtins; 10214514f5e3Sopenharmony_ci std::array<VariableType, 9> params = { // 9 : 9 input parameters 10224514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 10234514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // native code 10244514f5e3Sopenharmony_ci VariableType::JS_ANY(), // func 10254514f5e3Sopenharmony_ci VariableType::JS_ANY(), // new target 10264514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 10274514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argc 10284514f5e3Sopenharmony_ci VariableType::JS_ANY(), // arg0 10294514f5e3Sopenharmony_ci VariableType::JS_ANY(), // arg1 10304514f5e3Sopenharmony_ci VariableType::JS_ANY(), // arg2 10314514f5e3Sopenharmony_ci }; 10324514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 10334514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 10344514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::BUILTINS_STUB); 10354514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 10364514f5e3Sopenharmony_ci} 10374514f5e3Sopenharmony_ci 10384514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(BuiltinsWithArgv) 10394514f5e3Sopenharmony_ci{ 10404514f5e3Sopenharmony_ci // 7 : 7 input parameters 10414514f5e3Sopenharmony_ci CallSignature builtinsWtihArgv("Builtins", 0, 7, 10424514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 10434514f5e3Sopenharmony_ci *callSign = builtinsWtihArgv; 10444514f5e3Sopenharmony_ci std::array<VariableType, 7> params = { // 7 : 7 input parameters 10454514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 10464514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // nativeCode 10474514f5e3Sopenharmony_ci VariableType::JS_ANY(), // func 10484514f5e3Sopenharmony_ci VariableType::JS_ANY(), // new target 10494514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 10504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argc 10514514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 10524514f5e3Sopenharmony_ci }; 10534514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 10544514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::BUILTINS_WITH_ARGV_STUB); 10554514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 10564514f5e3Sopenharmony_ci} 10574514f5e3Sopenharmony_ci 10584514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(BytecodeHandler) 10594514f5e3Sopenharmony_ci{ 10604514f5e3Sopenharmony_ci // 7 : 7 input parameters 10614514f5e3Sopenharmony_ci CallSignature bytecodeHandler("BytecodeHandler", 0, 7, 10624514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 10634514f5e3Sopenharmony_ci *callSign = bytecodeHandler; 10644514f5e3Sopenharmony_ci // 7 : 7 input parameters 10654514f5e3Sopenharmony_ci std::array<VariableType, 7> params = { 10664514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10674514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10684514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10694514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 10704514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 10714514f5e3Sopenharmony_ci VariableType::JS_ANY(), 10724514f5e3Sopenharmony_ci VariableType::INT32(), 10734514f5e3Sopenharmony_ci }; 10744514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 10754514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::BYTECODE_HANDLER); 10764514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 10774514f5e3Sopenharmony_ci} 10784514f5e3Sopenharmony_ci 10794514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(BytecodeDebuggerHandler) 10804514f5e3Sopenharmony_ci{ 10814514f5e3Sopenharmony_ci // 7 : 7 input parameters 10824514f5e3Sopenharmony_ci CallSignature bytecodeHandler("BytecodeDebuggerHandler", 0, 7, 10834514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 10844514f5e3Sopenharmony_ci *callSign = bytecodeHandler; 10854514f5e3Sopenharmony_ci // 7 : 7 input parameters 10864514f5e3Sopenharmony_ci std::array<VariableType, 7> params = { VariableType::NATIVE_POINTER(), 10874514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10884514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 10894514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 10904514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 10914514f5e3Sopenharmony_ci VariableType::JS_ANY(), 10924514f5e3Sopenharmony_ci VariableType::INT32() }; 10934514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 10944514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::BYTECODE_DEBUGGER_HANDLER); 10954514f5e3Sopenharmony_ci} 10964514f5e3Sopenharmony_ci 10974514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRuntime) 10984514f5e3Sopenharmony_ci{ 10994514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ 11004514f5e3Sopenharmony_ci CallSignature runtimeCallTrampoline("CallRuntime", 0, 3, 11014514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 11024514f5e3Sopenharmony_ci *callSign = runtimeCallTrampoline; 11034514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ 11044514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 11054514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 11064514f5e3Sopenharmony_ci VariableType::INT64(), 11074514f5e3Sopenharmony_ci VariableType::INT64(), 11084514f5e3Sopenharmony_ci }; 11094514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 11104514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 11114514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 11124514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 11134514f5e3Sopenharmony_ci} 11144514f5e3Sopenharmony_ci 11154514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(AsmInterpreterEntry) 11164514f5e3Sopenharmony_ci{ 11174514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ 11184514f5e3Sopenharmony_ci CallSignature asmInterpreterEntry("AsmInterpreterEntry", 0, 3, 11194514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 11204514f5e3Sopenharmony_ci *callSign = asmInterpreterEntry; 11214514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ 11224514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 11234514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 11244514f5e3Sopenharmony_ci VariableType::INT32(), // argc 11254514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 11264514f5e3Sopenharmony_ci }; 11274514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 11284514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 11294514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 11304514f5e3Sopenharmony_ci} 11314514f5e3Sopenharmony_ci 11324514f5e3Sopenharmony_ci#define BASELINE_CALL_ARGS_SIGNATURE_COMMON(name) \ 11334514f5e3Sopenharmony_ci /* 1 : 1 input parameters */ \ 11344514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 1, \ 11354514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 11364514f5e3Sopenharmony_ci *callSign = signature; \ 11374514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { /* 1: 1 input parameters */ \ 11384514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 11394514f5e3Sopenharmony_ci }; \ 11404514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); \ 11414514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 11424514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); \ 11434514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 11444514f5e3Sopenharmony_ci 11454514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg0AndCheckToBaseline) 11464514f5e3Sopenharmony_ci{ 11474514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg0AndCheckToBaseline) 11484514f5e3Sopenharmony_ci} 11494514f5e3Sopenharmony_ci 11504514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg1AndCheckToBaseline) 11514514f5e3Sopenharmony_ci{ 11524514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg1AndCheckToBaseline) 11534514f5e3Sopenharmony_ci} 11544514f5e3Sopenharmony_ci 11554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs2AndCheckToBaseline) 11564514f5e3Sopenharmony_ci{ 11574514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs2AndCheckToBaseline) 11584514f5e3Sopenharmony_ci} 11594514f5e3Sopenharmony_ci 11604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs3AndCheckToBaseline) 11614514f5e3Sopenharmony_ci{ 11624514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs3AndCheckToBaseline) 11634514f5e3Sopenharmony_ci} 11644514f5e3Sopenharmony_ci 11654514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg0AndCheckToBaseline) 11664514f5e3Sopenharmony_ci{ 11674514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg0AndCheckToBaseline) 11684514f5e3Sopenharmony_ci} 11694514f5e3Sopenharmony_ci 11704514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg1AndCheckToBaseline) 11714514f5e3Sopenharmony_ci{ 11724514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg1AndCheckToBaseline) 11734514f5e3Sopenharmony_ci} 11744514f5e3Sopenharmony_ci 11754514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs2AndCheckToBaseline) 11764514f5e3Sopenharmony_ci{ 11774514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs2AndCheckToBaseline) 11784514f5e3Sopenharmony_ci} 11794514f5e3Sopenharmony_ci 11804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs3AndCheckToBaseline) 11814514f5e3Sopenharmony_ci{ 11824514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs3AndCheckToBaseline) 11834514f5e3Sopenharmony_ci} 11844514f5e3Sopenharmony_ci 11854514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRangeAndCheckToBaseline) 11864514f5e3Sopenharmony_ci{ 11874514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallRangeAndCheckToBaseline) 11884514f5e3Sopenharmony_ci} 11894514f5e3Sopenharmony_ci 11904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallNewAndCheckToBaseline) 11914514f5e3Sopenharmony_ci{ 11924514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallNewAndCheckToBaseline) 11934514f5e3Sopenharmony_ci} 11944514f5e3Sopenharmony_ci 11954514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SuperCallAndCheckToBaseline) 11964514f5e3Sopenharmony_ci{ 11974514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(SuperCallAndCheckToBaseline) 11984514f5e3Sopenharmony_ci} 11994514f5e3Sopenharmony_ci 12004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisRangeAndCheckToBaseline) 12014514f5e3Sopenharmony_ci{ 12024514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisRangeAndCheckToBaseline) 12034514f5e3Sopenharmony_ci} 12044514f5e3Sopenharmony_ci 12054514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg0AndDispatchFromBaseline) 12064514f5e3Sopenharmony_ci{ 12074514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg0AndDispatchFromBaseline) 12084514f5e3Sopenharmony_ci} 12094514f5e3Sopenharmony_ci 12104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg1AndDispatchFromBaseline) 12114514f5e3Sopenharmony_ci{ 12124514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg1AndDispatchFromBaseline) 12134514f5e3Sopenharmony_ci} 12144514f5e3Sopenharmony_ci 12154514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs2AndDispatchFromBaseline) 12164514f5e3Sopenharmony_ci{ 12174514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs2AndDispatchFromBaseline) 12184514f5e3Sopenharmony_ci} 12194514f5e3Sopenharmony_ci 12204514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs3AndDispatchFromBaseline) 12214514f5e3Sopenharmony_ci{ 12224514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs3AndDispatchFromBaseline) 12234514f5e3Sopenharmony_ci} 12244514f5e3Sopenharmony_ci 12254514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg0AndDispatchFromBaseline) 12264514f5e3Sopenharmony_ci{ 12274514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg0AndDispatchFromBaseline) 12284514f5e3Sopenharmony_ci} 12294514f5e3Sopenharmony_ci 12304514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg1AndDispatchFromBaseline) 12314514f5e3Sopenharmony_ci{ 12324514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg1AndDispatchFromBaseline) 12334514f5e3Sopenharmony_ci} 12344514f5e3Sopenharmony_ci 12354514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs2AndDispatchFromBaseline) 12364514f5e3Sopenharmony_ci{ 12374514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs2AndDispatchFromBaseline) 12384514f5e3Sopenharmony_ci} 12394514f5e3Sopenharmony_ci 12404514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs3AndDispatchFromBaseline) 12414514f5e3Sopenharmony_ci{ 12424514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs3AndDispatchFromBaseline) 12434514f5e3Sopenharmony_ci} 12444514f5e3Sopenharmony_ci 12454514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRangeAndDispatchFromBaseline) 12464514f5e3Sopenharmony_ci{ 12474514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallRangeAndDispatchFromBaseline) 12484514f5e3Sopenharmony_ci} 12494514f5e3Sopenharmony_ci 12504514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallNewAndDispatchFromBaseline) 12514514f5e3Sopenharmony_ci{ 12524514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallNewAndDispatchFromBaseline) 12534514f5e3Sopenharmony_ci} 12544514f5e3Sopenharmony_ci 12554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SuperCallAndDispatchFromBaseline) 12564514f5e3Sopenharmony_ci{ 12574514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(SuperCallAndDispatchFromBaseline) 12584514f5e3Sopenharmony_ci} 12594514f5e3Sopenharmony_ci 12604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisRangeAndDispatchFromBaseline) 12614514f5e3Sopenharmony_ci{ 12624514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisRangeAndDispatchFromBaseline) 12634514f5e3Sopenharmony_ci} 12644514f5e3Sopenharmony_ci 12654514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg0AndCheckToBaselineFromBaseline) 12664514f5e3Sopenharmony_ci{ 12674514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg0AndCheckToBaselineFromBaseline) 12684514f5e3Sopenharmony_ci} 12694514f5e3Sopenharmony_ci 12704514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg1AndCheckToBaselineFromBaseline) 12714514f5e3Sopenharmony_ci{ 12724514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArg1AndCheckToBaselineFromBaseline) 12734514f5e3Sopenharmony_ci} 12744514f5e3Sopenharmony_ci 12754514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs2AndCheckToBaselineFromBaseline) 12764514f5e3Sopenharmony_ci{ 12774514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs2AndCheckToBaselineFromBaseline) 12784514f5e3Sopenharmony_ci} 12794514f5e3Sopenharmony_ci 12804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs3AndCheckToBaselineFromBaseline) 12814514f5e3Sopenharmony_ci{ 12824514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallArgs3AndCheckToBaselineFromBaseline) 12834514f5e3Sopenharmony_ci} 12844514f5e3Sopenharmony_ci 12854514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg0AndCheckToBaselineFromBaseline) 12864514f5e3Sopenharmony_ci{ 12874514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg0AndCheckToBaselineFromBaseline) 12884514f5e3Sopenharmony_ci} 12894514f5e3Sopenharmony_ci 12904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArg1AndCheckToBaselineFromBaseline) 12914514f5e3Sopenharmony_ci{ 12924514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArg1AndCheckToBaselineFromBaseline) 12934514f5e3Sopenharmony_ci} 12944514f5e3Sopenharmony_ci 12954514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs2AndCheckToBaselineFromBaseline) 12964514f5e3Sopenharmony_ci{ 12974514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs2AndCheckToBaselineFromBaseline) 12984514f5e3Sopenharmony_ci} 12994514f5e3Sopenharmony_ci 13004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisArgs3AndCheckToBaselineFromBaseline) 13014514f5e3Sopenharmony_ci{ 13024514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisArgs3AndCheckToBaselineFromBaseline) 13034514f5e3Sopenharmony_ci} 13044514f5e3Sopenharmony_ci 13054514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRangeAndCheckToBaselineFromBaseline) 13064514f5e3Sopenharmony_ci{ 13074514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallRangeAndCheckToBaselineFromBaseline) 13084514f5e3Sopenharmony_ci} 13094514f5e3Sopenharmony_ci 13104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallNewAndCheckToBaselineFromBaseline) 13114514f5e3Sopenharmony_ci{ 13124514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallNewAndCheckToBaselineFromBaseline) 13134514f5e3Sopenharmony_ci} 13144514f5e3Sopenharmony_ci 13154514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SuperCallAndCheckToBaselineFromBaseline) 13164514f5e3Sopenharmony_ci{ 13174514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(SuperCallAndCheckToBaselineFromBaseline) 13184514f5e3Sopenharmony_ci} 13194514f5e3Sopenharmony_ci 13204514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisRangeAndCheckToBaselineFromBaseline) 13214514f5e3Sopenharmony_ci{ 13224514f5e3Sopenharmony_ci BASELINE_CALL_ARGS_SIGNATURE_COMMON(CallThisRangeAndCheckToBaselineFromBaseline) 13234514f5e3Sopenharmony_ci} 13244514f5e3Sopenharmony_ci 13254514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetBaselineBuiltinFp) 13264514f5e3Sopenharmony_ci{ 13274514f5e3Sopenharmony_ci /* 1 : 1 input parameters */ 13284514f5e3Sopenharmony_ci CallSignature getBaselineBuiltinFp("GetBaselineBuiltinFp", 0, 1, 13294514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::NATIVE_POINTER()); 13304514f5e3Sopenharmony_ci *callSign = getBaselineBuiltinFp; 13314514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { /* 1 : 1 input parameters */ 13324514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 13334514f5e3Sopenharmony_ci }; 13344514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 13354514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 13364514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 13374514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 13384514f5e3Sopenharmony_ci} 13394514f5e3Sopenharmony_ci 13404514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GeneratorReEnterAsmInterp) 13414514f5e3Sopenharmony_ci{ 13424514f5e3Sopenharmony_ci /* 2 : 2 input parameters */ 13434514f5e3Sopenharmony_ci CallSignature generatorReEnterAsmInterp("GeneratorReEnterAsmInterp", 0, 2, 13444514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 13454514f5e3Sopenharmony_ci *callSign = generatorReEnterAsmInterp; 13464514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { /* 2 : 2 input parameters */ 13474514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 13484514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // context 13494514f5e3Sopenharmony_ci }; 13504514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 13514514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 13524514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 13534514f5e3Sopenharmony_ci} 13544514f5e3Sopenharmony_ci 13554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRuntimeWithArgv) 13564514f5e3Sopenharmony_ci{ 13574514f5e3Sopenharmony_ci /* 4 : 4 input parameters */ 13584514f5e3Sopenharmony_ci CallSignature runtimeCallTrampoline("CallRuntimeWithArgv", 0, 4, 13594514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 13604514f5e3Sopenharmony_ci *callSign = runtimeCallTrampoline; 13614514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { /* 4 : 4 input parameters */ 13624514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 13634514f5e3Sopenharmony_ci VariableType::INT64(), // runtimeId 13644514f5e3Sopenharmony_ci VariableType::INT64(), // argc 13654514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 13664514f5e3Sopenharmony_ci }; 13674514f5e3Sopenharmony_ci callSign->SetVariadicArgs(false); 13684514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 13694514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_VARARGS); 13704514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 13714514f5e3Sopenharmony_ci} 13724514f5e3Sopenharmony_ci 13734514f5e3Sopenharmony_ci#define AOT_CALL_SIGNATURE(name) \ 13744514f5e3Sopenharmony_ci /* 6 : 6 input parameters */ \ 13754514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 6, \ 13764514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 13774514f5e3Sopenharmony_ci *callSign = signature; \ 13784514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { /* 6 : 6 input parameters */ \ 13794514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), /* glue */ \ 13804514f5e3Sopenharmony_ci VariableType::INT64(), /* actual argC */ \ 13814514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), /* actual argV */ \ 13824514f5e3Sopenharmony_ci VariableType::JS_ANY(), /* call target */ \ 13834514f5e3Sopenharmony_ci VariableType::JS_ANY(), /* new target */ \ 13844514f5e3Sopenharmony_ci VariableType::JS_ANY(), /* thisobj */ \ 13854514f5e3Sopenharmony_ci }; \ 13864514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); \ 13874514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 13884514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::WebKitJSCallConv); 13894514f5e3Sopenharmony_ci 13904514f5e3Sopenharmony_ci#define FAST_AOT_CALL_SIGNATURE(name) \ 13914514f5e3Sopenharmony_ci /* 3 : 3 input parameters */ \ 13924514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 3, \ 13934514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 13944514f5e3Sopenharmony_ci *callSign = signature; \ 13954514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { /* 3 : 3 input parameters */ \ 13964514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), /* glue */ \ 13974514f5e3Sopenharmony_ci VariableType::JS_ANY(), /* call target */ \ 13984514f5e3Sopenharmony_ci VariableType::JS_ANY(), /* thisobj */ \ 13994514f5e3Sopenharmony_ci }; \ 14004514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); \ 14014514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 14024514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 14034514f5e3Sopenharmony_ci 14044514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(OptimizedCallAndPushArgv) 14054514f5e3Sopenharmony_ci{ 14064514f5e3Sopenharmony_ci AOT_CALL_SIGNATURE(OptimizedCallAndPushArgv) 14074514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14084514f5e3Sopenharmony_ci} 14094514f5e3Sopenharmony_ci 14104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(OptimizedFastCallAndPushArgv) 14114514f5e3Sopenharmony_ci{ 14124514f5e3Sopenharmony_ci /* 6 : 6 input parameters */ 14134514f5e3Sopenharmony_ci CallSignature optimizedFastCallAndPushArgv("OptimizedFastCallAndPushArgv", 0, 6, 14144514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 14154514f5e3Sopenharmony_ci *callSign = optimizedFastCallAndPushArgv; 14164514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { /* 6 : 6 input parameters */ 14174514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 14184514f5e3Sopenharmony_ci VariableType::INT64(), // actual argC 14194514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // actual argV 14204514f5e3Sopenharmony_ci VariableType::JS_ANY(), // call target 14214514f5e3Sopenharmony_ci VariableType::JS_ANY(), // new target 14224514f5e3Sopenharmony_ci VariableType::JS_ANY(), // thisobj 14234514f5e3Sopenharmony_ci }; 14244514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 14254514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 14264514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14274514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 14284514f5e3Sopenharmony_ci} 14294514f5e3Sopenharmony_ci 14304514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSCall) 14314514f5e3Sopenharmony_ci{ 14324514f5e3Sopenharmony_ci AOT_CALL_SIGNATURE(JSCall) 14334514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14344514f5e3Sopenharmony_ci} 14354514f5e3Sopenharmony_ci 14364514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSOptimizedCall) 14374514f5e3Sopenharmony_ci{ 14384514f5e3Sopenharmony_ci AOT_CALL_SIGNATURE(JSOptimizedCall) 14394514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::OPTIMIZED_STUB); 14404514f5e3Sopenharmony_ci} 14414514f5e3Sopenharmony_ci 14424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSCallNew) 14434514f5e3Sopenharmony_ci{ 14444514f5e3Sopenharmony_ci AOT_CALL_SIGNATURE(JSCallNew) 14454514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14464514f5e3Sopenharmony_ci} 14474514f5e3Sopenharmony_ci 14484514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSOptimizedFastCall) 14494514f5e3Sopenharmony_ci{ 14504514f5e3Sopenharmony_ci FAST_AOT_CALL_SIGNATURE(JSOptimizedFastCall) 14514514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::OPTIMIZED_FAST_CALL_STUB); 14524514f5e3Sopenharmony_ci} 14534514f5e3Sopenharmony_ci 14544514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(AOTCallToAsmInterBridge) 14554514f5e3Sopenharmony_ci{ 14564514f5e3Sopenharmony_ci AOT_CALL_SIGNATURE(AOTCallToAsmInterBridge) 14574514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14584514f5e3Sopenharmony_ci} 14594514f5e3Sopenharmony_ci 14604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FastCallToAsmInterBridge) 14614514f5e3Sopenharmony_ci{ 14624514f5e3Sopenharmony_ci FAST_AOT_CALL_SIGNATURE(FastCallToAsmInterBridge) 14634514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14644514f5e3Sopenharmony_ci} 14654514f5e3Sopenharmony_ci 14664514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSProxyCallInternalWithArgV) 14674514f5e3Sopenharmony_ci{ 14684514f5e3Sopenharmony_ci // 2 : 2 input parameters 14694514f5e3Sopenharmony_ci CallSignature jSProxyCallInternalWithArgV("JSProxyCallInternalWithArgV", 0, 2, 14704514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 14714514f5e3Sopenharmony_ci *callSign = jSProxyCallInternalWithArgV; 14724514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 14734514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 14744514f5e3Sopenharmony_ci VariableType::JS_ANY(), // call target 14754514f5e3Sopenharmony_ci }; 14764514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 14774514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14784514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 14794514f5e3Sopenharmony_ci callSign->SetTailCall(true); 14804514f5e3Sopenharmony_ci} 14814514f5e3Sopenharmony_ci 14824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSFunctionEntry) 14834514f5e3Sopenharmony_ci{ 14844514f5e3Sopenharmony_ci // 5 : 5 input parameters 14854514f5e3Sopenharmony_ci CallSignature jsCallFunctionEntry("JSFunctionEntry", 0, 5, 14864514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 14874514f5e3Sopenharmony_ci *callSign = jsCallFunctionEntry; 14884514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { // 5 : 5 input parameters 14894514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 14904514f5e3Sopenharmony_ci VariableType::INT64(), // argc 14914514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 14924514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // prevFp 14934514f5e3Sopenharmony_ci VariableType::BOOL(), // isNew 14944514f5e3Sopenharmony_ci }; 14954514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 14964514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 14974514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 14984514f5e3Sopenharmony_ci} 14994514f5e3Sopenharmony_ci 15004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(OptimizedFastCallEntry) 15014514f5e3Sopenharmony_ci{ 15024514f5e3Sopenharmony_ci // 4 : 4 input parameters 15034514f5e3Sopenharmony_ci CallSignature optimizedFastCallEntry("OptimizedFastCallEntry", 0, 4, 15044514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 15054514f5e3Sopenharmony_ci *callSign = optimizedFastCallEntry; 15064514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { // 4 : 4 input parameters 15074514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 15084514f5e3Sopenharmony_ci VariableType::INT64(), // argc 15094514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 15104514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // prevFp 15114514f5e3Sopenharmony_ci }; 15124514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 15134514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 15144514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 15154514f5e3Sopenharmony_ci} 15164514f5e3Sopenharmony_ci 15174514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeRspAndDispatch) 15184514f5e3Sopenharmony_ci{ 15194514f5e3Sopenharmony_ci // 8 : 8 input parameters 15204514f5e3Sopenharmony_ci CallSignature resumeRspAndDispatch("ResumeRspAndDispatch", 0, 8, 15214514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 15224514f5e3Sopenharmony_ci *callSign = resumeRspAndDispatch; 15234514f5e3Sopenharmony_ci std::array<VariableType, 8> params = { // 8 : 8 input parameters 15244514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15254514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15264514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15274514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 15284514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 15294514f5e3Sopenharmony_ci VariableType::JS_ANY(), 15304514f5e3Sopenharmony_ci VariableType::INT32(), 15314514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15324514f5e3Sopenharmony_ci }; 15334514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 15344514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 15354514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 15364514f5e3Sopenharmony_ci} 15374514f5e3Sopenharmony_ci 15384514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeRspAndReturn) 15394514f5e3Sopenharmony_ci{ 15404514f5e3Sopenharmony_ci // 3 : 3 input parameters 15414514f5e3Sopenharmony_ci CallSignature resumeRspAndReturn("ResumeRspAndReturn", 0, 3, 15424514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 15434514f5e3Sopenharmony_ci *callSign = resumeRspAndReturn; 15444514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 15454514f5e3Sopenharmony_ci VariableType::JS_ANY(), 15464514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15474514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15484514f5e3Sopenharmony_ci }; 15494514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 15504514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 15514514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 15524514f5e3Sopenharmony_ci} 15534514f5e3Sopenharmony_ci 15544514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeRspAndReturnBaseline) 15554514f5e3Sopenharmony_ci{ 15564514f5e3Sopenharmony_ci // 4 : 4 input parameters 15574514f5e3Sopenharmony_ci CallSignature resumeRspAndReturnBaseline("ResumeRspAndReturnBaseline", 0, 4, 15584514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 15594514f5e3Sopenharmony_ci *callSign = resumeRspAndReturnBaseline; 15604514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { // 4 : 4 input parameters 15614514f5e3Sopenharmony_ci VariableType::JS_ANY(), // %r13 - acc 15624514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // %rbp - prevSp 15634514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // %r12 - sp 15644514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // %rbx - jumpSizeAfterCall 15654514f5e3Sopenharmony_ci }; 15664514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 15674514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 15684514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 15694514f5e3Sopenharmony_ci} 15704514f5e3Sopenharmony_ci 15714514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeCaughtFrameAndDispatch) 15724514f5e3Sopenharmony_ci{ 15734514f5e3Sopenharmony_ci // 7 : 7 input parameters 15744514f5e3Sopenharmony_ci CallSignature resumeCaughtFrameAndDispatch("ResumeCaughtFrameAndDispatch", 0, 7, 15754514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 15764514f5e3Sopenharmony_ci *callSign = resumeCaughtFrameAndDispatch; 15774514f5e3Sopenharmony_ci // 7 : 7 input parameters 15784514f5e3Sopenharmony_ci std::array<VariableType, 7> params = { 15794514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15804514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15814514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 15824514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 15834514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 15844514f5e3Sopenharmony_ci VariableType::JS_ANY(), 15854514f5e3Sopenharmony_ci VariableType::INT32(), 15864514f5e3Sopenharmony_ci }; 15874514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 15884514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 15894514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 15904514f5e3Sopenharmony_ci} 15914514f5e3Sopenharmony_ci 15924514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeUncaughtFrameAndReturn) 15934514f5e3Sopenharmony_ci{ 15944514f5e3Sopenharmony_ci // 3 : 3 input parameters 15954514f5e3Sopenharmony_ci CallSignature resumeUncaughtFrameAndReturn("ResumeUncaughtFrameAndReturn", 0, 3, 15964514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 15974514f5e3Sopenharmony_ci *callSign = resumeUncaughtFrameAndReturn; 15984514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 15994514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16004514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16014514f5e3Sopenharmony_ci VariableType::JS_ANY(), 16024514f5e3Sopenharmony_ci }; 16034514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16044514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16054514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 16064514f5e3Sopenharmony_ci} 16074514f5e3Sopenharmony_ci 16084514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ResumeRspAndRollback) 16094514f5e3Sopenharmony_ci{ 16104514f5e3Sopenharmony_ci // 8 : 8 input parameters 16114514f5e3Sopenharmony_ci CallSignature resumeRspAndRollback("ResumeRspAndRollback", 0, 8, 16124514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 16134514f5e3Sopenharmony_ci *callSign = resumeRspAndRollback; 16144514f5e3Sopenharmony_ci std::array<VariableType, 8> params = { // 8 : 8 input parameters 16154514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16164514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16174514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16184514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16194514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16204514f5e3Sopenharmony_ci VariableType::JS_ANY(), 16214514f5e3Sopenharmony_ci VariableType::INT32(), 16224514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 16234514f5e3Sopenharmony_ci }; 16244514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16254514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16264514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 16274514f5e3Sopenharmony_ci} 16284514f5e3Sopenharmony_ci 16294514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StringsAreEquals) 16304514f5e3Sopenharmony_ci{ 16314514f5e3Sopenharmony_ci // 2 : 2 input parameters 16324514f5e3Sopenharmony_ci CallSignature stringsAreEquals("StringsAreEquals", 0, 2, 16334514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 16344514f5e3Sopenharmony_ci *callSign = stringsAreEquals; 16354514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 16364514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16374514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16384514f5e3Sopenharmony_ci }; 16394514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16404514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 16414514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16424514f5e3Sopenharmony_ci} 16434514f5e3Sopenharmony_ci 16444514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSHClassFindProtoTransitions) 16454514f5e3Sopenharmony_ci{ 16464514f5e3Sopenharmony_ci // 3 : 3 input parameters 16474514f5e3Sopenharmony_ci CallSignature bigIntSameValueZero("JSHClassFindProtoTransitions", 0, 3, 16484514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 16494514f5e3Sopenharmony_ci *callSign = bigIntSameValueZero; 16504514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 16514514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16524514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16534514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16544514f5e3Sopenharmony_ci }; 16554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16564514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 16574514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16584514f5e3Sopenharmony_ci} 16594514f5e3Sopenharmony_ci 16604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NumberHelperStringToDouble) 16614514f5e3Sopenharmony_ci{ 16624514f5e3Sopenharmony_ci // 1 : 1 input parameters 16634514f5e3Sopenharmony_ci CallSignature bigIntSameValueZero("NumberHelperStringToDouble", 0, 1, 16644514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 16654514f5e3Sopenharmony_ci *callSign = bigIntSameValueZero; 16664514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { // 1 : 1 input parameters 16674514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16684514f5e3Sopenharmony_ci }; 16694514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16704514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 16714514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16724514f5e3Sopenharmony_ci} 16734514f5e3Sopenharmony_ci 16744514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallBigIntAsIntN) 16754514f5e3Sopenharmony_ci{ 16764514f5e3Sopenharmony_ci // 2 : 2 input parameters 16774514f5e3Sopenharmony_ci CallSignature signature("CallBigIntAsIntN", 0, 2, ArgumentsOrder::DEFAULT_ORDER, 16784514f5e3Sopenharmony_ci VariableType::JS_POINTER()); 16794514f5e3Sopenharmony_ci *callSign = signature; 16804514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 16814514f5e3Sopenharmony_ci VariableType::FLOAT64(), 16824514f5e3Sopenharmony_ci VariableType::JS_POINTER() 16834514f5e3Sopenharmony_ci }; 16844514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 16854514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 16864514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 16874514f5e3Sopenharmony_ci} 16884514f5e3Sopenharmony_ci 16894514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallBigIntAsUintN) 16904514f5e3Sopenharmony_ci{ 16914514f5e3Sopenharmony_ci // 2 : 2 input parameters 16924514f5e3Sopenharmony_ci CallSignature signature("CallBigIntAsUintN", 0, 2, ArgumentsOrder::DEFAULT_ORDER, 16934514f5e3Sopenharmony_ci VariableType::JS_POINTER()); 16944514f5e3Sopenharmony_ci *callSign = signature; 16954514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 16964514f5e3Sopenharmony_ci VariableType::FLOAT64(), 16974514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 16984514f5e3Sopenharmony_ci }; 16994514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17004514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17014514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17024514f5e3Sopenharmony_ci} 17034514f5e3Sopenharmony_ci 17044514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetStringToListCacheArray) 17054514f5e3Sopenharmony_ci{ 17064514f5e3Sopenharmony_ci // 1 : 1 input parameters 17074514f5e3Sopenharmony_ci CallSignature callSignature("GetStringToListCacheArray", 0, 1, 17084514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 17094514f5e3Sopenharmony_ci *callSign = callSignature; 17104514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { // 1 : 1 input parameters 17114514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 17124514f5e3Sopenharmony_ci }; 17134514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17144514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17154514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17164514f5e3Sopenharmony_ci} 17174514f5e3Sopenharmony_ci 17184514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(BigIntEquals) 17194514f5e3Sopenharmony_ci{ 17204514f5e3Sopenharmony_ci // 2 : 2 input parameters 17214514f5e3Sopenharmony_ci CallSignature bigIntEquals("BigIntEquals", 0, 2, 17224514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 17234514f5e3Sopenharmony_ci *callSign = bigIntEquals; 17244514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 17254514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 17264514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 17274514f5e3Sopenharmony_ci }; 17284514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17294514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17304514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17314514f5e3Sopenharmony_ci} 17324514f5e3Sopenharmony_ci 17334514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FastArraySort) 17344514f5e3Sopenharmony_ci{ 17354514f5e3Sopenharmony_ci // 2 : 2 input parameters 17364514f5e3Sopenharmony_ci CallSignature fastArraySort("FastArraySort", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 17374514f5e3Sopenharmony_ci *callSign = fastArraySort; 17384514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 17394514f5e3Sopenharmony_ci VariableType::JS_ANY(), 17404514f5e3Sopenharmony_ci VariableType::JS_ANY() 17414514f5e3Sopenharmony_ci }; 17424514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17434514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17444514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17454514f5e3Sopenharmony_ci} 17464514f5e3Sopenharmony_ci 17474514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FastArraySortString) 17484514f5e3Sopenharmony_ci{ 17494514f5e3Sopenharmony_ci // 2 : 2 input parameters 17504514f5e3Sopenharmony_ci CallSignature fastArraySortString("FastArraySortString", 0, 2, 17514514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 17524514f5e3Sopenharmony_ci *callSign = fastArraySortString; 17534514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 17544514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 17554514f5e3Sopenharmony_ci VariableType::JS_ANY(), 17564514f5e3Sopenharmony_ci VariableType::JS_ANY() 17574514f5e3Sopenharmony_ci }; 17584514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17594514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17604514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17614514f5e3Sopenharmony_ci} 17624514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StringToNumber) 17634514f5e3Sopenharmony_ci{ 17644514f5e3Sopenharmony_ci // 4 : 4 input parameters 17654514f5e3Sopenharmony_ci CallSignature stringToNumber("StringToDoubleWithRadix", 0, 2, 17664514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 17674514f5e3Sopenharmony_ci *callSign = stringToNumber; 17684514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 17694514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 17704514f5e3Sopenharmony_ci VariableType::INT32(), 17714514f5e3Sopenharmony_ci }; 17724514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17734514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17744514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17754514f5e3Sopenharmony_ci} 17764514f5e3Sopenharmony_ci 17774514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(ArrayTrim) 17784514f5e3Sopenharmony_ci{ 17794514f5e3Sopenharmony_ci // 3 : 3 input parameters 17804514f5e3Sopenharmony_ci CallSignature ArrayTrim("ArrayTrim", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 17814514f5e3Sopenharmony_ci *callSign = ArrayTrim; 17824514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 17834514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 17844514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 17854514f5e3Sopenharmony_ci VariableType::INT64() 17864514f5e3Sopenharmony_ci }; 17874514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 17884514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 17894514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 17904514f5e3Sopenharmony_ci} 17914514f5e3Sopenharmony_ci 17924514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(BigIntSameValueZero) 17934514f5e3Sopenharmony_ci{ 17944514f5e3Sopenharmony_ci // 1 : 1 input parameters 17954514f5e3Sopenharmony_ci CallSignature bigIntSameValueZero("BigIntSameValueZero", 0, 2, 17964514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 17974514f5e3Sopenharmony_ci *callSign = bigIntSameValueZero; 17984514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 17994514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 18004514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 18014514f5e3Sopenharmony_ci }; 18024514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 18034514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 18044514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 18054514f5e3Sopenharmony_ci} 18064514f5e3Sopenharmony_ci 18074514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StringGetStart) 18084514f5e3Sopenharmony_ci{ 18094514f5e3Sopenharmony_ci CallSignature stringGetStart("StringGetStart", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 18104514f5e3Sopenharmony_ci *callSign = stringGetStart; 18114514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { // 4 : four input parameters 18124514f5e3Sopenharmony_ci VariableType::BOOL(), 18134514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 18144514f5e3Sopenharmony_ci VariableType::INT32(), 18154514f5e3Sopenharmony_ci VariableType::INT32(), 18164514f5e3Sopenharmony_ci }; 18174514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 18184514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 18194514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 18204514f5e3Sopenharmony_ci} 18214514f5e3Sopenharmony_ci 18224514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StringGetEnd) 18234514f5e3Sopenharmony_ci{ 18244514f5e3Sopenharmony_ci CallSignature stringGetEnd("StringGetEnd", 0, 5, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 18254514f5e3Sopenharmony_ci *callSign = stringGetEnd; 18264514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { // 5 : five input parameters 18274514f5e3Sopenharmony_ci VariableType::BOOL(), 18284514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 18294514f5e3Sopenharmony_ci VariableType::INT32(), 18304514f5e3Sopenharmony_ci VariableType::INT32(), 18314514f5e3Sopenharmony_ci VariableType::INT32(), 18324514f5e3Sopenharmony_ci }; 18334514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 18344514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 18354514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 18364514f5e3Sopenharmony_ci} 18374514f5e3Sopenharmony_ci 18384514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(IsFastRegExp) 18394514f5e3Sopenharmony_ci{ 18404514f5e3Sopenharmony_ci // 3 : 3 input parameters 18414514f5e3Sopenharmony_ci CallSignature isFastRegExp("IsFastRegExp", 0, 2, 18424514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 18434514f5e3Sopenharmony_ci *callSign = isFastRegExp; 18444514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { // 2 : 2 input parameters 18454514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 18464514f5e3Sopenharmony_ci VariableType::JS_ANY() 18474514f5e3Sopenharmony_ci }; 18484514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 18494514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 18504514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 18514514f5e3Sopenharmony_ci} 18524514f5e3Sopenharmony_ci 18534514f5e3Sopenharmony_ci#define PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE_COMMON(name) \ 18544514f5e3Sopenharmony_ci /* 1 : 1 input parameters */ \ 18554514f5e3Sopenharmony_ci CallSignature signature(#name, 0, 1, \ 18564514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); \ 18574514f5e3Sopenharmony_ci *callSign = signature; \ 18584514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { /* 1: 1 input parameters */ \ 18594514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), \ 18604514f5e3Sopenharmony_ci }; \ 18614514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); \ 18624514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 18634514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 18644514f5e3Sopenharmony_ci 18654514f5e3Sopenharmony_ci#define PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(name) \ 18664514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE_COMMON(name) \ 18674514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::GHCCallConv); 18684514f5e3Sopenharmony_ci 18694514f5e3Sopenharmony_ci#define PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_SIGNATURE(name) \ 18704514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE_COMMON(name) \ 18714514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::WebKitJSCallConv); 18724514f5e3Sopenharmony_ci 18734514f5e3Sopenharmony_ci#define PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(name) \ 18744514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE_COMMON(name) \ 18754514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 18764514f5e3Sopenharmony_ci 18774514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallArgsAndDispatchNative) 18784514f5e3Sopenharmony_ci{ 18794514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_SIGNATURE(PushCallArgsAndDispatchNative) 18804514f5e3Sopenharmony_ci} 18814514f5e3Sopenharmony_ci 18824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallArg0AndDispatch) 18834514f5e3Sopenharmony_ci{ 18844514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArg0AndDispatch) 18854514f5e3Sopenharmony_ci} 18864514f5e3Sopenharmony_ci 18874514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallArg1AndDispatch) 18884514f5e3Sopenharmony_ci{ 18894514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArg1AndDispatch) 18904514f5e3Sopenharmony_ci} 18914514f5e3Sopenharmony_ci 18924514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallArgs2AndDispatch) 18934514f5e3Sopenharmony_ci{ 18944514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArgs2AndDispatch) 18954514f5e3Sopenharmony_ci} 18964514f5e3Sopenharmony_ci 18974514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallArgs3AndDispatch) 18984514f5e3Sopenharmony_ci{ 18994514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArgs3AndDispatch) 19004514f5e3Sopenharmony_ci} 19014514f5e3Sopenharmony_ci 19024514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallThisArg0AndDispatch) 19034514f5e3Sopenharmony_ci{ 19044514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArg0AndDispatch) 19054514f5e3Sopenharmony_ci} 19064514f5e3Sopenharmony_ci 19074514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallThisArg1AndDispatch) 19084514f5e3Sopenharmony_ci{ 19094514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArg1AndDispatch) 19104514f5e3Sopenharmony_ci} 19114514f5e3Sopenharmony_ci 19124514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallThisArgs2AndDispatch) 19134514f5e3Sopenharmony_ci{ 19144514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArgs2AndDispatch) 19154514f5e3Sopenharmony_ci} 19164514f5e3Sopenharmony_ci 19174514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallThisArgs3AndDispatch) 19184514f5e3Sopenharmony_ci{ 19194514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArgs3AndDispatch) 19204514f5e3Sopenharmony_ci} 19214514f5e3Sopenharmony_ci 19224514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallRangeAndDispatchNative) 19234514f5e3Sopenharmony_ci{ 19244514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(PushCallRangeAndDispatchNative) 19254514f5e3Sopenharmony_ci} 19264514f5e3Sopenharmony_ci 19274514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallNewAndDispatchNative) 19284514f5e3Sopenharmony_ci{ 19294514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(PushCallNewAndDispatchNative) 19304514f5e3Sopenharmony_ci} 19314514f5e3Sopenharmony_ci 19324514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushNewTargetAndDispatchNative) 19334514f5e3Sopenharmony_ci{ 19344514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(PushNewTargetAndDispatchNative) 19354514f5e3Sopenharmony_ci} 19364514f5e3Sopenharmony_ci 19374514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallNewAndDispatch) 19384514f5e3Sopenharmony_ci{ 19394514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallNewAndDispatch) 19404514f5e3Sopenharmony_ci} 19414514f5e3Sopenharmony_ci 19424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushSuperCallAndDispatch) 19434514f5e3Sopenharmony_ci{ 19444514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushSuperCallAndDispatch) 19454514f5e3Sopenharmony_ci} 19464514f5e3Sopenharmony_ci 19474514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallRangeAndDispatch) 19484514f5e3Sopenharmony_ci{ 19494514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallRangeAndDispatch) 19504514f5e3Sopenharmony_ci} 19514514f5e3Sopenharmony_ci 19524514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(PushCallThisRangeAndDispatch) 19534514f5e3Sopenharmony_ci{ 19544514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisRangeAndDispatch) 19554514f5e3Sopenharmony_ci} 19564514f5e3Sopenharmony_ci 19574514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallGetter) 19584514f5e3Sopenharmony_ci{ 19594514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(CallGetter) 19604514f5e3Sopenharmony_ci} 19614514f5e3Sopenharmony_ci 19624514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallSetter) 19634514f5e3Sopenharmony_ci{ 19644514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(CallSetter) 19654514f5e3Sopenharmony_ci} 19664514f5e3Sopenharmony_ci 19674514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallContainersArgs2) 19684514f5e3Sopenharmony_ci{ 19694514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(CallContainersArgs2) 19704514f5e3Sopenharmony_ci} 19714514f5e3Sopenharmony_ci 19724514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallContainersArgs3) 19734514f5e3Sopenharmony_ci{ 19744514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(CallContainersArgs3) 19754514f5e3Sopenharmony_ci} 19764514f5e3Sopenharmony_ci 19774514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallReturnWithArgv) 19784514f5e3Sopenharmony_ci{ 19794514f5e3Sopenharmony_ci PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(CallReturnWithArgv) 19804514f5e3Sopenharmony_ci} 19814514f5e3Sopenharmony_ci 19824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSCallWithArgV) 19834514f5e3Sopenharmony_ci{ 19844514f5e3Sopenharmony_ci // 5 : 5 input parameters 19854514f5e3Sopenharmony_ci CallSignature jSCallWithArgV("JSCallWithArgV", 0, 5, 19864514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 19874514f5e3Sopenharmony_ci *callSign = jSCallWithArgV; 19884514f5e3Sopenharmony_ci // 5 : 5 input parameters 19894514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 19904514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 19914514f5e3Sopenharmony_ci VariableType::INT64(), // actualNumArgs 19924514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsfunc 19934514f5e3Sopenharmony_ci VariableType::JS_ANY(), // newTarget 19944514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 19954514f5e3Sopenharmony_ci }; 19964514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 19974514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 19984514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 19994514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 20004514f5e3Sopenharmony_ci} 20014514f5e3Sopenharmony_ci 20024514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSFastCallWithArgV) 20034514f5e3Sopenharmony_ci{ 20044514f5e3Sopenharmony_ci // 4 : 4 input parameters 20054514f5e3Sopenharmony_ci CallSignature jSFastCallWithArgV("JSFastCallWithArgV", 0, 4, 20064514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 20074514f5e3Sopenharmony_ci *callSign = jSFastCallWithArgV; 20084514f5e3Sopenharmony_ci // 4 : 4 input parameters 20094514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 20104514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 20114514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsfunc 20124514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 20134514f5e3Sopenharmony_ci VariableType::INT64(), // actualNumArgs 20144514f5e3Sopenharmony_ci }; 20154514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 20164514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 20174514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 20184514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 20194514f5e3Sopenharmony_ci} 20204514f5e3Sopenharmony_ci 20214514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSFastCallWithArgVAndPushArgv) 20224514f5e3Sopenharmony_ci{ 20234514f5e3Sopenharmony_ci // 4 : 4 input parameters 20244514f5e3Sopenharmony_ci CallSignature jSCallWithArgV("JSFastCallWithArgVAndPushArgv", 0, 4, 20254514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 20264514f5e3Sopenharmony_ci *callSign = jSCallWithArgV; 20274514f5e3Sopenharmony_ci // 4 : 4 input parameters 20284514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 20294514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 20304514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsfunc 20314514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 20324514f5e3Sopenharmony_ci VariableType::INT64(), // actualNumArgs 20334514f5e3Sopenharmony_ci }; 20344514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 20354514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 20364514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 20374514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 20384514f5e3Sopenharmony_ci} 20394514f5e3Sopenharmony_ci 20404514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSCallWithArgVAndPushArgv) 20414514f5e3Sopenharmony_ci{ 20424514f5e3Sopenharmony_ci // 5 : 5 input parameters 20434514f5e3Sopenharmony_ci CallSignature jSCallWithArgVAndPushArgv("JSCallWithArgVAndPushArgv", 0, 5, 20444514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 20454514f5e3Sopenharmony_ci *callSign = jSCallWithArgVAndPushArgv; 20464514f5e3Sopenharmony_ci // 5 : 5 input parameters 20474514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 20484514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 20494514f5e3Sopenharmony_ci VariableType::INT64(), // actualNumArgs 20504514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsfunc 20514514f5e3Sopenharmony_ci VariableType::JS_ANY(), // newTarget 20524514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 20534514f5e3Sopenharmony_ci }; 20544514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 20554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 20564514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 20574514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 20584514f5e3Sopenharmony_ci} 20594514f5e3Sopenharmony_ci 20604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallOptimized) 20614514f5e3Sopenharmony_ci{ 20624514f5e3Sopenharmony_ci // 6 : 6 input parameters 20634514f5e3Sopenharmony_ci CallSignature callOptimized("CallOptimized", 0, 6, 20644514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 20654514f5e3Sopenharmony_ci *callSign = callOptimized; 20664514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { // 6 : 6 input parameters 20674514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 20684514f5e3Sopenharmony_ci VariableType::INT64(), // actual argC 20694514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // actual argV 20704514f5e3Sopenharmony_ci VariableType::JS_ANY(), // call target 20714514f5e3Sopenharmony_ci VariableType::JS_ANY(), // new target 20724514f5e3Sopenharmony_ci VariableType::JS_ANY(), // thisobj 20734514f5e3Sopenharmony_ci }; 20744514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 20754514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 20764514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::WebKitJSCallConv); 20774514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 20784514f5e3Sopenharmony_ci} 20794514f5e3Sopenharmony_ci 20804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SuperCallWithArgV) 20814514f5e3Sopenharmony_ci{ 20824514f5e3Sopenharmony_ci // 5 : 5 input parameters 20834514f5e3Sopenharmony_ci CallSignature superCallWithArgV("SuperCallWithArgV", 0, 5, 20844514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 20854514f5e3Sopenharmony_ci *callSign = superCallWithArgV; 20864514f5e3Sopenharmony_ci // 5 : 5 input parameters 20874514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 20884514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 20894514f5e3Sopenharmony_ci VariableType::INT64(), // actualNumArgs 20904514f5e3Sopenharmony_ci VariableType::JS_ANY(), // jsfunc 20914514f5e3Sopenharmony_ci VariableType::JS_ANY(), // newTarget 20924514f5e3Sopenharmony_ci VariableType::JS_ANY(), // this 20934514f5e3Sopenharmony_ci }; 20944514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 20954514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 20964514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 20974514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 20984514f5e3Sopenharmony_ci} 20994514f5e3Sopenharmony_ci 21004514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Dump) 21014514f5e3Sopenharmony_ci{ 21024514f5e3Sopenharmony_ci constexpr size_t N_INPUT_PARAMETERS = 1; 21034514f5e3Sopenharmony_ci CallSignature dump("Dump", 0, N_INPUT_PARAMETERS, 21044514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21054514f5e3Sopenharmony_ci *callSign = dump; 21064514f5e3Sopenharmony_ci std::array<VariableType, N_INPUT_PARAMETERS> params = { 21074514f5e3Sopenharmony_ci VariableType::JS_POINTER() // Tagged value of the object to be dumped 21084514f5e3Sopenharmony_ci }; 21094514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21104514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21114514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21124514f5e3Sopenharmony_ci} 21134514f5e3Sopenharmony_ci 21144514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugDump) 21154514f5e3Sopenharmony_ci{ 21164514f5e3Sopenharmony_ci constexpr size_t N_INPUT_PARAMETERS = 1; 21174514f5e3Sopenharmony_ci CallSignature debugDump("DebugDump", 0, N_INPUT_PARAMETERS, 21184514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21194514f5e3Sopenharmony_ci *callSign = debugDump; 21204514f5e3Sopenharmony_ci std::array<VariableType, N_INPUT_PARAMETERS> params = { 21214514f5e3Sopenharmony_ci VariableType::JS_POINTER() // Tagged value of the object to be dumped 21224514f5e3Sopenharmony_ci }; 21234514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21244514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21254514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21264514f5e3Sopenharmony_ci} 21274514f5e3Sopenharmony_ci 21284514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DumpWithHint) 21294514f5e3Sopenharmony_ci{ 21304514f5e3Sopenharmony_ci constexpr size_t N_INPUT_PARAMETERS = 2; 21314514f5e3Sopenharmony_ci CallSignature dumpWithHint("DumpWithHint", 0, N_INPUT_PARAMETERS, 21324514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21334514f5e3Sopenharmony_ci *callSign = dumpWithHint; 21344514f5e3Sopenharmony_ci std::array<VariableType, N_INPUT_PARAMETERS> params = { 21354514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // String created via CircuitBuilder::StringPtr() 21364514f5e3Sopenharmony_ci VariableType::JS_POINTER() // Tagged value of the object to be dumped 21374514f5e3Sopenharmony_ci }; 21384514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21394514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21404514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21414514f5e3Sopenharmony_ci} 21424514f5e3Sopenharmony_ci 21434514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugDumpWithHint) 21444514f5e3Sopenharmony_ci{ 21454514f5e3Sopenharmony_ci constexpr size_t N_INPUT_PARAMETERS = 2; 21464514f5e3Sopenharmony_ci CallSignature debugDumpWithHint("DebugDumpWithHint", 0, N_INPUT_PARAMETERS, 21474514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21484514f5e3Sopenharmony_ci *callSign = debugDumpWithHint; 21494514f5e3Sopenharmony_ci std::array<VariableType, N_INPUT_PARAMETERS> params = { 21504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // String created via CircuitBuilder::StringPtr() 21514514f5e3Sopenharmony_ci VariableType::JS_POINTER() // Tagged value of the object to be dumped 21524514f5e3Sopenharmony_ci }; 21534514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21544514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21554514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21564514f5e3Sopenharmony_ci} 21574514f5e3Sopenharmony_ci 21584514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugPrint) 21594514f5e3Sopenharmony_ci{ 21604514f5e3Sopenharmony_ci // 1 : 1 input parameters 21614514f5e3Sopenharmony_ci CallSignature debugPrint("DebugPrint", 0, 1, 21624514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21634514f5e3Sopenharmony_ci *callSign = debugPrint; 21644514f5e3Sopenharmony_ci // 1 : 1 input parameters 21654514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 21664514f5e3Sopenharmony_ci VariableType::INT32(), 21674514f5e3Sopenharmony_ci }; 21684514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 21694514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21704514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21714514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21724514f5e3Sopenharmony_ci} 21734514f5e3Sopenharmony_ci 21744514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugPrintCustom) 21754514f5e3Sopenharmony_ci{ 21764514f5e3Sopenharmony_ci // 1 : 1 input parameters 21774514f5e3Sopenharmony_ci CallSignature debugPrintCustom("DebugPrintCustom", 0, 1, 21784514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21794514f5e3Sopenharmony_ci *callSign = debugPrintCustom; 21804514f5e3Sopenharmony_ci // 1 : 1 input parameters 21814514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 21824514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER() // Format string created via CircuitBuilder::StringPtr() 21834514f5e3Sopenharmony_ci }; 21844514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 21854514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 21864514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 21874514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 21884514f5e3Sopenharmony_ci} 21894514f5e3Sopenharmony_ci 21904514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugPrintInstruction) 21914514f5e3Sopenharmony_ci{ 21924514f5e3Sopenharmony_ci // 2 : 2 input parameters 21934514f5e3Sopenharmony_ci CallSignature debugPrintInstruction("DebugPrintInstruction", 0, 2, 21944514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 21954514f5e3Sopenharmony_ci *callSign = debugPrintInstruction; 21964514f5e3Sopenharmony_ci // 2 : 2 input parameters 21974514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 21984514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 21994514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22004514f5e3Sopenharmony_ci }; 22014514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 22024514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22034514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22044514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22054514f5e3Sopenharmony_ci} 22064514f5e3Sopenharmony_ci 22074514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DebugOsrEntry) 22084514f5e3Sopenharmony_ci{ 22094514f5e3Sopenharmony_ci // 2 : 2 input parameters 22104514f5e3Sopenharmony_ci CallSignature debugOsrEntry("DebugOsrEntry", 0, 2, 22114514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 22124514f5e3Sopenharmony_ci *callSign = debugOsrEntry; 22134514f5e3Sopenharmony_ci // 2 : 2 input parameters 22144514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 22154514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22164514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22174514f5e3Sopenharmony_ci }; 22184514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 22194514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22204514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22214514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22224514f5e3Sopenharmony_ci} 22234514f5e3Sopenharmony_ci 22244514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Comment) 22254514f5e3Sopenharmony_ci{ 22264514f5e3Sopenharmony_ci // 1 : 1 input parameters 22274514f5e3Sopenharmony_ci CallSignature comment("Comment", 0, 1, 22284514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 22294514f5e3Sopenharmony_ci *callSign = comment; 22304514f5e3Sopenharmony_ci // 1 : 1 input parameters 22314514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 22324514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22334514f5e3Sopenharmony_ci }; 22344514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22354514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22364514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22374514f5e3Sopenharmony_ci} 22384514f5e3Sopenharmony_ci 22394514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FatalPrint) 22404514f5e3Sopenharmony_ci{ 22414514f5e3Sopenharmony_ci // 1 : 1 input parameters 22424514f5e3Sopenharmony_ci CallSignature fatalPrint("FatalPrint", 0, 1, 22434514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 22444514f5e3Sopenharmony_ci *callSign = fatalPrint; 22454514f5e3Sopenharmony_ci // 1 : 1 input parameters 22464514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 22474514f5e3Sopenharmony_ci VariableType::INT32(), 22484514f5e3Sopenharmony_ci }; 22494514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 22504514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22514514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22524514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22534514f5e3Sopenharmony_ci} 22544514f5e3Sopenharmony_ci 22554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FatalPrintCustom) 22564514f5e3Sopenharmony_ci{ 22574514f5e3Sopenharmony_ci // 1 : 1 input parameters 22584514f5e3Sopenharmony_ci CallSignature fatalPrintCustom("FatalPrintCustom", 0, 1, 22594514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 22604514f5e3Sopenharmony_ci *callSign = fatalPrintCustom; 22614514f5e3Sopenharmony_ci // 1 : 1 input parameters 22624514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 22634514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER() // Format string created via CircuitBuilder::StringPtr() 22644514f5e3Sopenharmony_ci }; 22654514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 22664514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22674514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22684514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22694514f5e3Sopenharmony_ci} 22704514f5e3Sopenharmony_ci 22714514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetActualArgvNoGC) 22724514f5e3Sopenharmony_ci{ 22734514f5e3Sopenharmony_ci CallSignature index("GetActualArgvNoGC", 0, 1, ArgumentsOrder::DEFAULT_ORDER, VariableType::NATIVE_POINTER()); 22744514f5e3Sopenharmony_ci *callSign = index; 22754514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 22764514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22774514f5e3Sopenharmony_ci }; 22784514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22794514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22804514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22814514f5e3Sopenharmony_ci} 22824514f5e3Sopenharmony_ci 22834514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(InsertNewToEdenRSet) 22844514f5e3Sopenharmony_ci{ 22854514f5e3Sopenharmony_ci // 3 : 3 input parameters 22864514f5e3Sopenharmony_ci CallSignature index("InsertNewToEdenRSet", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 22874514f5e3Sopenharmony_ci *callSign = index; 22884514f5e3Sopenharmony_ci // 3 : 3 input parameters 22894514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 22904514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22914514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 22924514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 22934514f5e3Sopenharmony_ci }; 22944514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 22954514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 22964514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 22974514f5e3Sopenharmony_ci} 22984514f5e3Sopenharmony_ci 22994514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(InsertOldToNewRSet) 23004514f5e3Sopenharmony_ci{ 23014514f5e3Sopenharmony_ci // 3 : 3 input parameters 23024514f5e3Sopenharmony_ci CallSignature index("InsertOldToNewRSet", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 23034514f5e3Sopenharmony_ci *callSign = index; 23044514f5e3Sopenharmony_ci // 3 : 3 input parameters 23054514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 23064514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 23074514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 23084514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 23094514f5e3Sopenharmony_ci }; 23104514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 23114514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 23124514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 23134514f5e3Sopenharmony_ci} 23144514f5e3Sopenharmony_ci 23154514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(InsertLocalToShareRSet) 23164514f5e3Sopenharmony_ci{ 23174514f5e3Sopenharmony_ci // 3 : 3 input parameters 23184514f5e3Sopenharmony_ci CallSignature index("InsertLocalToShareRSet", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 23194514f5e3Sopenharmony_ci *callSign = index; 23204514f5e3Sopenharmony_ci // 3 : 3 input parameters 23214514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 23224514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 23234514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 23244514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 23254514f5e3Sopenharmony_ci }; 23264514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 23274514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 23284514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 23294514f5e3Sopenharmony_ci} 23304514f5e3Sopenharmony_ci 23314514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetBitAtomic) 23324514f5e3Sopenharmony_ci{ 23334514f5e3Sopenharmony_ci // 3 : 3 input parameters 23344514f5e3Sopenharmony_ci CallSignature index("SetBitAtomic", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 23354514f5e3Sopenharmony_ci *callSign = index; 23364514f5e3Sopenharmony_ci // 3 : 3 input parameters 23374514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 23384514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 23394514f5e3Sopenharmony_ci VariableType::INT32(), 23404514f5e3Sopenharmony_ci VariableType::INT32() 23414514f5e3Sopenharmony_ci }; 23424514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 23434514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 23444514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 23454514f5e3Sopenharmony_ci} 23464514f5e3Sopenharmony_ci 23474514f5e3Sopenharmony_ci#define DEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(NAME) \ 23484514f5e3Sopenharmony_ci DEF_CALL_SIGNATURE(NAME) \ 23494514f5e3Sopenharmony_ci { \ 23504514f5e3Sopenharmony_ci /* 1 : 1 input parameters */ \ 23514514f5e3Sopenharmony_ci CallSignature index(#NAME, 0, 1, ArgumentsOrder::DEFAULT_ORDER, VariableType::FLOAT64()); \ 23524514f5e3Sopenharmony_ci *callSign = index; \ 23534514f5e3Sopenharmony_ci /* 1 : 1 input parameters */ \ 23544514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { \ 23554514f5e3Sopenharmony_ci VariableType::FLOAT64(), \ 23564514f5e3Sopenharmony_ci }; \ 23574514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 23584514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); \ 23594514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); \ 23604514f5e3Sopenharmony_ci } 23614514f5e3Sopenharmony_ci 23624514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAcos) 23634514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAcosh) 23644514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAsin) 23654514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAsinh) 23664514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAtan) 23674514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatAtanh) 23684514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatCos) 23694514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatCosh) 23704514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatSin) 23714514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatSinh) 23724514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatTan) 23734514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatTanh) 23744514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatExp) 23754514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatExpm1) 23764514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatTrunc) 23774514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatFloor) 23784514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatLog) 23794514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatLog2) 23804514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatLog10) 23814514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatLog1p) 23824514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatCbrt) 23834514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatClz32) 23844514f5e3Sopenharmony_ciDEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME(FloatCeil) 23854514f5e3Sopenharmony_ci 23864514f5e3Sopenharmony_ci#undef DEF_FLOAT_UNARY_CALL_SIGNATURE_BY_NAME 23874514f5e3Sopenharmony_ci 23884514f5e3Sopenharmony_ci#define DEF_FLOAT_BINARY_CALL_SIGNATURE_BY_NAME(NAME) \ 23894514f5e3Sopenharmony_ci DEF_CALL_SIGNATURE(NAME) \ 23904514f5e3Sopenharmony_ci { \ 23914514f5e3Sopenharmony_ci /* 2 : 2 input parameters */ \ 23924514f5e3Sopenharmony_ci CallSignature index(#NAME, 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::FLOAT64()); \ 23934514f5e3Sopenharmony_ci *callSign = index; \ 23944514f5e3Sopenharmony_ci /* 2 : 2 input parameters */ \ 23954514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { \ 23964514f5e3Sopenharmony_ci VariableType::FLOAT64(), \ 23974514f5e3Sopenharmony_ci VariableType::FLOAT64(), \ 23984514f5e3Sopenharmony_ci }; \ 23994514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); \ 24004514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); \ 24014514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); \ 24024514f5e3Sopenharmony_ci } 24034514f5e3Sopenharmony_ci 24044514f5e3Sopenharmony_ciDEF_FLOAT_BINARY_CALL_SIGNATURE_BY_NAME(FloatMod) 24054514f5e3Sopenharmony_ciDEF_FLOAT_BINARY_CALL_SIGNATURE_BY_NAME(FloatAtan2) 24064514f5e3Sopenharmony_ciDEF_FLOAT_BINARY_CALL_SIGNATURE_BY_NAME(FloatPow) 24074514f5e3Sopenharmony_ci 24084514f5e3Sopenharmony_ci#undef DEF_FLOAT_BINARY_CALL_SIGNATURE_BY_NAME 24094514f5e3Sopenharmony_ci 24104514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallDateNow) 24114514f5e3Sopenharmony_ci{ 24124514f5e3Sopenharmony_ci CallSignature signature("CallDateNow", 0, 0, ArgumentsOrder::DEFAULT_ORDER, 24134514f5e3Sopenharmony_ci VariableType::FLOAT64()); 24144514f5e3Sopenharmony_ci *callSign = signature; 24154514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24164514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24174514f5e3Sopenharmony_ci} 24184514f5e3Sopenharmony_ci 24194514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FindElementWithCache) 24204514f5e3Sopenharmony_ci{ 24214514f5e3Sopenharmony_ci // 4 : 4 input parameters 24224514f5e3Sopenharmony_ci CallSignature index("FindElementWithCache", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 24234514f5e3Sopenharmony_ci *callSign = index; 24244514f5e3Sopenharmony_ci // 4 : 4 input parameters 24254514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 24264514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 24274514f5e3Sopenharmony_ci VariableType::JS_ANY(), 24284514f5e3Sopenharmony_ci VariableType::JS_ANY(), 24294514f5e3Sopenharmony_ci VariableType::INT32(), 24304514f5e3Sopenharmony_ci }; 24314514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 24324514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24334514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24344514f5e3Sopenharmony_ci} 24354514f5e3Sopenharmony_ci 24364514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(UpdateFieldType) 24374514f5e3Sopenharmony_ci{ 24384514f5e3Sopenharmony_ci // 2 : 2 input parameters 24394514f5e3Sopenharmony_ci CallSignature index("UpdateFieldType", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 24404514f5e3Sopenharmony_ci *callSign = index; 24414514f5e3Sopenharmony_ci // 2 : 2 input parameters 24424514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 24434514f5e3Sopenharmony_ci VariableType::JS_ANY(), 24444514f5e3Sopenharmony_ci VariableType::INT64(), 24454514f5e3Sopenharmony_ci }; 24464514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 24474514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24484514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24494514f5e3Sopenharmony_ci} 24504514f5e3Sopenharmony_ci 24514514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(NumberIsFinite) 24524514f5e3Sopenharmony_ci{ 24534514f5e3Sopenharmony_ci // 1 : 1 input parameters 24544514f5e3Sopenharmony_ci CallSignature index("NumberIsFinite", 0, 1, ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 24554514f5e3Sopenharmony_ci *callSign = index; 24564514f5e3Sopenharmony_ci // 1 : 1 input parameters 24574514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 24584514f5e3Sopenharmony_ci VariableType::FLOAT64(), 24594514f5e3Sopenharmony_ci }; 24604514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 24614514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24624514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24634514f5e3Sopenharmony_ci} 24644514f5e3Sopenharmony_ci 24654514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DoubleToInt) 24664514f5e3Sopenharmony_ci{ 24674514f5e3Sopenharmony_ci // 2 : 2 input parameters 24684514f5e3Sopenharmony_ci CallSignature index("DoubleToInt", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 24694514f5e3Sopenharmony_ci *callSign = index; 24704514f5e3Sopenharmony_ci // 2 : 2 input parameters 24714514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 24724514f5e3Sopenharmony_ci VariableType::FLOAT64(), 24734514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 24744514f5e3Sopenharmony_ci }; 24754514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 24764514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24774514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24784514f5e3Sopenharmony_ci} 24794514f5e3Sopenharmony_ci 24804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DoubleToLength) 24814514f5e3Sopenharmony_ci{ 24824514f5e3Sopenharmony_ci // 1 : 1 input parameters 24834514f5e3Sopenharmony_ci CallSignature index("DoubleToLength", 0, 1, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 24844514f5e3Sopenharmony_ci *callSign = index; 24854514f5e3Sopenharmony_ci // 1 : 1 input parameters 24864514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 24874514f5e3Sopenharmony_ci VariableType::FLOAT64(), 24884514f5e3Sopenharmony_ci }; 24894514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 24904514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 24914514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 24924514f5e3Sopenharmony_ci} 24934514f5e3Sopenharmony_ci 24944514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(MarkingBarrier) 24954514f5e3Sopenharmony_ci{ 24964514f5e3Sopenharmony_ci // 4 : 4 input parameters 24974514f5e3Sopenharmony_ci CallSignature index("MarkingBarrier", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 24984514f5e3Sopenharmony_ci *callSign = index; 24994514f5e3Sopenharmony_ci // 4 : 4 input parameters 25004514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 25014514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25024514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 25034514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25044514f5e3Sopenharmony_ci VariableType::JS_POINTER() 25054514f5e3Sopenharmony_ci }; 25064514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25074514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 25084514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 25094514f5e3Sopenharmony_ci} 25104514f5e3Sopenharmony_ci 25114514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(MarkingBarrierWithEden) 25124514f5e3Sopenharmony_ci{ 25134514f5e3Sopenharmony_ci // 4 : 4 input parameters 25144514f5e3Sopenharmony_ci CallSignature index("MarkingBarrierWithEden", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 25154514f5e3Sopenharmony_ci *callSign = index; 25164514f5e3Sopenharmony_ci // 4 : 4 input parameters 25174514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 25184514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25194514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 25204514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25214514f5e3Sopenharmony_ci VariableType::JS_POINTER() 25224514f5e3Sopenharmony_ci }; 25234514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25244514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 25254514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 25264514f5e3Sopenharmony_ci} 25274514f5e3Sopenharmony_ci 25284514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SharedGCMarkingBarrier) 25294514f5e3Sopenharmony_ci{ 25304514f5e3Sopenharmony_ci // 2 : 2 input parameters 25314514f5e3Sopenharmony_ci CallSignature index("SharedGCMarkingBarrier", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 25324514f5e3Sopenharmony_ci *callSign = index; 25334514f5e3Sopenharmony_ci // 2 : 2 input parameters 25344514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 25354514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25364514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 25374514f5e3Sopenharmony_ci }; 25384514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25394514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 25404514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 25414514f5e3Sopenharmony_ci} 25424514f5e3Sopenharmony_ci 25434514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StoreBarrier) 25444514f5e3Sopenharmony_ci{ 25454514f5e3Sopenharmony_ci // 4 : 4 input parameters 25464514f5e3Sopenharmony_ci CallSignature index("StoreBarrier", 0, 4, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 25474514f5e3Sopenharmony_ci *callSign = index; 25484514f5e3Sopenharmony_ci // 4 : 4 input parameters 25494514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 25504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25514514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 25524514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25534514f5e3Sopenharmony_ci VariableType::JS_POINTER() 25544514f5e3Sopenharmony_ci }; 25554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25564514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 25574514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 25584514f5e3Sopenharmony_ci} 25594514f5e3Sopenharmony_ci 25604514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg0) 25614514f5e3Sopenharmony_ci{ 25624514f5e3Sopenharmony_ci // 2 : 2 input parameters 25634514f5e3Sopenharmony_ci CallSignature callArg0("callArg0", 0, 2, 25644514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 25654514f5e3Sopenharmony_ci *callSign = callArg0; 25664514f5e3Sopenharmony_ci // 2 : 2 input parameters 25674514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 25684514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25694514f5e3Sopenharmony_ci VariableType::JS_ANY() 25704514f5e3Sopenharmony_ci }; 25714514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25724514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 25734514f5e3Sopenharmony_ci} 25744514f5e3Sopenharmony_ci 25754514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArg1) 25764514f5e3Sopenharmony_ci{ 25774514f5e3Sopenharmony_ci // 3 : 3 input parameters 25784514f5e3Sopenharmony_ci CallSignature callArg1("callArg1", 0, 3, 25794514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 25804514f5e3Sopenharmony_ci *callSign = callArg1; 25814514f5e3Sopenharmony_ci // 3 : 3 input parameters 25824514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 25834514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 25844514f5e3Sopenharmony_ci VariableType::JS_ANY(), 25854514f5e3Sopenharmony_ci VariableType::JS_ANY() 25864514f5e3Sopenharmony_ci }; 25874514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 25884514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 25894514f5e3Sopenharmony_ci} 25904514f5e3Sopenharmony_ci 25914514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs2) 25924514f5e3Sopenharmony_ci{ 25934514f5e3Sopenharmony_ci // 4 : 4 input parameters 25944514f5e3Sopenharmony_ci CallSignature callArgs2("callArgs2", 0, 4, 25954514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 25964514f5e3Sopenharmony_ci *callSign = callArgs2; 25974514f5e3Sopenharmony_ci // 4 : 4 input parameters 25984514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 25994514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 26004514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26014514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26024514f5e3Sopenharmony_ci VariableType::JS_ANY() 26034514f5e3Sopenharmony_ci }; 26044514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26054514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 26064514f5e3Sopenharmony_ci} 26074514f5e3Sopenharmony_ci 26084514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallArgs3) 26094514f5e3Sopenharmony_ci{ 26104514f5e3Sopenharmony_ci // 5 : 5 input parameters 26114514f5e3Sopenharmony_ci CallSignature callArgs3("callArgs3", 0, 5, 26124514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 26134514f5e3Sopenharmony_ci *callSign = callArgs3; 26144514f5e3Sopenharmony_ci // 5 : 5 input parameters 26154514f5e3Sopenharmony_ci std::array<VariableType, 5> params = { 26164514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 26174514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26184514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26194514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26204514f5e3Sopenharmony_ci VariableType::JS_ANY() 26214514f5e3Sopenharmony_ci }; 26224514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26234514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 26244514f5e3Sopenharmony_ci} 26254514f5e3Sopenharmony_ci 26264514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallThisRange) 26274514f5e3Sopenharmony_ci{ 26284514f5e3Sopenharmony_ci // 3 : 3 input parameters 26294514f5e3Sopenharmony_ci CallSignature callThisRange("callThisRange", 0, 3, 26304514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 26314514f5e3Sopenharmony_ci *callSign = callThisRange; 26324514f5e3Sopenharmony_ci // 3 : 3 input parameters 26334514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 26344514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 26354514f5e3Sopenharmony_ci VariableType::JS_ANY(), 26364514f5e3Sopenharmony_ci VariableType::JS_ANY() 26374514f5e3Sopenharmony_ci }; 26384514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 26394514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26404514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 26414514f5e3Sopenharmony_ci} 26424514f5e3Sopenharmony_ci 26434514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CallRange) 26444514f5e3Sopenharmony_ci{ 26454514f5e3Sopenharmony_ci // 2 : 2 input parameters 26464514f5e3Sopenharmony_ci CallSignature callRange("callRange", 0, 2, 26474514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 26484514f5e3Sopenharmony_ci *callSign = callRange; 26494514f5e3Sopenharmony_ci // 2 : 2 input parameters 26504514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 26514514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 26524514f5e3Sopenharmony_ci VariableType::JS_ANY() 26534514f5e3Sopenharmony_ci }; 26544514f5e3Sopenharmony_ci callSign->SetVariadicArgs(true); 26554514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26564514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB); 26574514f5e3Sopenharmony_ci} 26584514f5e3Sopenharmony_ci 26594514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JsProxyCallInternal) 26604514f5e3Sopenharmony_ci{ 26614514f5e3Sopenharmony_ci // 4 : 4 input parameters 26624514f5e3Sopenharmony_ci CallSignature proxyCallInternal("JsProxyCallInternal", 0, 4, 26634514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_POINTER()); 26644514f5e3Sopenharmony_ci *callSign = proxyCallInternal; 26654514f5e3Sopenharmony_ci // 4 : 4 input parameters 26664514f5e3Sopenharmony_ci std::array<VariableType, 4> params = { 26674514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 26684514f5e3Sopenharmony_ci VariableType::INT64(), // actual argC 26694514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // callTarget 26704514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 26714514f5e3Sopenharmony_ci }; 26724514f5e3Sopenharmony_ci callSign->SetVariadicArgs(false); 26734514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26744514f5e3Sopenharmony_ci callSign->SetTailCall(true); 26754514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 26764514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::COMMON_STUB); 26774514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 26784514f5e3Sopenharmony_ci} 26794514f5e3Sopenharmony_ci 26804514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JsBoundCallInternal) 26814514f5e3Sopenharmony_ci{ 26824514f5e3Sopenharmony_ci // 6 : 6 input parameters 26834514f5e3Sopenharmony_ci CallSignature boundCallInternal("JsBoundCallInternal", 0, 6, 26844514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_POINTER()); 26854514f5e3Sopenharmony_ci *callSign = boundCallInternal; 26864514f5e3Sopenharmony_ci // 6 : 6 input parameters 26874514f5e3Sopenharmony_ci std::array<VariableType, 6> params = { 26884514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 26894514f5e3Sopenharmony_ci VariableType::INT64(), // actual argC 26904514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // callTarget 26914514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // argv 26924514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // this 26934514f5e3Sopenharmony_ci VariableType::JS_POINTER(), // new 26944514f5e3Sopenharmony_ci }; 26954514f5e3Sopenharmony_ci callSign->SetVariadicArgs(false); 26964514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 26974514f5e3Sopenharmony_ci callSign->SetTailCall(true); 26984514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 26994514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::COMMON_STUB); 27004514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 27014514f5e3Sopenharmony_ci} 27024514f5e3Sopenharmony_ci 27034514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateArrayFromList) 27044514f5e3Sopenharmony_ci{ 27054514f5e3Sopenharmony_ci // 3 : 3 input parameters 27064514f5e3Sopenharmony_ci CallSignature createArrayFromList("CreateArrayFromList", 0, 3, ArgumentsOrder::DEFAULT_ORDER, 27074514f5e3Sopenharmony_ci VariableType::JS_POINTER()); 27084514f5e3Sopenharmony_ci *callSign = createArrayFromList; 27094514f5e3Sopenharmony_ci // 3 : 3 input parameters 27104514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 27114514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 27124514f5e3Sopenharmony_ci VariableType::INT32(), 27134514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 27144514f5e3Sopenharmony_ci }; 27154514f5e3Sopenharmony_ci 27164514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27174514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_VARARGS); 27184514f5e3Sopenharmony_ci} 27194514f5e3Sopenharmony_ci 27204514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeoptHandlerAsm) 27214514f5e3Sopenharmony_ci{ 27224514f5e3Sopenharmony_ci // 1 : 1 input parameters 27234514f5e3Sopenharmony_ci CallSignature deoptHandlerAsm("DeoptHandlerAsm", 0, 3, 27244514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 27254514f5e3Sopenharmony_ci *callSign = deoptHandlerAsm; 27264514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { // 3 : 3 input parameters 27274514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 27284514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // deoptType 27294514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // depth 27304514f5e3Sopenharmony_ci }; 27314514f5e3Sopenharmony_ci callSign->SetVariadicArgs(false); 27324514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27334514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 27344514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::DEOPT_STUB); 27354514f5e3Sopenharmony_ci} 27364514f5e3Sopenharmony_ci 27374514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(TimeClip) 27384514f5e3Sopenharmony_ci{ 27394514f5e3Sopenharmony_ci // 1 : 1 input parameters 27404514f5e3Sopenharmony_ci CallSignature index("TimeClip", 0, 1, ArgumentsOrder::DEFAULT_ORDER, VariableType::FLOAT64()); 27414514f5e3Sopenharmony_ci *callSign = index; 27424514f5e3Sopenharmony_ci // 1 : 1 input parameters 27434514f5e3Sopenharmony_ci std::array<VariableType, 1> params = { 27444514f5e3Sopenharmony_ci VariableType::FLOAT64(), 27454514f5e3Sopenharmony_ci }; 27464514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27474514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 27484514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 27494514f5e3Sopenharmony_ci} 27504514f5e3Sopenharmony_ci 27514514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SetDateValues) 27524514f5e3Sopenharmony_ci{ 27534514f5e3Sopenharmony_ci // 3 : 3 input parameters 27544514f5e3Sopenharmony_ci CallSignature index("SetDateValues", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::FLOAT64()); 27554514f5e3Sopenharmony_ci *callSign = index; 27564514f5e3Sopenharmony_ci // 3 : 3 input parameters 27574514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 27584514f5e3Sopenharmony_ci VariableType::FLOAT64(), 27594514f5e3Sopenharmony_ci VariableType::FLOAT64(), 27604514f5e3Sopenharmony_ci VariableType::FLOAT64(), 27614514f5e3Sopenharmony_ci }; 27624514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27634514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 27644514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 27654514f5e3Sopenharmony_ci} 27664514f5e3Sopenharmony_ci 27674514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StartCallTimer) 27684514f5e3Sopenharmony_ci{ 27694514f5e3Sopenharmony_ci CallSignature index("StartCallTimer", 0, 3, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 27704514f5e3Sopenharmony_ci *callSign = index; 27714514f5e3Sopenharmony_ci // 3 : 3 input parameters 27724514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 27734514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 27744514f5e3Sopenharmony_ci VariableType::JS_ANY(), 27754514f5e3Sopenharmony_ci VariableType::BOOL() 27764514f5e3Sopenharmony_ci }; 27774514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27784514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 27794514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 27804514f5e3Sopenharmony_ci} 27814514f5e3Sopenharmony_ci 27824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(EndCallTimer) 27834514f5e3Sopenharmony_ci{ 27844514f5e3Sopenharmony_ci CallSignature index("EndCallTimer", 0, 2, ArgumentsOrder::DEFAULT_ORDER, VariableType::VOID()); 27854514f5e3Sopenharmony_ci *callSign = index; 27864514f5e3Sopenharmony_ci // 2 : 2 input parameters 27874514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 27884514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), 27894514f5e3Sopenharmony_ci VariableType::JS_ANY() 27904514f5e3Sopenharmony_ci }; 27914514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 27924514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 27934514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 27944514f5e3Sopenharmony_ci} 27954514f5e3Sopenharmony_ci 27964514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(GetSingleCharCodeByIndex) 27974514f5e3Sopenharmony_ci{ 27984514f5e3Sopenharmony_ci // 3 : 3 input parameters 27994514f5e3Sopenharmony_ci CallSignature signature("GetSingleCharCodeByIndex", 0, 3, 28004514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::INT32()); 28014514f5e3Sopenharmony_ci *callSign = signature; 28024514f5e3Sopenharmony_ci // 3 : 3 input parameters 28034514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 28044514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 28054514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ecmaString 28064514f5e3Sopenharmony_ci VariableType::INT32(), // index 28074514f5e3Sopenharmony_ci }; 28084514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 28094514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 28104514f5e3Sopenharmony_ci} 28114514f5e3Sopenharmony_ci 28124514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateStringBySingleCharCode) 28134514f5e3Sopenharmony_ci{ 28144514f5e3Sopenharmony_ci // 2 : 2 input parameters 28154514f5e3Sopenharmony_ci CallSignature signature("CreateStringByCharCode", 0, 2, 28164514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 28174514f5e3Sopenharmony_ci *callSign = signature; 28184514f5e3Sopenharmony_ci // 2 : 2 input parameters 28194514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 28204514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 28214514f5e3Sopenharmony_ci VariableType::INT32(), // charcode 28224514f5e3Sopenharmony_ci }; 28234514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 28244514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 28254514f5e3Sopenharmony_ci} 28264514f5e3Sopenharmony_ci 28274514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Getpropiterator) 28284514f5e3Sopenharmony_ci{ 28294514f5e3Sopenharmony_ci // 2 : 2 input parameters 28304514f5e3Sopenharmony_ci CallSignature signature("Getpropiterator", 0, 2, 28314514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 28324514f5e3Sopenharmony_ci *callSign = signature; 28334514f5e3Sopenharmony_ci // 2 : 2 input parameters 28344514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 28354514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 28364514f5e3Sopenharmony_ci VariableType::JS_ANY(), // object 28374514f5e3Sopenharmony_ci }; 28384514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 28394514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 28404514f5e3Sopenharmony_ci} 28414514f5e3Sopenharmony_ci 28424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(Getnextpropname) 28434514f5e3Sopenharmony_ci{ 28444514f5e3Sopenharmony_ci // 2 : 2 input parameters 28454514f5e3Sopenharmony_ci CallSignature signature("Getnextpropname", 0, 2, 28464514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 28474514f5e3Sopenharmony_ci *callSign = signature; 28484514f5e3Sopenharmony_ci // 2 : 2 input parameters 28494514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 28504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 28514514f5e3Sopenharmony_ci VariableType::JS_ANY(), // iter 28524514f5e3Sopenharmony_ci }; 28534514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 28544514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 28554514f5e3Sopenharmony_ci} 28564514f5e3Sopenharmony_ci 28574514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateJSSetIterator) 28584514f5e3Sopenharmony_ci{ 28594514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(CreateJSSetIterator) 28604514f5e3Sopenharmony_ci} 28614514f5e3Sopenharmony_ci 28624514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSSetEntries) 28634514f5e3Sopenharmony_ci{ 28644514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(JSSetEntries) 28654514f5e3Sopenharmony_ci} 28664514f5e3Sopenharmony_ci 28674514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateJSMapIterator) 28684514f5e3Sopenharmony_ci{ 28694514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(CreateJSMapIterator) 28704514f5e3Sopenharmony_ci} 28714514f5e3Sopenharmony_ci 28724514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSMapKeys) 28734514f5e3Sopenharmony_ci{ 28744514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(JSMapKeys) 28754514f5e3Sopenharmony_ci} 28764514f5e3Sopenharmony_ci 28774514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSMapValues) 28784514f5e3Sopenharmony_ci{ 28794514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(JSMapValues) 28804514f5e3Sopenharmony_ci} 28814514f5e3Sopenharmony_ci 28824514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSMapGet) 28834514f5e3Sopenharmony_ci{ 28844514f5e3Sopenharmony_ci BINARY_CALL_SIGNATURE(JSMapGet) 28854514f5e3Sopenharmony_ci} 28864514f5e3Sopenharmony_ci 28874514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(StringIteratorNext) 28884514f5e3Sopenharmony_ci{ 28894514f5e3Sopenharmony_ci UNARY_CALL_SIGNATURE(StringIteratorNext) 28904514f5e3Sopenharmony_ci} 28914514f5e3Sopenharmony_ci 28924514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSMapHas) 28934514f5e3Sopenharmony_ci{ 28944514f5e3Sopenharmony_ci *callSign = CallSignature("JSMapHas", 0, ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL(), 28954514f5e3Sopenharmony_ci { 28964514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 28974514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 28984514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 28994514f5e3Sopenharmony_ci }); 29004514f5e3Sopenharmony_ci} 29014514f5e3Sopenharmony_ci 29024514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSSetHas) 29034514f5e3Sopenharmony_ci{ 29044514f5e3Sopenharmony_ci *callSign = CallSignature("JSSetHas", 0, ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL(), 29054514f5e3Sopenharmony_ci { 29064514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29074514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 29084514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 29094514f5e3Sopenharmony_ci }); 29104514f5e3Sopenharmony_ci} 29114514f5e3Sopenharmony_ci 29124514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSMapDelete) 29134514f5e3Sopenharmony_ci{ 29144514f5e3Sopenharmony_ci *callSign = CallSignature("JSMapDelete", 0, ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL(), 29154514f5e3Sopenharmony_ci { 29164514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29174514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 29184514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 29194514f5e3Sopenharmony_ci }); 29204514f5e3Sopenharmony_ci} 29214514f5e3Sopenharmony_ci 29224514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSSetDelete) 29234514f5e3Sopenharmony_ci{ 29244514f5e3Sopenharmony_ci *callSign = CallSignature("JSSetDelete", 0, ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL(), 29254514f5e3Sopenharmony_ci { 29264514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29274514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 29284514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 29294514f5e3Sopenharmony_ci }); 29304514f5e3Sopenharmony_ci} 29314514f5e3Sopenharmony_ci 29324514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(JSSetAdd) 29334514f5e3Sopenharmony_ci{ 29344514f5e3Sopenharmony_ci *callSign = CallSignature("JSSetAdd", 0, ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY(), 29354514f5e3Sopenharmony_ci { 29364514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29374514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 29384514f5e3Sopenharmony_ci VariableType::JS_ANY(), // key 29394514f5e3Sopenharmony_ci }); 29404514f5e3Sopenharmony_ci} 29414514f5e3Sopenharmony_ci 29424514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FastStringEqual) 29434514f5e3Sopenharmony_ci{ 29444514f5e3Sopenharmony_ci // 3 : 3 input parameters 29454514f5e3Sopenharmony_ci CallSignature signature("FastStringEqual", 0, 3, 29464514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 29474514f5e3Sopenharmony_ci *callSign = signature; 29484514f5e3Sopenharmony_ci // 3 : 3 input parameters 29494514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 29504514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29514514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ecmaString1 29524514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ecmaString2 29534514f5e3Sopenharmony_ci }; 29544514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 29554514f5e3Sopenharmony_ci} 29564514f5e3Sopenharmony_ci 29574514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(FastStringAdd) 29584514f5e3Sopenharmony_ci{ 29594514f5e3Sopenharmony_ci // 3 : 3 input parameters 29604514f5e3Sopenharmony_ci CallSignature signature("FastStringAdd", 0, 3, 29614514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 29624514f5e3Sopenharmony_ci *callSign = signature; 29634514f5e3Sopenharmony_ci // 3 : 3 input parameters 29644514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 29654514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29664514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ecmaString1 29674514f5e3Sopenharmony_ci VariableType::JS_ANY(), // ecmaString2 29684514f5e3Sopenharmony_ci }; 29694514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 29704514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 29714514f5e3Sopenharmony_ci} 29724514f5e3Sopenharmony_ci 29734514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(DeleteObjectProperty) 29744514f5e3Sopenharmony_ci{ 29754514f5e3Sopenharmony_ci // 3 : 3 input parameters 29764514f5e3Sopenharmony_ci CallSignature signature("DeleteObjectProperty", 0, 3, 29774514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 29784514f5e3Sopenharmony_ci *callSign = signature; 29794514f5e3Sopenharmony_ci // 3 : 3 input parameters 29804514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 29814514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 29824514f5e3Sopenharmony_ci VariableType::JS_ANY(), // object 29834514f5e3Sopenharmony_ci VariableType::JS_ANY(), // prop 29844514f5e3Sopenharmony_ci }; 29854514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 29864514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 29874514f5e3Sopenharmony_ci} 29884514f5e3Sopenharmony_ci 29894514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CopyTypedArrayBuffer) 29904514f5e3Sopenharmony_ci{ 29914514f5e3Sopenharmony_ci // 6 : 6 input parameters 29924514f5e3Sopenharmony_ci CallSignature CopyTypedArrayBuffer("CopyTypedArrayBuffer", 0, 6, 29934514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 29944514f5e3Sopenharmony_ci *callSign = CopyTypedArrayBuffer; 29954514f5e3Sopenharmony_ci // 6 : 6 input parameters 29964514f5e3Sopenharmony_ci std::array<VariableType, 6 > params = { 29974514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 29984514f5e3Sopenharmony_ci VariableType::JS_POINTER(), 29994514f5e3Sopenharmony_ci VariableType::INT32(), 30004514f5e3Sopenharmony_ci VariableType::INT32(), 30014514f5e3Sopenharmony_ci VariableType::INT32(), 30024514f5e3Sopenharmony_ci VariableType::INT32() 30034514f5e3Sopenharmony_ci }; 30044514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 30054514f5e3Sopenharmony_ci callSign->SetGCLeafFunction(true); 30064514f5e3Sopenharmony_ci callSign->SetTargetKind(CallSignature::TargetKind::RUNTIME_STUB_NO_GC); 30074514f5e3Sopenharmony_ci} 30084514f5e3Sopenharmony_ci 30094514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateJSTypedArrayEntries) 30104514f5e3Sopenharmony_ci{ 30114514f5e3Sopenharmony_ci // 2 : 2 input parameters 30124514f5e3Sopenharmony_ci CallSignature signature("CreateJSTypedArrayEntries", 0, 2, 30134514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 30144514f5e3Sopenharmony_ci *callSign = signature; 30154514f5e3Sopenharmony_ci // 2 : 2 input parameters 30164514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 30174514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 30184514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 30194514f5e3Sopenharmony_ci }; 30204514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 30214514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 30224514f5e3Sopenharmony_ci} 30234514f5e3Sopenharmony_ci 30244514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(SameValue) 30254514f5e3Sopenharmony_ci{ 30264514f5e3Sopenharmony_ci // 3 : 3 input parameters 30274514f5e3Sopenharmony_ci CallSignature signature("SameValue", 0, 3, 30284514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::BOOL()); 30294514f5e3Sopenharmony_ci *callSign = signature; 30304514f5e3Sopenharmony_ci // 3 : 3 input parameters 30314514f5e3Sopenharmony_ci std::array<VariableType, 3> params = { 30324514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 30334514f5e3Sopenharmony_ci VariableType::JS_ANY(), // left 30344514f5e3Sopenharmony_ci VariableType::JS_ANY(), // right 30354514f5e3Sopenharmony_ci }; 30364514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 30374514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 30384514f5e3Sopenharmony_ci} 30394514f5e3Sopenharmony_ci 30404514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateJSTypedArrayKeys) 30414514f5e3Sopenharmony_ci{ 30424514f5e3Sopenharmony_ci // 2 : 2 input parameters 30434514f5e3Sopenharmony_ci CallSignature signature("CreateJSTypedArrayKeys", 0, 2, 30444514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 30454514f5e3Sopenharmony_ci *callSign = signature; 30464514f5e3Sopenharmony_ci // 2 : 2 input parameters 30474514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 30484514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 30494514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 30504514f5e3Sopenharmony_ci }; 30514514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 30524514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 30534514f5e3Sopenharmony_ci} 30544514f5e3Sopenharmony_ci 30554514f5e3Sopenharmony_ciDEF_CALL_SIGNATURE(CreateJSTypedArrayValues) 30564514f5e3Sopenharmony_ci{ 30574514f5e3Sopenharmony_ci // 2 : 2 input parameters 30584514f5e3Sopenharmony_ci CallSignature signature("CreateJSTypedArrayValues", 0, 2, 30594514f5e3Sopenharmony_ci ArgumentsOrder::DEFAULT_ORDER, VariableType::JS_ANY()); 30604514f5e3Sopenharmony_ci *callSign = signature; 30614514f5e3Sopenharmony_ci // 2 : 2 input parameters 30624514f5e3Sopenharmony_ci std::array<VariableType, 2> params = { 30634514f5e3Sopenharmony_ci VariableType::NATIVE_POINTER(), // glue 30644514f5e3Sopenharmony_ci VariableType::JS_ANY(), // obj 30654514f5e3Sopenharmony_ci }; 30664514f5e3Sopenharmony_ci callSign->SetParameters(params.data()); 30674514f5e3Sopenharmony_ci callSign->SetCallConv(CallSignature::CallConv::CCallConv); 30684514f5e3Sopenharmony_ci} 30694514f5e3Sopenharmony_ci} // namespace panda::ecmascript::kungfu 3070