1 /* 2 * Copyright (c) 2021 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 ECMASCRIPT_INTERPRETER_INTERPRETER_ASSEMBLY_64BIT_H 17 #define ECMASCRIPT_INTERPRETER_INTERPRETER_ASSEMBLY_64BIT_H 18 19 #include "ecmascript/base/config.h" 20 #include "ecmascript/js_method.h" 21 #include "ecmascript/js_tagged_value.h" 22 #include "ecmascript/js_handle.h" 23 #include "ecmascript/js_thread.h" 24 #include "ecmascript/frames.h" 25 26 #if ECMASCRIPT_COMPILE_INTERPRETER_ASM 27 namespace panda::ecmascript { 28 using TaggedType = coretypes::TaggedType; 29 using DispatchEntryPoint = 30 void (*)(JSThread *, const uint8_t *, JSTaggedType *, JSTaggedValue, JSTaggedValue, JSTaggedValue, int32_t); 31 using AsmDispatchEntryPoint = 32 void (*)(uintptr_t, const uint8_t *, JSTaggedType *, JSTaggedValue, JSTaggedValue, JSTaggedValue, int32_t); 33 class ConstantPool; 34 class ECMAObject; 35 class GeneratorContext; 36 37 class InterpreterAssembly { 38 public: 39 enum ActualNumArgsOfCall : uint8_t { CALLARG0 = 0, CALLARG1, CALLARGS2, CALLARGS3 }; 40 static void RunInternal(JSThread *thread, ConstantPool *constpool, const uint8_t *pc, JSTaggedType *sp); 41 static inline uint32_t FindCatchBlock(JSMethod *caller, uint32_t pc); 42 static inline size_t GetJumpSizeAfterCall(const uint8_t *prevPc); 43 44 static inline JSTaggedValue UpdateHotnessCounter(JSThread* thread, TaggedType *sp); 45 static inline void InterpreterFrameCopyArgs(JSTaggedType *newSp, uint32_t numVregs, uint32_t numActualArgs, 46 uint32_t numDeclaredArgs, bool haveExtraArgs = true); 47 static inline JSTaggedValue GetThisFunction(JSTaggedType *sp); 48 static inline JSTaggedValue GetNewTarget(JSTaggedType *sp); 49 static inline uint32_t GetNumArgs(JSTaggedType *sp, uint32_t restIdx, uint32_t &startIdx); 50 51 static void HandleMovV4V4( 52 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 53 JSTaggedValue acc, int32_t hotnessCounter); 54 static void HandleMovDynV8V8( 55 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 56 JSTaggedValue acc, int32_t hotnessCounter); 57 static void HandleMovDynV16V16( 58 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 59 JSTaggedValue acc, int32_t hotnessCounter); 60 static void HandleLdaStrId32( 61 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 62 JSTaggedValue acc, int32_t hotnessCounter); 63 static void HandleJmpImm8( 64 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 65 JSTaggedValue acc, int32_t hotnessCounter); 66 static void HandleJmpImm16( 67 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 68 JSTaggedValue acc, int32_t hotnessCounter); 69 static void HandleJmpImm32( 70 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 71 JSTaggedValue acc, int32_t hotnessCounter); 72 static void HandleJeqzImm8( 73 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 74 JSTaggedValue acc, int32_t hotnessCounter); 75 static void HandleJeqzImm16( 76 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 77 JSTaggedValue acc, int32_t hotnessCounter); 78 static void HandleJnezImm8( 79 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 80 JSTaggedValue acc, int32_t hotnessCounter); 81 static void HandleJnezImm16( 82 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 83 JSTaggedValue acc, int32_t hotnessCounter); 84 static void HandleLdaDynV8( 85 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 86 JSTaggedValue acc, int32_t hotnessCounter); 87 static void HandleStaDynV8( 88 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 89 JSTaggedValue acc, int32_t hotnessCounter); 90 static void HandleLdaiDynImm32( 91 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 92 JSTaggedValue acc, int32_t hotnessCounter); 93 static void HandleFldaiDynImm64( 94 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 95 JSTaggedValue acc, int32_t hotnessCounter); 96 static void HandleCallArg0DynPrefV8( 97 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 98 JSTaggedValue acc, int32_t hotnessCounter); 99 static void HandleCallArg1DynPrefV8V8( 100 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 101 JSTaggedValue acc, int32_t hotnessCounter); 102 static void HandleCallArgs2DynPrefV8V8V8( 103 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 104 JSTaggedValue acc, int32_t hotnessCounter); 105 static void HandleCallArgs3DynPrefV8V8V8V8( 106 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 107 JSTaggedValue acc, int32_t hotnessCounter); 108 static void HandleCallIThisRangeDynPrefImm16V8( 109 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 110 JSTaggedValue acc, int32_t hotnessCounter); 111 static void HandleCallSpreadDynPrefV8V8V8( 112 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 113 JSTaggedValue acc, int32_t hotnessCounter); 114 static void HandleCallIRangeDynPrefImm16V8( 115 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 116 JSTaggedValue acc, int32_t hotnessCounter); 117 static void HandleReturnDyn( 118 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 119 JSTaggedValue acc, int32_t hotnessCounter); 120 static void HandleReturnUndefinedPref( 121 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 122 JSTaggedValue acc, int32_t hotnessCounter); 123 static void HandleLdNanPref( 124 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 125 JSTaggedValue acc, int32_t hotnessCounter); 126 static void HandleLdInfinityPref( 127 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 128 JSTaggedValue acc, int32_t hotnessCounter); 129 static void HandleLdGlobalThisPref( 130 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 131 JSTaggedValue acc, int32_t hotnessCounter); 132 static void HandleLdUndefinedPref( 133 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 134 JSTaggedValue acc, int32_t hotnessCounter); 135 static void HandleLdNullPref( 136 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 137 JSTaggedValue acc, int32_t hotnessCounter); 138 static void HandleLdSymbolPref( 139 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 140 JSTaggedValue acc, int32_t hotnessCounter); 141 static void HandleLdGlobalPref( 142 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 143 JSTaggedValue acc, int32_t hotnessCounter); 144 static void HandleLdTruePref( 145 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 146 JSTaggedValue acc, int32_t hotnessCounter); 147 static void HandleLdFalsePref( 148 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 149 JSTaggedValue acc, int32_t hotnessCounter); 150 static void HandleLdLexEnvDynPref( 151 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 152 JSTaggedValue acc, int32_t hotnessCounter); 153 static void HandleGetUnmappedArgsPref( 154 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 155 JSTaggedValue acc, int32_t hotnessCounter); 156 static void HandleAsyncFunctionEnterPref( 157 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 158 JSTaggedValue acc, int32_t hotnessCounter); 159 static void HandleToNumberPrefV8( 160 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 161 JSTaggedValue acc, int32_t hotnessCounter); 162 static void HandleNegDynPrefV8( 163 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 164 JSTaggedValue acc, int32_t hotnessCounter); 165 static void HandleNotDynPrefV8( 166 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 167 JSTaggedValue acc, int32_t hotnessCounter); 168 static void HandleIncDynPrefV8( 169 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 170 JSTaggedValue acc, int32_t hotnessCounter); 171 static void HandleDecDynPrefV8( 172 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 173 JSTaggedValue acc, int32_t hotnessCounter); 174 static void HandleThrowDynPref( 175 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 176 JSTaggedValue acc, int32_t hotnessCounter); 177 static void HandleTypeOfDynPref( 178 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 179 JSTaggedValue acc, int32_t hotnessCounter); 180 static void HandleGetPropIteratorPref( 181 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 182 JSTaggedValue acc, int32_t hotnessCounter); 183 static void HandleResumeGeneratorPrefV8( 184 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 185 JSTaggedValue acc, int32_t hotnessCounter); 186 static void HandleGetResumeModePrefV8( 187 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 188 JSTaggedValue acc, int32_t hotnessCounter); 189 static void HandleGetIteratorPref( 190 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 191 JSTaggedValue acc, int32_t hotnessCounter); 192 static void HandleThrowConstAssignmentPrefV8( 193 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 194 JSTaggedValue acc, int32_t hotnessCounter); 195 static void HandleThrowThrowNotExistsPref( 196 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 197 JSTaggedValue acc, int32_t hotnessCounter); 198 static void HandleThrowPatternNonCoerciblePref( 199 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 200 JSTaggedValue acc, int32_t hotnessCounter); 201 static void HandleThrowIfNotObjectPrefV8( 202 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 203 JSTaggedValue acc, int32_t hotnessCounter); 204 static void HandleIternextPrefV8( 205 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 206 JSTaggedValue acc, int32_t hotnessCounter); 207 static void HandleCloseIteratorPrefV8( 208 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 209 JSTaggedValue acc, int32_t hotnessCounter); 210 static void HandleAdd2DynPrefV8( 211 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 212 JSTaggedValue acc, int32_t hotnessCounter); 213 static void HandleSub2DynPrefV8( 214 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 215 JSTaggedValue acc, int32_t hotnessCounter); 216 static void HandleMul2DynPrefV8( 217 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 218 JSTaggedValue acc, int32_t hotnessCounter); 219 static void HandleDiv2DynPrefV8( 220 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 221 JSTaggedValue acc, int32_t hotnessCounter); 222 static void HandleMod2DynPrefV8( 223 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 224 JSTaggedValue acc, int32_t hotnessCounter); 225 static void HandleEqDynPrefV8( 226 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 227 JSTaggedValue acc, int32_t hotnessCounter); 228 static void HandleNotEqDynPrefV8( 229 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 230 JSTaggedValue acc, int32_t hotnessCounter); 231 static void HandleLessDynPrefV8( 232 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 233 JSTaggedValue acc, int32_t hotnessCounter); 234 static void HandleLessEqDynPrefV8( 235 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 236 JSTaggedValue acc, int32_t hotnessCounter); 237 static void HandleGreaterDynPrefV8( 238 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 239 JSTaggedValue acc, int32_t hotnessCounter); 240 static void HandleGreaterEqDynPrefV8( 241 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 242 JSTaggedValue acc, int32_t hotnessCounter); 243 static void HandleShl2DynPrefV8( 244 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 245 JSTaggedValue acc, int32_t hotnessCounter); 246 static void HandleShr2DynPrefV8( 247 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 248 JSTaggedValue acc, int32_t hotnessCounter); 249 static void HandleAshr2DynPrefV8( 250 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 251 JSTaggedValue acc, int32_t hotnessCounter); 252 static void HandleAnd2DynPrefV8( 253 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 254 JSTaggedValue acc, int32_t hotnessCounter); 255 static void HandleOr2DynPrefV8( 256 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 257 JSTaggedValue acc, int32_t hotnessCounter); 258 static void HandleXOr2DynPrefV8( 259 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 260 JSTaggedValue acc, int32_t hotnessCounter); 261 static void HandleDelObjPropPrefV8V8( 262 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 263 JSTaggedValue acc, int32_t hotnessCounter); 264 static void HandleDefineFuncDynPrefId16Imm16V8( 265 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 266 JSTaggedValue acc, int32_t hotnessCounter); 267 static void HandleDefineNCFuncDynPrefId16Imm16V8( 268 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 269 JSTaggedValue acc, int32_t hotnessCounter); 270 static void HandleDefineMethodPrefId16Imm16V8( 271 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 272 JSTaggedValue acc, int32_t hotnessCounter); 273 static void HandleNewObjDynRangePrefImm16V8( 274 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 275 JSTaggedValue acc, int32_t hotnessCounter); 276 static void HandleExpDynPrefV8( 277 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 278 JSTaggedValue acc, int32_t hotnessCounter); 279 static void HandleIsInDynPrefV8( 280 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 281 JSTaggedValue acc, int32_t hotnessCounter); 282 static void HandleInstanceOfDynPrefV8( 283 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 284 JSTaggedValue acc, int32_t hotnessCounter); 285 static void HandleStrictNotEqDynPrefV8( 286 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 287 JSTaggedValue acc, int32_t hotnessCounter); 288 static void HandleStrictEqDynPrefV8( 289 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 290 JSTaggedValue acc, int32_t hotnessCounter); 291 static void HandleLdLexVarDynPrefImm16Imm16( 292 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 293 JSTaggedValue acc, int32_t hotnessCounter); 294 static void HandleLdLexVarDynPrefImm8Imm8( 295 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 296 JSTaggedValue acc, int32_t hotnessCounter); 297 static void HandleLdLexVarDynPrefImm4Imm4( 298 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 299 JSTaggedValue acc, int32_t hotnessCounter); 300 static void HandleStLexVarDynPrefImm16Imm16V8( 301 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 302 JSTaggedValue acc, int32_t hotnessCounter); 303 static void HandleStLexVarDynPrefImm8Imm8V8( 304 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 305 JSTaggedValue acc, int32_t hotnessCounter); 306 static void HandleStLexVarDynPrefImm4Imm4V8( 307 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 308 JSTaggedValue acc, int32_t hotnessCounter); 309 static void HandleNewLexEnvDynPrefImm16( 310 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 311 JSTaggedValue acc, int32_t hotnessCounter); 312 static void HandlePopLexEnvDynPref( 313 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 314 JSTaggedValue acc, int32_t hotnessCounter); 315 static void HandleCreateIterResultObjPrefV8V8( 316 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 317 JSTaggedValue acc, int32_t hotnessCounter); 318 static void HandleSuspendGeneratorPrefV8V8( 319 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 320 JSTaggedValue acc, int32_t hotnessCounter); 321 static void HandleAsyncFunctionAwaitUncaughtPrefV8V8( 322 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 323 JSTaggedValue acc, int32_t hotnessCounter); 324 static void HandleAsyncFunctionResolvePrefV8V8V8( 325 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 326 JSTaggedValue acc, int32_t hotnessCounter); 327 static void HandleAsyncFunctionRejectPrefV8V8V8( 328 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 329 JSTaggedValue acc, int32_t hotnessCounter); 330 static void HandleNewObjSpreadDynPrefV8V8( 331 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 332 JSTaggedValue acc, int32_t hotnessCounter); 333 static void HandleThrowUndefinedIfHolePrefV8V8( 334 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 335 JSTaggedValue acc, int32_t hotnessCounter); 336 static void HandleStOwnByNamePrefId32V8( 337 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 338 JSTaggedValue acc, int32_t hotnessCounter); 339 static void HandleCreateEmptyArrayPref( 340 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 341 JSTaggedValue acc, int32_t hotnessCounter); 342 static void HandleCreateEmptyObjectPref( 343 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 344 JSTaggedValue acc, int32_t hotnessCounter); 345 static void HandleCreateObjectWithBufferPrefImm16( 346 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 347 JSTaggedValue acc, int32_t hotnessCounter); 348 static void HandleSetObjectWithProtoPrefV8V8( 349 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 350 JSTaggedValue acc, int32_t hotnessCounter); 351 static void HandleCreateArrayWithBufferPrefImm16( 352 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 353 JSTaggedValue acc, int32_t hotnessCounter); 354 static void HandleImportModulePrefId32( 355 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 356 JSTaggedValue acc, int32_t hotnessCounter); 357 static void HandleStModuleVarPrefId32( 358 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 359 JSTaggedValue acc, int32_t hotnessCounter); 360 static void HandleCopyModulePrefV8( 361 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 362 JSTaggedValue acc, int32_t hotnessCounter); 363 static void HandleLdModVarByNamePrefId32V8( 364 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 365 JSTaggedValue acc, int32_t hotnessCounter); 366 static void HandleCreateRegExpWithLiteralPrefId32Imm8( 367 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 368 JSTaggedValue acc, int32_t hotnessCounter); 369 static void HandleGetTemplateObjectPrefV8( 370 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 371 JSTaggedValue acc, int32_t hotnessCounter); 372 static void HandleGetNextPropNamePrefV8( 373 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 374 JSTaggedValue acc, int32_t hotnessCounter); 375 static void HandleCopyDataPropertiesPrefV8V8( 376 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 377 JSTaggedValue acc, int32_t hotnessCounter); 378 static void HandleStOwnByIndexPrefV8Imm32( 379 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 380 JSTaggedValue acc, int32_t hotnessCounter); 381 static void HandleStOwnByValuePrefV8V8( 382 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 383 JSTaggedValue acc, int32_t hotnessCounter); 384 static void HandleCreateObjectWithExcludedKeysPrefImm16V8V8( 385 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 386 JSTaggedValue acc, int32_t hotnessCounter); 387 static void HandleDefineGeneratorFuncPrefId16Imm16V8( 388 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 389 JSTaggedValue acc, int32_t hotnessCounter); 390 static void HandleDefineAsyncFuncPrefId16Imm16V8( 391 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 392 JSTaggedValue acc, int32_t hotnessCounter); 393 static void HandleLdHolePref( 394 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 395 JSTaggedValue acc, int32_t hotnessCounter); 396 static void HandleCopyRestArgsPrefImm16( 397 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 398 JSTaggedValue acc, int32_t hotnessCounter); 399 static void HandleDefineGetterSetterByValuePrefV8V8V8V8( 400 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 401 JSTaggedValue acc, int32_t hotnessCounter); 402 static void HandleLdObjByIndexPrefV8Imm32( 403 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 404 JSTaggedValue acc, int32_t hotnessCounter); 405 static void HandleStObjByIndexPrefV8Imm32( 406 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 407 JSTaggedValue acc, int32_t hotnessCounter); 408 static void HandleLdObjByValuePrefV8V8( 409 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 410 JSTaggedValue acc, int32_t hotnessCounter); 411 static void HandleStObjByValuePrefV8V8( 412 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 413 JSTaggedValue acc, int32_t hotnessCounter); 414 static void HandleLdSuperByValuePrefV8V8( 415 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 416 JSTaggedValue acc, int32_t hotnessCounter); 417 static void HandleStSuperByValuePrefV8V8( 418 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 419 JSTaggedValue acc, int32_t hotnessCounter); 420 static void HandleTryLdGlobalByNamePrefId32( 421 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 422 JSTaggedValue acc, int32_t hotnessCounter); 423 static void HandleTryStGlobalByNamePrefId32( 424 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 425 JSTaggedValue acc, int32_t hotnessCounter); 426 static void HandleStConstToGlobalRecordPrefId32( 427 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 428 JSTaggedValue acc, int32_t hotnessCounter); 429 static void HandleStLetToGlobalRecordPrefId32( 430 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 431 JSTaggedValue acc, int32_t hotnessCounter); 432 static void HandleStClassToGlobalRecordPrefId32( 433 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 434 JSTaggedValue acc, int32_t hotnessCounter); 435 static void HandleStOwnByValueWithNameSetPrefV8V8( 436 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 437 JSTaggedValue acc, int32_t hotnessCounter); 438 static void HandleStOwnByNameWithNameSetPrefId32V8( 439 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 440 JSTaggedValue acc, int32_t hotnessCounter); 441 static void HandleLdFunctionPref( 442 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 443 JSTaggedValue acc, int32_t hotnessCounter); 444 static void HandleLdBigIntPrefId32( 445 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 446 JSTaggedValue acc, int32_t hotnessCounter); 447 static void HandleLdGlobalVarPrefId32( 448 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 449 JSTaggedValue acc, int32_t hotnessCounter); 450 static void HandleLdObjByNamePrefId32V8( 451 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 452 JSTaggedValue acc, int32_t hotnessCounter); 453 static void HandleStObjByNamePrefId32V8( 454 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 455 JSTaggedValue acc, int32_t hotnessCounter); 456 static void HandleLdSuperByNamePrefId32V8( 457 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 458 JSTaggedValue acc, int32_t hotnessCounter); 459 static void HandleStSuperByNamePrefId32V8( 460 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 461 JSTaggedValue acc, int32_t hotnessCounter); 462 static void HandleStGlobalVarPrefId32( 463 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 464 JSTaggedValue acc, int32_t hotnessCounter); 465 static void HandleCreateGeneratorObjPrefV8( 466 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 467 JSTaggedValue acc, int32_t hotnessCounter); 468 static void HandleStArraySpreadPrefV8V8( 469 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 470 JSTaggedValue acc, int32_t hotnessCounter); 471 static void HandleGetIteratorNextPrefV8V8( 472 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 473 JSTaggedValue acc, int32_t hotnessCounter); 474 static void HandleDefineClassWithBufferPrefId16Imm16Imm16V8V8( 475 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 476 JSTaggedValue acc, int32_t hotnessCounter); 477 static void HandleSuperCallPrefImm16V8( 478 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 479 JSTaggedValue acc, int32_t hotnessCounter); 480 static void HandleSuperCallSpreadPrefV8( 481 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 482 JSTaggedValue acc, int32_t hotnessCounter); 483 static void HandleCreateObjectHavingMethodPrefImm16( 484 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 485 JSTaggedValue acc, int32_t hotnessCounter); 486 static void HandleThrowIfSuperNotCorrectCallPrefImm16( 487 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 488 JSTaggedValue acc, int32_t hotnessCounter); 489 static void HandleLdHomeObjectPref( 490 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 491 JSTaggedValue acc, int32_t hotnessCounter); 492 static void HandleThrowDeleteSuperPropertyPref( 493 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 494 JSTaggedValue acc, int32_t hotnessCounter); 495 static void HandleDebuggerPref( 496 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 497 JSTaggedValue acc, int32_t hotnessCounter); 498 static void HandleIsTruePref( 499 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 500 JSTaggedValue acc, int32_t hotnessCounter); 501 static void HandleIsFalsePref( 502 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 503 JSTaggedValue acc, int32_t hotnessCounter); 504 static void ExceptionHandler( 505 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 506 JSTaggedValue acc, int32_t hotnessCounter); 507 static void HandleOverflow( 508 JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo, 509 JSTaggedValue acc, int32_t hotnessCounter); 510 }; 511 512 static std::array<DispatchEntryPoint, JSThread::MAX_BYTECODE_HANDLERS> asmDispatchTable { 513 InterpreterAssembly::HandleLdNanPref, 514 InterpreterAssembly::HandleLdInfinityPref, 515 InterpreterAssembly::HandleLdGlobalThisPref, 516 InterpreterAssembly::HandleLdUndefinedPref, 517 InterpreterAssembly::HandleLdNullPref, 518 InterpreterAssembly::HandleLdSymbolPref, 519 InterpreterAssembly::HandleLdGlobalPref, 520 InterpreterAssembly::HandleLdTruePref, 521 InterpreterAssembly::HandleLdFalsePref, 522 InterpreterAssembly::HandleThrowDynPref, 523 InterpreterAssembly::HandleTypeOfDynPref, 524 InterpreterAssembly::HandleLdLexEnvDynPref, 525 InterpreterAssembly::HandlePopLexEnvDynPref, 526 InterpreterAssembly::HandleGetUnmappedArgsPref, 527 InterpreterAssembly::HandleGetPropIteratorPref, 528 InterpreterAssembly::HandleAsyncFunctionEnterPref, 529 InterpreterAssembly::HandleLdHolePref, 530 InterpreterAssembly::HandleReturnUndefinedPref, 531 InterpreterAssembly::HandleCreateEmptyObjectPref, 532 InterpreterAssembly::HandleCreateEmptyArrayPref, 533 InterpreterAssembly::HandleGetIteratorPref, 534 InterpreterAssembly::HandleThrowThrowNotExistsPref, 535 InterpreterAssembly::HandleThrowPatternNonCoerciblePref, 536 InterpreterAssembly::HandleLdHomeObjectPref, 537 InterpreterAssembly::HandleThrowDeleteSuperPropertyPref, 538 InterpreterAssembly::HandleDebuggerPref, 539 InterpreterAssembly::HandleAdd2DynPrefV8, 540 InterpreterAssembly::HandleSub2DynPrefV8, 541 InterpreterAssembly::HandleMul2DynPrefV8, 542 InterpreterAssembly::HandleDiv2DynPrefV8, 543 InterpreterAssembly::HandleMod2DynPrefV8, 544 InterpreterAssembly::HandleEqDynPrefV8, 545 InterpreterAssembly::HandleNotEqDynPrefV8, 546 InterpreterAssembly::HandleLessDynPrefV8, 547 InterpreterAssembly::HandleLessEqDynPrefV8, 548 InterpreterAssembly::HandleGreaterDynPrefV8, 549 InterpreterAssembly::HandleGreaterEqDynPrefV8, 550 InterpreterAssembly::HandleShl2DynPrefV8, 551 InterpreterAssembly::HandleShr2DynPrefV8, 552 InterpreterAssembly::HandleAshr2DynPrefV8, 553 InterpreterAssembly::HandleAnd2DynPrefV8, 554 InterpreterAssembly::HandleOr2DynPrefV8, 555 InterpreterAssembly::HandleXOr2DynPrefV8, 556 InterpreterAssembly::HandleToNumberPrefV8, 557 InterpreterAssembly::HandleNegDynPrefV8, 558 InterpreterAssembly::HandleNotDynPrefV8, 559 InterpreterAssembly::HandleIncDynPrefV8, 560 InterpreterAssembly::HandleDecDynPrefV8, 561 InterpreterAssembly::HandleExpDynPrefV8, 562 InterpreterAssembly::HandleIsInDynPrefV8, 563 InterpreterAssembly::HandleInstanceOfDynPrefV8, 564 InterpreterAssembly::HandleStrictNotEqDynPrefV8, 565 InterpreterAssembly::HandleStrictEqDynPrefV8, 566 InterpreterAssembly::HandleResumeGeneratorPrefV8, 567 InterpreterAssembly::HandleGetResumeModePrefV8, 568 InterpreterAssembly::HandleCreateGeneratorObjPrefV8, 569 InterpreterAssembly::HandleThrowConstAssignmentPrefV8, 570 InterpreterAssembly::HandleGetTemplateObjectPrefV8, 571 InterpreterAssembly::HandleGetNextPropNamePrefV8, 572 InterpreterAssembly::HandleCallArg0DynPrefV8, 573 InterpreterAssembly::HandleThrowIfNotObjectPrefV8, 574 InterpreterAssembly::HandleIternextPrefV8, 575 InterpreterAssembly::HandleCloseIteratorPrefV8, 576 InterpreterAssembly::HandleCopyModulePrefV8, 577 InterpreterAssembly::HandleSuperCallSpreadPrefV8, 578 InterpreterAssembly::HandleDelObjPropPrefV8V8, 579 InterpreterAssembly::HandleNewObjSpreadDynPrefV8V8, 580 InterpreterAssembly::HandleCreateIterResultObjPrefV8V8, 581 InterpreterAssembly::HandleSuspendGeneratorPrefV8V8, 582 InterpreterAssembly::HandleAsyncFunctionAwaitUncaughtPrefV8V8, 583 InterpreterAssembly::HandleThrowUndefinedIfHolePrefV8V8, 584 InterpreterAssembly::HandleCallArg1DynPrefV8V8, 585 InterpreterAssembly::HandleCopyDataPropertiesPrefV8V8, 586 InterpreterAssembly::HandleStArraySpreadPrefV8V8, 587 InterpreterAssembly::HandleGetIteratorNextPrefV8V8, 588 InterpreterAssembly::HandleSetObjectWithProtoPrefV8V8, 589 InterpreterAssembly::HandleLdObjByValuePrefV8V8, 590 InterpreterAssembly::HandleStObjByValuePrefV8V8, 591 InterpreterAssembly::HandleStOwnByValuePrefV8V8, 592 InterpreterAssembly::HandleLdSuperByValuePrefV8V8, 593 InterpreterAssembly::HandleStSuperByValuePrefV8V8, 594 InterpreterAssembly::HandleLdObjByIndexPrefV8Imm32, 595 InterpreterAssembly::HandleStObjByIndexPrefV8Imm32, 596 InterpreterAssembly::HandleStOwnByIndexPrefV8Imm32, 597 InterpreterAssembly::HandleCallSpreadDynPrefV8V8V8, 598 InterpreterAssembly::HandleAsyncFunctionResolvePrefV8V8V8, 599 InterpreterAssembly::HandleAsyncFunctionRejectPrefV8V8V8, 600 InterpreterAssembly::HandleCallArgs2DynPrefV8V8V8, 601 InterpreterAssembly::HandleCallArgs3DynPrefV8V8V8V8, 602 InterpreterAssembly::HandleDefineGetterSetterByValuePrefV8V8V8V8, 603 InterpreterAssembly::HandleNewObjDynRangePrefImm16V8, 604 InterpreterAssembly::HandleCallIRangeDynPrefImm16V8, 605 InterpreterAssembly::HandleCallIThisRangeDynPrefImm16V8, 606 InterpreterAssembly::HandleSuperCallPrefImm16V8, 607 InterpreterAssembly::HandleCreateObjectWithExcludedKeysPrefImm16V8V8, 608 InterpreterAssembly::HandleDefineFuncDynPrefId16Imm16V8, 609 InterpreterAssembly::HandleDefineNCFuncDynPrefId16Imm16V8, 610 InterpreterAssembly::HandleDefineGeneratorFuncPrefId16Imm16V8, 611 InterpreterAssembly::HandleDefineAsyncFuncPrefId16Imm16V8, 612 InterpreterAssembly::HandleDefineMethodPrefId16Imm16V8, 613 InterpreterAssembly::HandleNewLexEnvDynPrefImm16, 614 InterpreterAssembly::HandleCopyRestArgsPrefImm16, 615 InterpreterAssembly::HandleCreateArrayWithBufferPrefImm16, 616 InterpreterAssembly::HandleCreateObjectHavingMethodPrefImm16, 617 InterpreterAssembly::HandleThrowIfSuperNotCorrectCallPrefImm16, 618 InterpreterAssembly::HandleCreateObjectWithBufferPrefImm16, 619 InterpreterAssembly::HandleLdLexVarDynPrefImm4Imm4, 620 InterpreterAssembly::HandleLdLexVarDynPrefImm8Imm8, 621 InterpreterAssembly::HandleLdLexVarDynPrefImm16Imm16, 622 InterpreterAssembly::HandleStLexVarDynPrefImm4Imm4V8, 623 InterpreterAssembly::HandleStLexVarDynPrefImm8Imm8V8, 624 InterpreterAssembly::HandleStLexVarDynPrefImm16Imm16V8, 625 InterpreterAssembly::HandleDefineClassWithBufferPrefId16Imm16Imm16V8V8, 626 InterpreterAssembly::HandleImportModulePrefId32, 627 InterpreterAssembly::HandleStModuleVarPrefId32, 628 InterpreterAssembly::HandleTryLdGlobalByNamePrefId32, 629 InterpreterAssembly::HandleTryStGlobalByNamePrefId32, 630 InterpreterAssembly::HandleLdGlobalVarPrefId32, 631 InterpreterAssembly::HandleStGlobalVarPrefId32, 632 InterpreterAssembly::HandleLdObjByNamePrefId32V8, 633 InterpreterAssembly::HandleStObjByNamePrefId32V8, 634 InterpreterAssembly::HandleStOwnByNamePrefId32V8, 635 InterpreterAssembly::HandleLdSuperByNamePrefId32V8, 636 InterpreterAssembly::HandleStSuperByNamePrefId32V8, 637 InterpreterAssembly::HandleLdModVarByNamePrefId32V8, 638 InterpreterAssembly::HandleCreateRegExpWithLiteralPrefId32Imm8, 639 InterpreterAssembly::HandleIsTruePref, 640 InterpreterAssembly::HandleIsFalsePref, 641 InterpreterAssembly::HandleStConstToGlobalRecordPrefId32, 642 InterpreterAssembly::HandleStLetToGlobalRecordPrefId32, 643 InterpreterAssembly::HandleStClassToGlobalRecordPrefId32, 644 InterpreterAssembly::HandleStOwnByValueWithNameSetPrefV8V8, 645 InterpreterAssembly::HandleStOwnByNameWithNameSetPrefId32V8, 646 InterpreterAssembly::HandleLdFunctionPref, 647 InterpreterAssembly::HandleLdBigIntPrefId32, 648 InterpreterAssembly::HandleMovDynV8V8, 649 InterpreterAssembly::HandleMovDynV16V16, 650 InterpreterAssembly::HandleLdaStrId32, 651 InterpreterAssembly::HandleLdaiDynImm32, 652 InterpreterAssembly::HandleFldaiDynImm64, 653 InterpreterAssembly::HandleJmpImm8, 654 InterpreterAssembly::HandleJmpImm16, 655 InterpreterAssembly::HandleJmpImm32, 656 InterpreterAssembly::HandleJeqzImm8, 657 InterpreterAssembly::HandleJeqzImm16, 658 InterpreterAssembly::HandleLdaDynV8, 659 InterpreterAssembly::HandleStaDynV8, 660 InterpreterAssembly::HandleReturnDyn, 661 InterpreterAssembly::HandleMovV4V4, 662 InterpreterAssembly::HandleJnezImm8, 663 InterpreterAssembly::HandleJnezImm16, 664 InterpreterAssembly::ExceptionHandler, 665 InterpreterAssembly::HandleOverflow, 666 InterpreterAssembly::HandleOverflow, 667 InterpreterAssembly::HandleOverflow, 668 InterpreterAssembly::HandleOverflow, 669 InterpreterAssembly::HandleOverflow, 670 InterpreterAssembly::HandleOverflow, 671 InterpreterAssembly::HandleOverflow, 672 InterpreterAssembly::HandleOverflow, 673 InterpreterAssembly::HandleOverflow, 674 InterpreterAssembly::HandleOverflow, 675 InterpreterAssembly::HandleOverflow, 676 InterpreterAssembly::HandleOverflow, 677 InterpreterAssembly::HandleOverflow, 678 InterpreterAssembly::HandleOverflow, 679 InterpreterAssembly::HandleOverflow, 680 InterpreterAssembly::HandleOverflow, 681 InterpreterAssembly::HandleOverflow, 682 InterpreterAssembly::HandleOverflow, 683 InterpreterAssembly::HandleOverflow, 684 InterpreterAssembly::HandleOverflow, 685 InterpreterAssembly::HandleOverflow, 686 InterpreterAssembly::HandleOverflow, 687 InterpreterAssembly::HandleOverflow, 688 InterpreterAssembly::HandleOverflow, 689 InterpreterAssembly::HandleOverflow, 690 InterpreterAssembly::HandleOverflow, 691 InterpreterAssembly::HandleOverflow, 692 InterpreterAssembly::HandleOverflow, 693 InterpreterAssembly::HandleOverflow, 694 InterpreterAssembly::HandleOverflow, 695 InterpreterAssembly::HandleOverflow, 696 InterpreterAssembly::HandleOverflow, 697 InterpreterAssembly::HandleOverflow, 698 InterpreterAssembly::HandleOverflow, 699 InterpreterAssembly::HandleOverflow, 700 InterpreterAssembly::HandleOverflow, 701 InterpreterAssembly::HandleOverflow, 702 InterpreterAssembly::HandleOverflow, 703 InterpreterAssembly::HandleOverflow, 704 InterpreterAssembly::HandleOverflow, 705 InterpreterAssembly::HandleOverflow, 706 InterpreterAssembly::HandleOverflow, 707 InterpreterAssembly::HandleOverflow, 708 InterpreterAssembly::HandleOverflow, 709 InterpreterAssembly::HandleOverflow, 710 InterpreterAssembly::HandleOverflow, 711 InterpreterAssembly::HandleOverflow, 712 InterpreterAssembly::HandleOverflow, 713 InterpreterAssembly::HandleOverflow, 714 InterpreterAssembly::HandleOverflow, 715 InterpreterAssembly::HandleOverflow, 716 InterpreterAssembly::HandleOverflow, 717 InterpreterAssembly::HandleOverflow, 718 InterpreterAssembly::HandleOverflow, 719 InterpreterAssembly::HandleOverflow, 720 InterpreterAssembly::HandleOverflow, 721 InterpreterAssembly::HandleOverflow, 722 InterpreterAssembly::HandleOverflow, 723 InterpreterAssembly::HandleOverflow, 724 InterpreterAssembly::HandleOverflow, 725 InterpreterAssembly::HandleOverflow, 726 InterpreterAssembly::HandleOverflow, 727 InterpreterAssembly::HandleOverflow, 728 InterpreterAssembly::HandleOverflow, 729 InterpreterAssembly::HandleOverflow, 730 InterpreterAssembly::HandleOverflow, 731 InterpreterAssembly::HandleOverflow, 732 InterpreterAssembly::HandleOverflow, 733 InterpreterAssembly::HandleOverflow, 734 InterpreterAssembly::HandleOverflow, 735 InterpreterAssembly::HandleOverflow, 736 InterpreterAssembly::HandleOverflow, 737 InterpreterAssembly::HandleOverflow, 738 InterpreterAssembly::HandleOverflow, 739 InterpreterAssembly::HandleOverflow, 740 InterpreterAssembly::HandleOverflow, 741 InterpreterAssembly::HandleOverflow, 742 InterpreterAssembly::HandleOverflow, 743 InterpreterAssembly::HandleOverflow, 744 InterpreterAssembly::HandleOverflow, 745 InterpreterAssembly::HandleOverflow, 746 InterpreterAssembly::HandleOverflow, 747 InterpreterAssembly::HandleOverflow, 748 InterpreterAssembly::HandleOverflow, 749 InterpreterAssembly::HandleOverflow, 750 InterpreterAssembly::HandleOverflow, 751 InterpreterAssembly::HandleOverflow, 752 InterpreterAssembly::HandleOverflow, 753 InterpreterAssembly::HandleOverflow, 754 InterpreterAssembly::HandleOverflow, 755 InterpreterAssembly::HandleOverflow, 756 InterpreterAssembly::HandleOverflow, 757 InterpreterAssembly::HandleOverflow, 758 InterpreterAssembly::HandleOverflow, 759 InterpreterAssembly::HandleOverflow, 760 InterpreterAssembly::HandleOverflow, 761 InterpreterAssembly::HandleOverflow, 762 InterpreterAssembly::HandleOverflow, 763 InterpreterAssembly::HandleOverflow, 764 InterpreterAssembly::HandleOverflow, 765 InterpreterAssembly::HandleOverflow, 766 InterpreterAssembly::HandleOverflow, 767 InterpreterAssembly::HandleOverflow, 768 }; 769 } // namespace panda::ecmascript 770 #endif // ECMASCRIPT_COMPILE_INTERPRETER_ASM 771 #endif // ECMASCRIPT_INTERPRETER_INTERPRETER_ASSEMBLY_64BIT_H 772