• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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