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