14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci#ifndef ECMASCRIPT_COMPILER_COMMON_STUB_CSIGNS_H 174514f5e3Sopenharmony_ci#define ECMASCRIPT_COMPILER_COMMON_STUB_CSIGNS_H 184514f5e3Sopenharmony_ci 194514f5e3Sopenharmony_ci#include "ecmascript/compiler/call_signature.h" 204514f5e3Sopenharmony_ci 214514f5e3Sopenharmony_cinamespace panda::ecmascript::kungfu { 224514f5e3Sopenharmony_ci#define COMMON_STUB_LIST(V) \ 234514f5e3Sopenharmony_ci V(Add) \ 244514f5e3Sopenharmony_ci V(Sub) \ 254514f5e3Sopenharmony_ci V(Mul) \ 264514f5e3Sopenharmony_ci V(Div) \ 274514f5e3Sopenharmony_ci V(Mod) \ 284514f5e3Sopenharmony_ci V(Equal) \ 294514f5e3Sopenharmony_ci V(NotEqual) \ 304514f5e3Sopenharmony_ci V(StrictEqual) \ 314514f5e3Sopenharmony_ci V(StrictNotEqual) \ 324514f5e3Sopenharmony_ci V(Less) \ 334514f5e3Sopenharmony_ci V(LessEq) \ 344514f5e3Sopenharmony_ci V(Greater) \ 354514f5e3Sopenharmony_ci V(GreaterEq) \ 364514f5e3Sopenharmony_ci V(Shl) \ 374514f5e3Sopenharmony_ci V(Shr) \ 384514f5e3Sopenharmony_ci V(Ashr) \ 394514f5e3Sopenharmony_ci V(And) \ 404514f5e3Sopenharmony_ci V(Or) \ 414514f5e3Sopenharmony_ci V(Xor) \ 424514f5e3Sopenharmony_ci V(Instanceof) \ 434514f5e3Sopenharmony_ci V(TypeOf) \ 444514f5e3Sopenharmony_ci V(Inc) \ 454514f5e3Sopenharmony_ci V(Dec) \ 464514f5e3Sopenharmony_ci V(Neg) \ 474514f5e3Sopenharmony_ci V(Not) \ 484514f5e3Sopenharmony_ci V(ToBooleanTrue) \ 494514f5e3Sopenharmony_ci V(ToBooleanFalse) \ 504514f5e3Sopenharmony_ci V(GetPropertyByName) \ 514514f5e3Sopenharmony_ci V(DeprecatedGetPropertyByName) \ 524514f5e3Sopenharmony_ci V(SetPropertyByName) \ 534514f5e3Sopenharmony_ci V(DeprecatedSetPropertyByName) \ 544514f5e3Sopenharmony_ci V(SetPropertyByNameWithOwn) \ 554514f5e3Sopenharmony_ci V(GetPropertyByIndex) \ 564514f5e3Sopenharmony_ci V(SetPropertyByIndex) \ 574514f5e3Sopenharmony_ci V(SetPropertyByIndexWithOwn) \ 584514f5e3Sopenharmony_ci V(GetPropertyByValue) \ 594514f5e3Sopenharmony_ci V(DeprecatedGetPropertyByValue) \ 604514f5e3Sopenharmony_ci V(SetPropertyByValue) \ 614514f5e3Sopenharmony_ci V(DeprecatedSetPropertyByValue) \ 624514f5e3Sopenharmony_ci V(TryLdGlobalByName) \ 634514f5e3Sopenharmony_ci V(TryStGlobalByName) \ 644514f5e3Sopenharmony_ci V(LdGlobalVar) \ 654514f5e3Sopenharmony_ci V(LdObjByIndex) \ 664514f5e3Sopenharmony_ci V(StGlobalVar) \ 674514f5e3Sopenharmony_ci V(StObjByIndex) \ 684514f5e3Sopenharmony_ci V(StOwnByIndex) \ 694514f5e3Sopenharmony_ci V(StOwnByName) \ 704514f5e3Sopenharmony_ci V(StOwnByNameWithNameSet) \ 714514f5e3Sopenharmony_ci V(StOwnByValue) \ 724514f5e3Sopenharmony_ci V(StOwnByValueWithNameSet) \ 734514f5e3Sopenharmony_ci V(SetPropertyByValueWithOwn) \ 744514f5e3Sopenharmony_ci V(TryLoadICByName) \ 754514f5e3Sopenharmony_ci V(TryLoadICByValue) \ 764514f5e3Sopenharmony_ci V(TryStoreICByName) \ 774514f5e3Sopenharmony_ci V(TryStoreICByValue) \ 784514f5e3Sopenharmony_ci V(SetValueWithBarrier) \ 794514f5e3Sopenharmony_ci V(SetNonSValueWithBarrier) \ 804514f5e3Sopenharmony_ci V(SetValueWithEdenBarrier) \ 814514f5e3Sopenharmony_ci V(SetNonSValueWithEdenBarrier) \ 824514f5e3Sopenharmony_ci V(SetSValueWithBarrier) \ 834514f5e3Sopenharmony_ci V(NewLexicalEnv) \ 844514f5e3Sopenharmony_ci V(CopyRestArgs) \ 854514f5e3Sopenharmony_ci V(GetUnmappedArgs) \ 864514f5e3Sopenharmony_ci V(GetCallSpreadArgs) \ 874514f5e3Sopenharmony_ci V(NewThisObjectChecked) \ 884514f5e3Sopenharmony_ci V(ConstructorCheck) \ 894514f5e3Sopenharmony_ci V(CreateEmptyArray) \ 904514f5e3Sopenharmony_ci V(CreateArrayWithBuffer) \ 914514f5e3Sopenharmony_ci V(NewJSObject) \ 924514f5e3Sopenharmony_ci V(JsBoundCallInternal) \ 934514f5e3Sopenharmony_ci V(CreateStringBySingleCharCode) \ 944514f5e3Sopenharmony_ci V(Getpropiterator) \ 954514f5e3Sopenharmony_ci V(Getnextpropname) \ 964514f5e3Sopenharmony_ci V(CreateJSSetIterator) \ 974514f5e3Sopenharmony_ci V(JSSetEntries) \ 984514f5e3Sopenharmony_ci V(CreateJSMapIterator) \ 994514f5e3Sopenharmony_ci V(JSMapKeys) \ 1004514f5e3Sopenharmony_ci V(JSMapValues) \ 1014514f5e3Sopenharmony_ci V(JSMapGet) \ 1024514f5e3Sopenharmony_ci V(JSMapHas) \ 1034514f5e3Sopenharmony_ci V(JSSetHas) \ 1044514f5e3Sopenharmony_ci V(JSSetAdd) \ 1054514f5e3Sopenharmony_ci V(JSMapDelete) \ 1064514f5e3Sopenharmony_ci V(JSSetDelete) \ 1074514f5e3Sopenharmony_ci V(CreateJSTypedArrayEntries) \ 1084514f5e3Sopenharmony_ci V(CreateJSTypedArrayKeys) \ 1094514f5e3Sopenharmony_ci V(CreateJSTypedArrayValues) \ 1104514f5e3Sopenharmony_ci V(GetSingleCharCodeByIndex) \ 1114514f5e3Sopenharmony_ci V(FastStringEqual) \ 1124514f5e3Sopenharmony_ci V(FastStringAdd) \ 1134514f5e3Sopenharmony_ci V(Definefunc) \ 1144514f5e3Sopenharmony_ci V(DefineField) \ 1154514f5e3Sopenharmony_ci V(ConvertCharToInt32) \ 1164514f5e3Sopenharmony_ci V(ConvertCharToDouble) \ 1174514f5e3Sopenharmony_ci V(DeleteObjectProperty) \ 1184514f5e3Sopenharmony_ci V(SameValue) \ 1194514f5e3Sopenharmony_ci V(StringIteratorNext) \ 1204514f5e3Sopenharmony_ci V(VerifyBarrier) 1214514f5e3Sopenharmony_ci 1224514f5e3Sopenharmony_ci#define COMMON_STUB_ID_LIST(V) \ 1234514f5e3Sopenharmony_ci COMMON_STUB_LIST(V) 1244514f5e3Sopenharmony_ci 1254514f5e3Sopenharmony_ciclass CommonStubCSigns { 1264514f5e3Sopenharmony_cipublic: 1274514f5e3Sopenharmony_ci enum ID { 1284514f5e3Sopenharmony_ci#define DEF_STUB_ID(name) name, 1294514f5e3Sopenharmony_ci COMMON_STUB_ID_LIST(DEF_STUB_ID) 1304514f5e3Sopenharmony_ci#undef DEF_STUB_ID 1314514f5e3Sopenharmony_ci NUM_OF_STUBS 1324514f5e3Sopenharmony_ci }; 1334514f5e3Sopenharmony_ci 1344514f5e3Sopenharmony_ci static void Initialize(); 1354514f5e3Sopenharmony_ci 1364514f5e3Sopenharmony_ci static void GetCSigns(std::vector<const CallSignature*>& callSigns); 1374514f5e3Sopenharmony_ci 1384514f5e3Sopenharmony_ci static const CallSignature *Get(size_t index) 1394514f5e3Sopenharmony_ci { 1404514f5e3Sopenharmony_ci ASSERT(index < NUM_OF_STUBS); 1414514f5e3Sopenharmony_ci return &callSigns_[index]; 1424514f5e3Sopenharmony_ci } 1434514f5e3Sopenharmony_ci 1444514f5e3Sopenharmony_ci static const std::string &GetName(size_t index) 1454514f5e3Sopenharmony_ci { 1464514f5e3Sopenharmony_ci ASSERT(index < NUM_OF_STUBS); 1474514f5e3Sopenharmony_ci return callSigns_[index].GetName(); 1484514f5e3Sopenharmony_ci } 1494514f5e3Sopenharmony_ci 1504514f5e3Sopenharmony_ciprivate: 1514514f5e3Sopenharmony_ci static CallSignature callSigns_[NUM_OF_STUBS]; 1524514f5e3Sopenharmony_ci}; 1534514f5e3Sopenharmony_ci} // namespace panda::ecmascript::kungfu 1544514f5e3Sopenharmony_ci#endif // ECMASCRIPT_COMPILER_COMMON_STUB_CSIGNS_H 155