1 /** 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef LIBABCKIT_SRC_ADAPTER_STATIC_IR_STATIC_H 17 #define LIBABCKIT_SRC_ADAPTER_STATIC_IR_STATIC_H 18 19 #include "libabckit/include/c/metadata_core.h" 20 #include "libabckit/include/c/ir_core.h" 21 #include "libabckit/include/c/isa/isa_dynamic.h" 22 #include "libabckit/src/include_v2/c/isa/isa_static.h" 23 24 #include <cstdint> 25 #include <cstdarg> 26 27 namespace libabckit { 28 29 // ======================================== 30 // Api for Graph manipulation 31 // ======================================== 32 33 AbckitBasicBlock *GgetStartBasicBlockStatic(AbckitGraph *graph); 34 AbckitBasicBlock *GgetEndBasicBlockStatic(AbckitGraph *graph); 35 AbckitBasicBlock *GgetBasicBlockStatic(AbckitGraph *graph, uint32_t id); 36 uint32_t GgetNumberOfParametersStatic(AbckitGraph *graph); 37 AbckitInst *GgetParameterStatic(AbckitGraph *graph, uint32_t index); 38 void GinsertTryCatchStatic(AbckitBasicBlock *tryFirstBB, AbckitBasicBlock *tryLastBB, AbckitBasicBlock *catchBeginBB, 39 AbckitBasicBlock *catchEndBB); 40 uint32_t GgetNumberOfBasicBlocksStatic(AbckitGraph *graph); 41 void GdumpStatic(AbckitGraph *graph, int fd); 42 void GrunPassRemoveUnreachableBlocksStatic(AbckitGraph *graph); 43 void IdumpStatic(AbckitInst *inst, int fd); 44 bool GvisitBlocksRPOStatic(AbckitGraph *graph, void *data, bool (*cb)(AbckitBasicBlock *bb, void *data)); 45 46 // ======================================== 47 // Api for basic block manipulation 48 // ======================================== 49 50 bool BBvisitSuccBlocksStatic(AbckitBasicBlock *curBasicBlock, void *data, 51 bool (*cb)(AbckitBasicBlock *succBasicBlock, void *data)); 52 bool BBvisitPredBlocksStatic(AbckitBasicBlock *curBasicBlock, void *data, 53 bool (*cb)(AbckitBasicBlock *succBasicBlock, void *data)); 54 bool BBvisitDominatedBlocksStatic(AbckitBasicBlock *basicBlock, void *data, 55 bool (*cb)(AbckitBasicBlock *dominatedBasicBlock, void *data)); 56 AbckitInst *BBgetFirstInstStatic(AbckitBasicBlock *basicBlock); 57 AbckitInst *BBgetLastInstStatic(AbckitBasicBlock *basicBlock); 58 AbckitGraph *BBgetGraphStatic(AbckitBasicBlock *basicBlock); 59 AbckitBasicBlock *BBgetTrueBranchStatic(AbckitBasicBlock *bb); 60 AbckitBasicBlock *BBgetFalseBranchStatic(AbckitBasicBlock *bb); 61 AbckitBasicBlock *BBcreateEmptyStatic(AbckitGraph *graph); 62 AbckitBasicBlock *BBgetSuccBlockStatic(AbckitBasicBlock *basicBlock, uint32_t index); 63 AbckitBasicBlock *BBgetPredBlockStatic(AbckitBasicBlock *basicBlock, uint32_t index); 64 AbckitBasicBlock *BBgetImmediateDominatorStatic(AbckitBasicBlock *basicBlock); 65 uint64_t BBgetSuccBlockCountStatic(AbckitBasicBlock *basicBlock); 66 uint64_t BBgetPredBlockCountStatic(AbckitBasicBlock *basicBlock); 67 uint32_t BBgetIdStatic(AbckitBasicBlock *basicBlock); 68 uint32_t BBgetNumberOfInstructionsStatic(AbckitBasicBlock *basicBlock); 69 AbckitBasicBlock *BBsplitBlockAfterInstructionStatic(AbckitBasicBlock *basicBlock, AbckitInst *inst, bool makeEdge); 70 void BBremoveAllInstsStatic(AbckitBasicBlock *basicBlock); 71 void BBaddInstFrontStatic(AbckitBasicBlock *basicBlock, AbckitInst *inst); 72 void BBaddInstBackStatic(AbckitBasicBlock *basicBlock, AbckitInst *inst); 73 void BBdumpStatic(AbckitBasicBlock *basicBlock, int fd); 74 void BBinsertSuccBlockStatic(AbckitBasicBlock *basicBlock, AbckitBasicBlock *succBlock, uint32_t index); 75 void BBappendSuccBlockStatic(AbckitBasicBlock *basicBlock, AbckitBasicBlock *succBlock); 76 void BBdisconnectSuccBlockStatic(AbckitBasicBlock *bb, size_t index); 77 bool BBisStartStatic(AbckitBasicBlock *basicBlock); 78 bool BBisEndStatic(AbckitBasicBlock *basicBlock); 79 bool BBisLoopHeadStatic(AbckitBasicBlock *basicBlock); 80 bool BBisLoopPreheadStatic(AbckitBasicBlock *basicBlock); 81 bool BBisTryBeginStatic(AbckitBasicBlock *basicBlock); 82 bool BBisTryStatic(AbckitBasicBlock *basicBlock); 83 bool BBisTryEndStatic(AbckitBasicBlock *basicBlock); 84 bool BBisCatchBeginStatic(AbckitBasicBlock *basicBlock); 85 bool BBisCatchStatic(AbckitBasicBlock *basicBlock); 86 bool BBcheckDominanceStatic(AbckitBasicBlock *basicBlock, AbckitBasicBlock *dominator); 87 AbckitInst *BBcreatePhiStatic(AbckitBasicBlock *bb, size_t argCount, std::va_list args); 88 AbckitInst *BBcreateCatchPhiStatic(AbckitBasicBlock *catchBegin, size_t argCount, std::va_list args); 89 90 // ======================================== 91 // Api for instruction manipulation 92 // ======================================== 93 94 AbckitInst *IcreateCallStaticStatic(AbckitGraph *graph, AbckitCoreFunction *inputFunction, size_t argCount, 95 va_list argp); 96 AbckitInst *IcreateCallVirtualStatic(AbckitGraph *graph, AbckitInst *inputObj, AbckitCoreFunction *inputFunction, 97 size_t argCount, va_list argp); 98 AbckitInst *IcreateLoadStringStatic(AbckitGraph *graph, AbckitString *str); 99 AbckitInst *GfindOrCreateConstantI32Static(AbckitGraph *graph, int32_t value); 100 AbckitInst *GfindOrCreateConstantI64Static(AbckitGraph *graph, int64_t value); 101 AbckitInst *GfindOrCreateConstantU64Static(AbckitGraph *graph, uint64_t value); 102 AbckitInst *GfindOrCreateConstantF64Static(AbckitGraph *graph, double value); 103 104 AbckitInst *IcreateCmpStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 105 AbckitInst *IcreateNegStatic(AbckitGraph *graph, AbckitInst *input0); 106 107 AbckitInst *IcreateAddStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 108 AbckitInst *IcreateSubStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 109 AbckitInst *IcreateMulStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 110 AbckitInst *IcreateDivStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 111 AbckitInst *IcreateModStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 112 AbckitInst *IcreateEqualsStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 113 114 AbckitInst *IcreateAddIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 115 AbckitInst *IcreateSubIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 116 AbckitInst *IcreateMulIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 117 AbckitInst *IcreateDivIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 118 AbckitInst *IcreateModIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 119 120 AbckitInst *IcreateShlStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 121 AbckitInst *IcreateShrStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 122 AbckitInst *IcreateAShrStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 123 124 AbckitInst *IcreateShlIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 125 AbckitInst *IcreateShrIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 126 AbckitInst *IcreateAShrIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 127 128 AbckitInst *IcreateNotStatic(AbckitGraph *graph, AbckitInst *input0); 129 AbckitInst *IcreateOrStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 130 AbckitInst *IcreateXorStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 131 AbckitInst *IcreateAndStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 132 133 AbckitInst *IcreateOrIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 134 AbckitInst *IcreateXorIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 135 AbckitInst *IcreateAndIStatic(AbckitGraph *graph, AbckitInst *input0, uint64_t imm); 136 137 AbckitInst *IcreateLoadArrayStatic(AbckitGraph *graph, AbckitInst *arrayRef, AbckitInst *idx, 138 AbckitTypeId returnTypeId); 139 AbckitInst *IcreateStoreArrayStatic(AbckitGraph *graph, AbckitInst *arrayRef, AbckitInst *idx, AbckitInst *value, 140 AbckitTypeId valueTypeId); 141 AbckitInst *IcreateStoreArrayWideStatic(AbckitGraph *graph, AbckitInst *arrayRef, AbckitInst *idx, AbckitInst *value, 142 AbckitTypeId valueTypeId); 143 AbckitInst *IcreateLenArrayStatic(AbckitGraph *graph, AbckitInst *arr); 144 AbckitInst *IcreateLoadConstArrayStatic(AbckitGraph *graph, AbckitLiteralArray *literalArray); 145 146 AbckitInst *IcreateCheckCastStatic(AbckitGraph *graph, AbckitInst *inputObj, AbckitType *targetType); 147 AbckitInst *IcreateIsInstanceStatic(AbckitGraph *graph, AbckitInst *inputObj, AbckitType *targetType); 148 AbckitInst *IcreateLoadUndefinedStatic(AbckitGraph *graph); 149 AbckitInst *IcreateCastStatic(AbckitGraph *graph, AbckitInst *input0, AbckitTypeId targetTypeId); 150 AbckitInst *IcreateIsUndefinedStatic(AbckitGraph *graph, AbckitInst *inputObj); 151 152 AbckitInst *IcreateThrowStatic(AbckitGraph *graph, AbckitInst *input0); 153 154 AbckitInst *IcreateReturnStatic(AbckitGraph *graph, AbckitInst *input0); 155 AbckitInst *IcreateReturnVoidStatic(AbckitGraph *graph); 156 AbckitInst *GcreateNullPtrStatic(AbckitGraph *graph); 157 158 int32_t IgetConstantValueI32Static(AbckitInst *inst); 159 int64_t IgetConstantValueI64Static(AbckitInst *inst); 160 uint64_t IgetConstantValueU64Static(AbckitInst *inst); 161 double IgetConstantValueF64Static(AbckitInst *inst); 162 AbckitLiteralArray *IgetLiteralArrayStatic(AbckitInst *inst); 163 void IsetLiteralArrayStatic(AbckitInst *inst, AbckitLiteralArray *la); 164 AbckitString *IgetStringStatic(AbckitInst *inst); 165 void IsetStringStatic(AbckitInst *inst, AbckitString *str); 166 167 AbckitInst *IcreateDynCallthis0Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 168 AbckitInst *IcreateDynCallthis1Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 169 AbckitInst *IcreateDynCallarg0Static(AbckitGraph *graph, AbckitInst *acc); 170 AbckitInst *IcreateDynCallarg1Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 171 AbckitInst *IcreateDynTryldglobalbynameStatic(AbckitGraph *graph, AbckitString *string); 172 AbckitInst *IcreateDynLdobjbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 173 AbckitInst *IcreateDynNewobjrangeStatic(AbckitGraph *graph, size_t argCount, std::va_list args); 174 175 AbckitInst *IcreateDynDefinefuncStatic(AbckitGraph *graph, AbckitCoreFunction *function, uint64_t imm0); 176 177 AbckitInst *IcreateDynNegStatic(AbckitGraph *graph, AbckitInst *acc); 178 179 AbckitInst *IcreateDynAdd2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 180 AbckitInst *IcreateDynSub2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 181 AbckitInst *IcreateDynMul2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 182 AbckitInst *IcreateDynDiv2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 183 AbckitInst *IcreateDynMod2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 184 AbckitInst *IcreateDynExpStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 185 186 AbckitInst *IcreateDynShl2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 187 AbckitInst *IcreateDynShr2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 188 AbckitInst *IcreateDynAshr2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 189 190 AbckitInst *IcreateDynNotStatic(AbckitGraph *graph, AbckitInst *acc); 191 AbckitInst *IcreateDynOr2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 192 AbckitInst *IcreateDynXor2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 193 AbckitInst *IcreateDynAnd2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 194 195 AbckitInst *IcreateDynIncStatic(AbckitGraph *graph, AbckitInst *acc); 196 AbckitInst *IcreateDynDecStatic(AbckitGraph *graph, AbckitInst *acc); 197 198 AbckitInst *IcreateDynEqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 199 AbckitInst *IcreateDynNoteqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 200 AbckitInst *IcreateDynLessStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 201 AbckitInst *IcreateDynLesseqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 202 AbckitInst *IcreateDynGreaterStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 203 AbckitInst *IcreateDynGreatereqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 204 AbckitInst *IcreateDynStrictnoteqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 205 AbckitInst *IcreateDynStricteqStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 206 207 AbckitInst *IcreateDynIstrueStatic(AbckitGraph *graph, AbckitInst *acc); 208 AbckitInst *IcreateDynIsfalseStatic(AbckitGraph *graph, AbckitInst *acc); 209 AbckitInst *IcreateDynTonumberStatic(AbckitGraph *graph, AbckitInst *acc); 210 AbckitInst *IcreateDynTonumericStatic(AbckitGraph *graph, AbckitInst *acc); 211 212 AbckitInst *IcreateDynThrowStatic(AbckitGraph *graph, AbckitInst *acc); 213 AbckitInst *IcreateDynThrowNotexistsStatic(AbckitGraph *graph); 214 AbckitInst *IcreateDynThrowPatternnoncoercibleStatic(AbckitGraph *graph); 215 AbckitInst *IcreateDynThrowDeletesuperpropertyStatic(AbckitGraph *graph); 216 AbckitInst *IcreateDynThrowConstassignmentStatic(AbckitGraph *graph, AbckitInst *input0); 217 AbckitInst *IcreateDynThrowIfnotobjectStatic(AbckitGraph *graph, AbckitInst *input0); 218 AbckitInst *IcreateDynThrowUndefinedifholeStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 219 AbckitInst *IcreateDynThrowIfsupernotcorrectcallStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0); 220 AbckitInst *IcreateDynThrowUndefinedifholewithnameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 221 222 AbckitInst *IcreateDynLdnanStatic(AbckitGraph *graph); 223 AbckitInst *IcreateDynLdinfinityStatic(AbckitGraph *graph); 224 AbckitInst *IcreateDynLdundefinedStatic(AbckitGraph *graph); 225 AbckitInst *IcreateDynLdnullStatic(AbckitGraph *graph); 226 AbckitInst *IcreateDynLdsymbolStatic(AbckitGraph *graph); 227 AbckitInst *IcreateDynLdglobalStatic(AbckitGraph *graph); 228 AbckitInst *IcreateDynLdtrueStatic(AbckitGraph *graph); 229 AbckitInst *IcreateDynLdfalseStatic(AbckitGraph *graph); 230 AbckitInst *IcreateDynLdholeStatic(AbckitGraph *graph); 231 AbckitInst *IcreateDynLdfunctionStatic(AbckitGraph *graph); 232 AbckitInst *IcreateDynLdnewtargetStatic(AbckitGraph *graph); 233 AbckitInst *IcreateDynLdthisStatic(AbckitGraph *graph); 234 235 AbckitInst *IcreateDynTypeofStatic(AbckitGraph *graph, AbckitInst *acc); 236 AbckitInst *IcreateDynIsinStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 237 AbckitInst *IcreateDynInstanceofStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 238 AbckitInst *IcreateDynReturnStatic(AbckitGraph *graph, AbckitInst *acc); 239 AbckitInst *IcreateDynReturnundefinedStatic(AbckitGraph *graph); 240 241 AbckitInst *IcreateDynStownbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, AbckitInst *input0); 242 AbckitInst *IcreateDynStownbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 243 AbckitInst *IcreateDynStownbyindexStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, uint64_t imm0); 244 AbckitInst *IcreateDynWideStownbyindexStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, uint64_t imm0); 245 AbckitInst *IcreateDynStownbynamewithnamesetStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, 246 AbckitInst *input0); 247 AbckitInst *IcreateDynStownbyvaluewithnamesetStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, 248 AbckitInst *input1); 249 AbckitInst *IcreateDynStobjbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 250 AbckitInst *IcreateDynStobjbyindexStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, uint64_t imm0); 251 AbckitInst *IcreateDynWideStobjbyindexStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, uint64_t imm0); 252 AbckitInst *IcreateDynStobjbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, AbckitInst *input0); 253 254 AbckitInst *IcreateDynCreateemptyobjectStatic(AbckitGraph *graph); 255 256 AbckitInst *IcreateDynPoplexenvStatic(AbckitGraph *graph); 257 AbckitInst *IcreateDynGetunmappedargsStatic(AbckitGraph *graph); 258 AbckitInst *IcreateDynAsyncfunctionenterStatic(AbckitGraph *graph); 259 AbckitInst *IcreateDynDebuggerStatic(AbckitGraph *graph); 260 AbckitInst *IcreateDynGetpropiteratorStatic(AbckitGraph *graph, AbckitInst *acc); 261 AbckitInst *IcreateDynGetiteratorStatic(AbckitGraph *graph, AbckitInst *acc); 262 AbckitInst *IcreateDynGetasynciteratorStatic(AbckitGraph *graph, AbckitInst *acc); 263 AbckitInst *IcreateDynLdprivatepropertyStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1); 264 AbckitInst *IcreateDynStprivatepropertyStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1, 265 AbckitInst *input0); 266 AbckitInst *IcreateDynTestinStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1); 267 AbckitInst *IcreateDynDefinefieldbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, 268 AbckitInst *input0); 269 AbckitInst *IcreateDynDefinepropertybynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, 270 AbckitInst *input0); 271 AbckitInst *IcreateDynCreateemptyarrayStatic(AbckitGraph *graph); 272 AbckitInst *IcreateDynCreategeneratorobjStatic(AbckitGraph *graph, AbckitInst *input0); 273 AbckitInst *IcreateDynCreateiterresultobjStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1); 274 AbckitInst *IcreateDynCreateobjectwithexcludedkeysStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1, 275 uint64_t imm0, std::va_list args); 276 AbckitInst *IcreateDynWideCreateobjectwithexcludedkeysStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1, 277 uint64_t imm0, std::va_list args); 278 279 AbckitInst *IcreateDynDefineclasswithbufferStatic(AbckitGraph *graph, AbckitCoreFunction *function, 280 AbckitLiteralArray *literalArray, uint64_t imm0, AbckitInst *input0); 281 AbckitInst *IcreateDynNewobjapplyStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 282 AbckitInst *IcreateDynWideNewobjrangeStatic(AbckitGraph *graph, size_t argCount, std::va_list args); 283 AbckitInst *IcreateDynNewlexenvStatic(AbckitGraph *graph, uint64_t imm0); 284 AbckitInst *IcreateDynWideNewlexenvStatic(AbckitGraph *graph, uint64_t imm0); 285 AbckitInst *IcreateDynNewlexenvwithnameStatic(AbckitGraph *graph, uint64_t imm0, AbckitLiteralArray *literalArray); 286 AbckitInst *IcreateDynWideNewlexenvwithnameStatic(AbckitGraph *graph, uint64_t imm0, AbckitLiteralArray *literalArray); 287 288 AbckitInst *IcreateDynCreateasyncgeneratorobjStatic(AbckitGraph *graph, AbckitInst *input0); 289 AbckitInst *IcreateDynAsyncgeneratorresolveStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1, 290 AbckitInst *input2); 291 AbckitInst *IcreateDynCallruntimeNotifyconcurrentresultStatic(AbckitGraph *graph, AbckitInst *acc); 292 AbckitInst *IcreateDynCallruntimeDefinefieldbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, 293 AbckitInst *input1); 294 AbckitInst *IcreateDynCallruntimeDefinefieldbyindexStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, 295 AbckitInst *input0); 296 AbckitInst *IcreateDynCallruntimeTopropertykeyStatic(AbckitGraph *graph, AbckitInst *acc); 297 298 AbckitInst *IcreateDynCallruntimeDefineprivatepropertyStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, 299 uint64_t imm1, AbckitInst *input0); 300 AbckitInst *IcreateDynCallruntimeCallinitStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 301 302 AbckitInst *IcreateDynCallruntimeDefinesendableclassStatic(AbckitGraph *graph, AbckitCoreFunction *function, 303 AbckitLiteralArray *literalArray, uint64_t imm0, 304 AbckitInst *input0); 305 AbckitInst *IcreateDynCallruntimeLdsendableclassStatic(AbckitGraph *graph, uint64_t imm0); 306 AbckitInst *IcreateDynCallruntimeLdsendableexternalmodulevarStatic(AbckitGraph *graph, uint64_t imm0); 307 AbckitInst *IcreateDynCallruntimeWideldsendableexternalmodulevarStatic(AbckitGraph *graph, uint64_t imm0); 308 AbckitInst *IcreateDynCallruntimeNewsendableenvStatic(AbckitGraph *graph, uint64_t imm0); 309 AbckitInst *IcreateDynCallruntimeWidenewsendableenvStatic(AbckitGraph *graph, uint64_t imm0); 310 AbckitInst *IcreateDynCallruntimeStsendablevarStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1); 311 AbckitInst *IcreateDynCallruntimeWidestsendablevarStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, 312 uint64_t imm1); 313 AbckitInst *IcreateDynCallruntimeLdsendablevarStatic(AbckitGraph *graph, uint64_t imm0, uint64_t imm1); 314 AbckitInst *IcreateDynCallruntimeWideldsendablevarStatic(AbckitGraph *graph, uint64_t imm0, uint64_t imm1); 315 AbckitInst *IcreateDynCallruntimeIstrueStatic(AbckitGraph *graph, AbckitInst *acc); 316 AbckitInst *IcreateDynCallruntimeIsfalseStatic(AbckitGraph *graph, AbckitInst *acc); 317 AbckitInst *IcreateDynCallruntimeCreateprivatepropertyStatic(AbckitGraph *graph, uint64_t imm0, 318 AbckitLiteralArray *literalArray); 319 AbckitInst *IcreateDynCallargs2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 320 AbckitInst *IcreateDynCallargs3Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1, 321 AbckitInst *input2); 322 AbckitInst *IcreateDynCallrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, std::va_list args); 323 AbckitInst *IcreateDynWideCallrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, std::va_list args); 324 AbckitInst *IcreateDynSupercallspreadStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 325 AbckitInst *IcreateDynApplyStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 326 AbckitInst *IcreateDynCallthis2Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1, 327 AbckitInst *input2); 328 // CC-OFFNXT(G.FUN.01) This is function from public API 329 AbckitInst *IcreateDynCallthis3Static(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1, 330 AbckitInst *input2, AbckitInst *input3); 331 AbckitInst *IcreateDynCallthisrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, std::va_list args); 332 AbckitInst *IcreateDynWideCallthisrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, std::va_list args); 333 AbckitInst *IcreateDynSupercallthisrangeStatic(AbckitGraph *graph, size_t argCount, std::va_list args); 334 AbckitInst *IcreateDynWideSupercallthisrangeStatic(AbckitGraph *graph, size_t argCount, std::va_list args); 335 AbckitInst *IcreateDynSupercallarrowrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, 336 std::va_list args); 337 AbckitInst *IcreateDynWideSupercallarrowrangeStatic(AbckitGraph *graph, AbckitInst *acc, size_t argCount, 338 std::va_list args); 339 // CC-OFFNXT(G.FUN.01) This is function from public API 340 AbckitInst *IcreateDynDefinegettersetterbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, 341 AbckitInst *input1, AbckitInst *input2, AbckitInst *input3); 342 343 AbckitInst *IcreateDynResumegeneratorStatic(AbckitGraph *graph, AbckitInst *acc); 344 AbckitInst *IcreateDynGetresumemodeStatic(AbckitGraph *graph, AbckitInst *acc); 345 AbckitInst *IcreateDynGettemplateobjectStatic(AbckitGraph *graph, AbckitInst *acc); 346 AbckitInst *IcreateDynGetnextpropnameStatic(AbckitGraph *graph, AbckitInst *input0); 347 AbckitInst *IcreateDynDelobjpropStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 348 AbckitInst *IcreateDynSuspendgeneratorStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 349 AbckitInst *IcreateDynAsyncfunctionawaituncaughtStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 350 AbckitInst *IcreateDynCopydatapropertiesStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 351 AbckitInst *IcreateDynStarrayspreadStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 352 AbckitInst *IcreateDynSetobjectwithprotoStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 353 AbckitInst *IcreateDynLdobjbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 354 AbckitInst *IcreateDynLdsuperbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 355 AbckitInst *IcreateDynStsuperbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0, AbckitInst *input1); 356 AbckitInst *IcreateDynLdobjbyindexStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0); 357 AbckitInst *IcreateDynWideLdobjbyindexStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0); 358 AbckitInst *IcreateDynAsyncfunctionresolveStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 359 AbckitInst *IcreateDynAsyncfunctionrejectStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 360 AbckitInst *IcreateDynCopyrestargsStatic(AbckitGraph *graph, uint64_t imm0); 361 AbckitInst *IcreateDynWideCopyrestargsStatic(AbckitGraph *graph, uint64_t imm0); 362 AbckitInst *IcreateDynLdlexvarStatic(AbckitGraph *graph, uint64_t imm0, uint64_t imm1); 363 AbckitInst *IcreateDynWideLdlexvarStatic(AbckitGraph *graph, uint64_t imm0, uint64_t imm1); 364 AbckitInst *IcreateDynStlexvarStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1); 365 AbckitInst *IcreateDynWideStlexvarStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0, uint64_t imm1); 366 367 AbckitInst *IcreateDynTrystglobalbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 368 AbckitInst *IcreateDynLdglobalvarStatic(AbckitGraph *graph, AbckitString *string); 369 AbckitInst *IcreateDynStglobalvarStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 370 AbckitInst *IcreateDynLdsuperbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 371 AbckitInst *IcreateDynStsuperbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string, 372 AbckitInst *input0); 373 374 AbckitInst *IcreateDynLdbigintStatic(AbckitGraph *graph, AbckitString *string); 375 AbckitInst *IcreateDynLdthisbynameStatic(AbckitGraph *graph, AbckitString *string); 376 AbckitInst *IcreateDynStthisbynameStatic(AbckitGraph *graph, AbckitInst *acc, AbckitString *string); 377 AbckitInst *IcreateDynLdthisbyvalueStatic(AbckitGraph *graph, AbckitInst *acc); 378 AbckitInst *IcreateDynStthisbyvalueStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 379 AbckitInst *IcreateDynWideLdpatchvarStatic(AbckitGraph *graph, uint64_t imm0); 380 AbckitInst *IcreateDynWideStpatchvarStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0); 381 AbckitInst *IcreateDynDynamicimportStatic(AbckitGraph *graph, AbckitInst *acc); 382 AbckitInst *IcreateDynAsyncgeneratorrejectStatic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 383 AbckitInst *IcreateDynSetgeneratorstateStatic(AbckitGraph *graph, AbckitInst *acc, uint64_t imm0); 384 385 AbckitInst *IcreateDynGetmodulenamespaceStatic(AbckitGraph *graph, AbckitCoreModule *md); 386 AbckitInst *IcreateDynWideGetmodulenamespaceStatic(AbckitGraph *graph, AbckitCoreModule *md); 387 AbckitInst *IcreateDynLdexternalmodulevarStatic(AbckitGraph *graph, AbckitCoreImportDescriptor *id); 388 AbckitInst *IcreateDynWideLdexternalmodulevarStatic(AbckitGraph *graph, AbckitCoreImportDescriptor *id); 389 AbckitInst *IcreateDynLdlocalmodulevarStatic(AbckitGraph *graph, AbckitCoreExportDescriptor *ed); 390 AbckitInst *IcreateDynWideLdlocalmodulevarStatic(AbckitGraph *graph, AbckitCoreExportDescriptor *ed); 391 AbckitInst *IcreateDynStmodulevarStatic(AbckitGraph *graph, AbckitInst *acc, AbckitCoreExportDescriptor *ed); 392 AbckitInst *IcreateDynWideStmodulevarStatic(AbckitGraph *graph, AbckitInst *acc, AbckitCoreExportDescriptor *ed); 393 AbckitInst *IcreateDynCreatearraywithbufferStatic(AbckitGraph *graph, AbckitLiteralArray *literalArray); 394 AbckitInst *IcreateDynCreateobjectwithbufferStatic(AbckitGraph *graph, AbckitLiteralArray *literalArray); 395 396 AbckitInst *IcreateDynDefinemethodStatic(AbckitGraph *graph, AbckitInst *acc, AbckitCoreFunction *function, 397 uint64_t imm0); 398 399 void IremoveStatic(AbckitInst *inst); 400 uint32_t IgetIdStatic(AbckitInst *inst); 401 AbckitIsaApiStaticOpcode IgetOpcodeStaticStatic(AbckitInst *inst); 402 AbckitIsaApiDynamicOpcode IgetOpcodeDynamicStatic(AbckitInst *inst); 403 404 AbckitInst *IgetNextStatic(AbckitInst *instnext); 405 AbckitInst *IgetPrevStatic(AbckitInst *instprev); 406 void IinsertAfterStatic(AbckitInst *inst, AbckitInst *next); 407 void IinsertBeforeStatic(AbckitInst *inst, AbckitInst *prev); 408 bool IcheckDominanceStatic(AbckitInst *inst, AbckitInst *dominator); 409 bool IvisitUsersStatic(AbckitInst *inst, void *data, bool (*cb)(AbckitInst *user, void *data)); 410 bool IvisitInputsStatic(AbckitInst *inst, void *data, bool (*cb)(AbckitInst *input, size_t inputIdx, void *data)); 411 uint32_t IgetUserCountStatic(AbckitInst *inst); 412 void IsetImmediateStatic(AbckitInst *inst, size_t idx, uint64_t imm); 413 AbckitBitImmSize IgetImmediateSizeStatic(AbckitInst *inst, size_t idx); 414 415 uint64_t IgetInputCountStatic(AbckitInst *inst); 416 AbckitInst *IgetInputStatic(AbckitInst *inst, size_t index); 417 void IsetInputStatic(AbckitInst *inst, AbckitInst *input, int32_t index); 418 void IsetInputsStatic(AbckitInst *inst, size_t argCount, std::va_list args); 419 void IappendInputStatic(AbckitInst *inst, AbckitInst *input); 420 AbckitType *IgetTypeStatic(AbckitInst *inst); 421 AbckitTypeId IgetTargetTypeStatic(AbckitInst *inst); 422 void IsetTargetTypeStatic(AbckitInst *inst, AbckitTypeId t); 423 AbckitCoreFunction *IgetFunctionStatic(AbckitInst *inst); 424 void IsetFunctionStatic(AbckitInst *inst, AbckitCoreFunction *function); 425 void IsetClassStatic(AbckitInst *inst, AbckitCoreClass *klass); 426 AbckitCoreClass *IgetClassStatic(AbckitInst *inst); 427 uint64_t IgetImmediateStatic(AbckitInst *inst, size_t idx); 428 uint64_t IgetImmediateCountStatic(AbckitInst *inst); 429 AbckitInst *IcreateIfStaticStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1, 430 AbckitIsaApiStaticConditionCode cc); 431 AbckitInst *IcreateIfDynamicStatic(AbckitGraph *graph, AbckitInst *input0, AbckitInst *input1, 432 AbckitIsaApiDynamicConditionCode cc); 433 AbckitInst *IcreateTryStatic(AbckitGraph *graph); 434 AbckitBasicBlock *IgetBasicBlockStatic(AbckitInst *inst); 435 AbckitGraph *IgetGraphStatic(AbckitInst *inst); 436 AbckitCoreModule *IgetModuleStatic(AbckitInst *inst); 437 uint32_t GetImportDescriptorIdxDynamic(AbckitGraph *graph, AbckitCoreImportDescriptor *id); 438 uint32_t GetExportDescriptorIdxDynamic(AbckitGraph *graph, AbckitCoreExportDescriptor *ed); 439 uint64_t GetModuleIndex(AbckitGraph *graph, AbckitCoreModule *md); 440 void IsetModuleStatic(AbckitInst *inst, AbckitCoreModule *md); 441 AbckitCoreImportDescriptor *IgetImportDescriptorStatic(AbckitInst *inst); 442 void IsetImportDescriptorStatic(AbckitInst *inst, AbckitCoreImportDescriptor *id); 443 AbckitCoreExportDescriptor *IgetExportDescriptorStatic(AbckitInst *inst); 444 void IsetExportDescriptorStatic(AbckitInst *inst, AbckitCoreExportDescriptor *ed); 445 AbckitIsaApiStaticConditionCode IgetConditionCodeStaticStatic(AbckitInst *inst); 446 AbckitIsaApiDynamicConditionCode IgetConditionCodeDynamicStatic(AbckitInst *inst); 447 void IsetConditionCodeStaticStatic(AbckitInst *inst, AbckitIsaApiStaticConditionCode cc); 448 void IsetConditionCodeDynamicStatic(AbckitInst *inst, AbckitIsaApiDynamicConditionCode cc); 449 450 AbckitInst *IcreateDynCallarg0Dynamic(AbckitGraph *graph, AbckitInst *acc); 451 AbckitInst *IcreateDynCallarg1Dynamic(AbckitGraph *graph, AbckitInst *acc, AbckitInst *input0); 452 AbckitInst *IcreateDynIfStatic(AbckitGraph *graph, AbckitInst *input, AbckitIsaApiDynamicConditionCode cc); 453 454 AbckitInst *IcreateNewArrayStatic(AbckitGraph *graph, AbckitCoreClass *inputClass, AbckitInst *inputSize); 455 456 AbckitInst *IcreateNewObjectStatic(AbckitGraph *graph, AbckitCoreClass *inputClass); 457 AbckitInst *IcreateInitObjectStatic(AbckitGraph *graph, AbckitCoreFunction *inputFunction, size_t argCount, 458 va_list argp); 459 460 bool IcheckIsCallStatic(AbckitInst *inst); 461 462 } // namespace libabckit 463 464 #endif 465