1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ECMASCRIPT_BASELINE_COMPILER_CALL_SIGNATURE_H
17#define ECMASCRIPT_BASELINE_COMPILER_CALL_SIGNATURE_H
18
19#include "ecmascript/compiler/call_signature.h"
20#include "ecmascript/compiler/baseline/baseline_compiler_builtins.h"
21
22namespace panda::ecmascript::kungfu {
23enum class BaselineCallInputs : size_t {
24    GLUE = 0,
25    SP,
26    OTHERS,
27};
28
29#define DEFINE_PARAMETER_INDEX(name, ...)                          \
30enum class name##CallSignature::ParameterIndex : uint8_t {         \
31    __VA_ARGS__,                                                   \
32    PARAMETER_COUNT,                                               \
33};
34
35#define DECL_BASELINE_CALL_SIGNATURE(name)                         \
36class name##CallSignature final {                                  \
37public:                                                            \
38    enum class ParameterIndex : uint8_t;                           \
39    static void Initialize(CallSignature *descriptor);             \
40};
41
42#define BASELINE_STUB_CALL_SIGNATURE_COMMON_SET();                         \
43    callSign->SetParameters(params.data());                                \
44    callSign->SetTargetKind(CallSignature::TargetKind::BASELINE_STUB);     \
45    callSign->SetCallConv(CallSignature::CallConv::CCallConv)
46
47static constexpr size_t FIRST_PARAMETER = 0;
48static constexpr size_t SECOND_PARAMETER = 1;
49static constexpr size_t THIRD_PARAMETER = 2;
50static constexpr size_t FOURTH_PARAMETER = 3;
51static constexpr size_t FIFTH_PARAMETER = 4;
52static constexpr size_t SIXTH_PARAMETER = 5;
53static constexpr size_t SEVENTH_PARAMETER = 6;
54static constexpr size_t EGIHTH_PARAMETER = 7;
55static constexpr size_t NINTH_PARAMETER = 8;
56BASELINE_COMPILER_BUILTIN_LIST(DECL_BASELINE_CALL_SIGNATURE)
57
58// describe the parameters of the baseline builtins
59DEFINE_PARAMETER_INDEX(BaselineTryLdGLobalByNameImm8ID16,
60    GLUE, SP, STRING_ID, SLOT_ID)
61DEFINE_PARAMETER_INDEX(BaselineStToGlobalRecordImm16ID16,
62    GLUE, SP, ACC, STRING_ID)
63DEFINE_PARAMETER_INDEX(BaselineLdaStrID16,
64    GLUE, SP, STRING_ID)
65DEFINE_PARAMETER_INDEX(BaselineCallArg1Imm8V8,
66    GLUE, SP, ARG0, SLOT_ID)
67DEFINE_PARAMETER_INDEX(BaselineLdsymbol,
68    GLUE)
69DEFINE_PARAMETER_INDEX(BaselineLdglobal,
70    GLUE)
71DEFINE_PARAMETER_INDEX(BaselinePoplexenv,
72    GLUE, SP)
73DEFINE_PARAMETER_INDEX(BaselineGetunmappedargs,
74    GLUE, SP, ACC)
75DEFINE_PARAMETER_INDEX(BaselineAsyncfunctionenter,
76    GLUE, SP)
77DEFINE_PARAMETER_INDEX(BaselineCreateasyncgeneratorobjV8,
78    GLUE, SP, GEN_FUNC, ACC)
79DEFINE_PARAMETER_INDEX(BaselineDebugger,
80    GLUE)
81DEFINE_PARAMETER_INDEX(BaselineGetpropiterator,
82    GLUE, SP, ACC)
83DEFINE_PARAMETER_INDEX(BaselineGetiteratorImm8,
84    GLUE, SP, SLOT_ID)
85DEFINE_PARAMETER_INDEX(BaselineGetiteratorImm16,
86    GLUE, SP, SLOT_ID)
87DEFINE_PARAMETER_INDEX(BaselineCloseiteratorImm8V8,
88    GLUE, SP, ITER)
89DEFINE_PARAMETER_INDEX(BaselineCloseiteratorImm16V8,
90    GLUE, SP, ITER)
91DEFINE_PARAMETER_INDEX(BaselineAsyncgeneratorresolveV8V8V8,
92    GLUE, SP, OFFSET, V0, V1, V2)
93DEFINE_PARAMETER_INDEX(BaselineCreateemptyobject,
94    GLUE, SP, SLOT_ID)
95DEFINE_PARAMETER_INDEX(BaselineCreateemptyarrayImm8,
96    GLUE, SP, TRACE_ID, SLOT_ID)
97DEFINE_PARAMETER_INDEX(BaselineCreateemptyarrayImm16,
98    GLUE, SP, TRACE_ID, SLOTID)
99DEFINE_PARAMETER_INDEX(BaselineCreategeneratorobjV8,
100    GLUE, SP, GEN_FUNC)
101DEFINE_PARAMETER_INDEX(BaselineCreateiterresultobjV8V8,
102    GLUE, SP, VALUE, FLAG)
103DEFINE_PARAMETER_INDEX(BaselineCreateobjectwithexcludedkeysImm8V8V8,
104    GLUE, SP, NUMKEYS, OBJ, FIRST_ARG_REG_IDX)
105DEFINE_PARAMETER_INDEX(BaselineCallthis0Imm8V8,
106    GLUE, SP, THIS_VALUE_NO, SLOT_ID)
107DEFINE_PARAMETER_INDEX(BaselineCreatearraywithbufferImm8Id16,
108    GLUE, SP, TRACE_ID, IMM, SLOTID)
109DEFINE_PARAMETER_INDEX(BaselineCreatearraywithbufferImm16Id16,
110    GLUE, SP, TRACE_ID, IMM, SLOTID)
111DEFINE_PARAMETER_INDEX(BaselineCallthis1Imm8V8V8,
112    GLUE, SP, THIS_VALUE_ID, A0_VALUE_ID, SLOT_ID)
113DEFINE_PARAMETER_INDEX(BaselineCallthis2Imm8V8V8V8,
114    GLUE, SP, THIS_VALUE_ID, A0_VALUE_ID, A1_VALUE_ID, SLOT_ID)
115DEFINE_PARAMETER_INDEX(BaselineCreateobjectwithbufferImm8Id16,
116    GLUE, SP, IMM, SLOT_ID)
117DEFINE_PARAMETER_INDEX(BaselineCreateobjectwithbufferImm16Id16,
118    GLUE, SP, IMM, SLOT_ID)
119DEFINE_PARAMETER_INDEX(BaselineCreateregexpwithliteralImm8Id16Imm8,
120    GLUE, SP, STRING_ID, FLAGS)
121DEFINE_PARAMETER_INDEX(BaselineCreateregexpwithliteralImm16Id16Imm8,
122    GLUE, SP, STRING_ID, FLAGS)
123DEFINE_PARAMETER_INDEX(BaselineNewobjapplyImm8V8,
124    GLUE, SP, ACC, FUNC)
125DEFINE_PARAMETER_INDEX(BaselineNewobjapplyImm16V8,
126    GLUE, SP, ACC, FUNC)
127DEFINE_PARAMETER_INDEX(BaselineNewlexenvImm8,
128    GLUE, ACC, NUM_VARS, SP)
129DEFINE_PARAMETER_INDEX(BaselineNewlexenvwithnameImm8Id16,
130    GLUE, SP, ACC, NUM_VARS, SCOPEID)
131DEFINE_PARAMETER_INDEX(BaselineAdd2Imm8V8,
132    GLUE, SP, LEFT, SLOT_ID)
133DEFINE_PARAMETER_INDEX(BaselineSub2Imm8V8,
134    GLUE, SP, LEFT, SLOT_ID)
135DEFINE_PARAMETER_INDEX(BaselineMul2Imm8V8,
136    GLUE, SP, LEFT, SLOT_ID)
137DEFINE_PARAMETER_INDEX(BaselineDiv2Imm8V8,
138    GLUE, SP, LEFT, SLOT_ID)
139DEFINE_PARAMETER_INDEX(BaselineMod2Imm8V8,
140    GLUE, SP, LEFT, SLOT_ID)
141DEFINE_PARAMETER_INDEX(BaselineEqImm8V8,
142    GLUE, SP, LEFT, SLOT_ID)
143DEFINE_PARAMETER_INDEX(BaselineNoteqImm8V8,
144    GLUE, SP, LEFT, SLOT_ID)
145DEFINE_PARAMETER_INDEX(BaselineLessImm8V8,
146    GLUE, SP, LEFT, SLOT_ID)
147DEFINE_PARAMETER_INDEX(BaselineLesseqImm8V8,
148    GLUE, SP, LEFT, SLOT_ID)
149DEFINE_PARAMETER_INDEX(BaselineGreaterImm8V8,
150    GLUE, SP, LEFT, SLOT_ID)
151DEFINE_PARAMETER_INDEX(BaselineGreatereqImm8V8,
152    GLUE, SP, LEFT, SLOT_ID)
153DEFINE_PARAMETER_INDEX(BaselineShl2Imm8V8,
154    GLUE, SP, LEFT, SLOT_ID)
155DEFINE_PARAMETER_INDEX(BaselineShr2Imm8V8,
156    GLUE, SP, LEFT, SLOT_ID)
157DEFINE_PARAMETER_INDEX(BaselineAshr2Imm8V8,
158    GLUE, SP, LEFT, SLOT_ID)
159DEFINE_PARAMETER_INDEX(BaselineAnd2Imm8V8,
160    GLUE, SP, LEFT, SLOT_ID)
161DEFINE_PARAMETER_INDEX(BaselineOr2Imm8V8,
162    GLUE, SP, LEFT, SLOT_ID)
163DEFINE_PARAMETER_INDEX(BaselineXor2Imm8V8,
164    GLUE, SP, LEFT, SLOT_ID)
165DEFINE_PARAMETER_INDEX(BaselineExpImm8V8,
166    GLUE, SP, BASE)
167DEFINE_PARAMETER_INDEX(BaselineTypeofImm8,
168    GLUE, ACC)
169DEFINE_PARAMETER_INDEX(BaselineTypeofImm16,
170    GLUE, ACC)
171DEFINE_PARAMETER_INDEX(BaselineTonumberImm8,
172    GLUE, SP, ACC)
173DEFINE_PARAMETER_INDEX(BaselineTonumericImm8,
174    GLUE, SP, ACC)
175DEFINE_PARAMETER_INDEX(BaselineNegImm8,
176    GLUE, SP, SLOT_ID)
177DEFINE_PARAMETER_INDEX(BaselineNotImm8,
178    GLUE, SP, SLOT_ID)
179DEFINE_PARAMETER_INDEX(BaselineIncImm8,
180    GLUE, SP, SLOT_ID)
181DEFINE_PARAMETER_INDEX(BaselineDecImm8,
182    GLUE, SP, SLOT_ID)
183DEFINE_PARAMETER_INDEX(BaselineIsinImm8V8,
184    GLUE, SP, ACC, PROP)
185DEFINE_PARAMETER_INDEX(BaselineInstanceofImm8V8,
186    GLUE, SP, OBJ_ID, SLOTID)
187DEFINE_PARAMETER_INDEX(BaselineStrictnoteqImm8V8,
188    GLUE, SP, LEFT, SLOT_ID)
189DEFINE_PARAMETER_INDEX(BaselineStricteqImm8V8,
190    GLUE, SP, LEFT, SLOT_ID)
191DEFINE_PARAMETER_INDEX(BaselineIstrue,
192    ACC)
193DEFINE_PARAMETER_INDEX(BaselineIsfalse,
194    ACC)
195DEFINE_PARAMETER_INDEX(BaselineCallthis3Imm8V8V8V8V8,
196    GLUE, SP, THIS_VALUE_ID, ARG_IDS, SLOT_ID)
197DEFINE_PARAMETER_INDEX(BaselineCallthisrangeImm8Imm8V8,
198    GLUE, SP, ACTUAL_NUM_ARGS, THIS_REG, SLOT_ID)
199DEFINE_PARAMETER_INDEX(BaselineSupercallthisrangeImm8Imm8V8,
200    GLUE, SP, RANGE, V0, HOTNESS_COUNTER)
201DEFINE_PARAMETER_INDEX(BaselineSupercallarrowrangeImm8Imm8V8,
202    GLUE, SP, ACC, RANGE, V0)
203DEFINE_PARAMETER_INDEX(BaselineDefinefuncImm8Id16Imm8,
204    GLUE, SP, METHODID, LENGTH, SLOT_ID)
205DEFINE_PARAMETER_INDEX(BaselineDefinefuncImm16Id16Imm8,
206    GLUE, SP, METHODID, LENGTH, SLOT_ID)
207DEFINE_PARAMETER_INDEX(BaselineDefinemethodImm8Id16Imm8,
208    GLUE, ACC, METHODID, LENGTH, SP)
209DEFINE_PARAMETER_INDEX(BaselineDefinemethodImm16Id16Imm8,
210    GLUE, ACC, METHODID, LENGTH, SP)
211DEFINE_PARAMETER_INDEX(BaselineCallarg0Imm8,
212    GLUE, SP, SLOT_ID)
213DEFINE_PARAMETER_INDEX(BaselineSupercallspreadImm8V8,
214    GLUE, SP, ACC, ARRARY, HOTNESS_COUNTER)
215DEFINE_PARAMETER_INDEX(BaselineCallRuntimeSupercallforwardallargsPrefV8,
216    GLUE, SP, V0)
217DEFINE_PARAMETER_INDEX(BaselineApplyImm8V8V8,
218    GLUE, SP, ACC, OBJ, ARRARY)
219DEFINE_PARAMETER_INDEX(BaselineCallargs2Imm8V8V8,
220    GLUE, SP, ARG0_NO, ARG1_NO, SLOT_ID)
221DEFINE_PARAMETER_INDEX(BaselineCallargs3Imm8V8V8V8,
222    GLUE, SP, ARG0_NO, ARG1_NO, ARG2_NO, SLOT_ID)
223DEFINE_PARAMETER_INDEX(BaselineCallrangeImm8Imm8V8,
224    GLUE, SP, ACTUAL_NUM_ARGS, ARG_START, SLOT_ID)
225DEFINE_PARAMETER_INDEX(BaselineLdexternalmodulevarImm8,
226    GLUE, INDEX)
227DEFINE_PARAMETER_INDEX(BaselineLdthisbynameImm8Id16,
228    GLUE, SP, STRING_ID, SLOT_ID)
229DEFINE_PARAMETER_INDEX(BaselineDefinegettersetterbyvalueV8V8V8V8,
230    GLUE, SP, OFFSET, VREG_IDS)
231DEFINE_PARAMETER_INDEX(BaselineLdthisbynameImm16Id16,
232    GLUE, SP, STRING_ID, SLOT_ID)
233DEFINE_PARAMETER_INDEX(BaselineStthisbynameImm8Id16,
234    GLUE, SP, STRING_ID, SLOT_ID)
235DEFINE_PARAMETER_INDEX(BaselineStthisbynameImm16Id16,
236    GLUE, SP, STRING_ID, SLOT_ID)
237DEFINE_PARAMETER_INDEX(BaselineLdthisbyvalueImm8,
238    GLUE, SP, SLOT_ID)
239DEFINE_PARAMETER_INDEX(BaselineLdthisbyvalueImm16,
240    GLUE, SP, SLOT_ID)
241DEFINE_PARAMETER_INDEX(BaselineStthisbyvalueImm8V8,
242    GLUE, SP, SLOT_ID, PROP_KEY)
243DEFINE_PARAMETER_INDEX(BaselineStthisbyvalueImm16V8,
244    GLUE, SP, SLOT_ID, PROP_KEY)
245DEFINE_PARAMETER_INDEX(BaselineDynamicimport,
246    GLUE, SP)
247DEFINE_PARAMETER_INDEX(BaselineDefineclasswithbufferImm8Id16Id16Imm16V8,
248    GLUE, SP, METHOD_ID, LITERRAL_ID, LENGTH, V0)
249DEFINE_PARAMETER_INDEX(BaselineDefineclasswithbufferImm16Id16Id16Imm16V8,
250    GLUE, SP, METHOD_LITERIAL_ID, COUNT_SUPERCLASS_ID, SLOT_ID)
251DEFINE_PARAMETER_INDEX(BaselineResumegenerator,
252    GLUE, SP, ACC)
253DEFINE_PARAMETER_INDEX(BaselineGetresumemod,
254    ACC)
255DEFINE_PARAMETER_INDEX(BaselineGettemplateobjectImm8,
256    GLUE, SP, ACC)
257DEFINE_PARAMETER_INDEX(BaselineGettemplateobjectImm16,
258    GLUE, SP, ACC)
259DEFINE_PARAMETER_INDEX(BaselineGetnextpropnameV8,
260    GLUE, SP, ITER)
261DEFINE_PARAMETER_INDEX(BaselineSetobjectwithprotoImm8V8,
262    GLUE, SP, ACC, PROTO)
263DEFINE_PARAMETER_INDEX(BaselineDelobjpropV8,
264    GLUE, SP, ACC, OBJ)
265DEFINE_PARAMETER_INDEX(BaselineAsyncfunctionawaituncaughtV8,
266    GLUE, SP, ACC, ASYNC_FUNC_OBJ)
267DEFINE_PARAMETER_INDEX(BaselineCopydatapropertiesV8,
268    GLUE, SP, ACC, DST)
269DEFINE_PARAMETER_INDEX(BaselineStarrayspreadV8V8,
270    GLUE, SP, ACC, DST, INDEX)
271DEFINE_PARAMETER_INDEX(BaselineSetobjectwithprotoImm16V8,
272    GLUE, SP, ACC, PROTO)
273DEFINE_PARAMETER_INDEX(BaselineLdobjbyvalueImm8V8,
274    GLUE, SP, RECEIVER, SLOTID)
275DEFINE_PARAMETER_INDEX(BaselineLdobjbyvalueImm16V8,
276    GLUE, SP, RECEIVER, SLOTID)
277DEFINE_PARAMETER_INDEX(BaselineStobjbyvalueImm8V8V8,
278    GLUE, SP, RECEIVER, SLOTID, PROP_KEY)
279DEFINE_PARAMETER_INDEX(BaselineStobjbyvalueImm16V8V8,
280    GLUE, SP, RECEIVER, SLOTID, PROP_KEY)
281DEFINE_PARAMETER_INDEX(BaselineStownbyvalueImm8V8V8,
282    GLUE, SP, RECEIVER_ID, PROP_KEY_ID, SLOT_ID)
283DEFINE_PARAMETER_INDEX(BaselineStownbyvalueImm16V8V8,
284    GLUE, SP, RECEIVER, PROP_KEY, SLOT_ID)
285DEFINE_PARAMETER_INDEX(BaselineLdsuperbyvalueImm8V8,
286    GLUE, SP, ACC, RECEIVER)
287DEFINE_PARAMETER_INDEX(BaselineLdsuperbyvalueImm16V8,
288    GLUE, SP, ACC, RECEIVER)
289DEFINE_PARAMETER_INDEX(BaselineStsuperbyvalueImm8V8V8,
290    GLUE, SP, RECEIVER, PROP_KEY)
291DEFINE_PARAMETER_INDEX(BaselineStsuperbyvalueImm16V8V8,
292    GLUE, SP, RECEIVER, PROP_KEY)
293DEFINE_PARAMETER_INDEX(BaselineLdobjbyindexImm8Imm16,
294    GLUE, SP, INDEX, SLOT_ID)
295DEFINE_PARAMETER_INDEX(BaselineLdobjbyindexImm16Imm16,
296    GLUE, SP, INDEX, SLOT_ID)
297DEFINE_PARAMETER_INDEX(BaselineStobjbyindexImm8V8Imm16,
298    GLUE, SP, RECEIVER, INDEX)
299DEFINE_PARAMETER_INDEX(BaselineStobjbyindexImm16V8Imm16,
300    GLUE, SP, RECEIVER, INDEX, SLOT_ID)
301DEFINE_PARAMETER_INDEX(BaselineStownbyindexImm8V8Imm16,
302    GLUE, SP, RECEIVER, INDEX, SLOTID)
303DEFINE_PARAMETER_INDEX(BaselineStownbyindexImm16V8Imm16,
304    GLUE, SP, RECEIVER, INDEX, SLOTID)
305DEFINE_PARAMETER_INDEX(BaselineAsyncfunctionresolveV8,
306    GLUE, SP, ACC, ASYNC_FUNC_OBJ)
307DEFINE_PARAMETER_INDEX(BaselineAsyncfunctionrejectV8,
308    GLUE, SP, ACC, ASYNC_FUNC_OBJ)
309DEFINE_PARAMETER_INDEX(BaselineCopyrestargsImm8,
310    GLUE, SP, ACC, REST_IDX)
311DEFINE_PARAMETER_INDEX(BaselineLdlexvarImm4Imm4,
312    SP, LEVEL, SLOT)
313DEFINE_PARAMETER_INDEX(BaselineStlexvarImm4Imm4,
314    GLUE, SP, ACC, LEVEL, SLOT)
315DEFINE_PARAMETER_INDEX(BaselineGetmodulenamespaceImm8,
316    GLUE, INDEX)
317DEFINE_PARAMETER_INDEX(BaselineStmodulevarImm8,
318    GLUE, ACC, INDEX)
319DEFINE_PARAMETER_INDEX(BaselineTryldglobalbynameImm16Id16,
320    GLUE, SP, SLOTID, STRING_ID)
321DEFINE_PARAMETER_INDEX(BaselineTrystglobalbynameImm8Id16,
322    GLUE, SP, STRING_ID, SLOTID)
323DEFINE_PARAMETER_INDEX(BaselineTrystglobalbynameImm16Id16,
324    GLUE, SP, SLOTID, STRING_ID)
325DEFINE_PARAMETER_INDEX(BaselineLdglobalvarImm16Id16,
326    GLUE, SP, SLOTID, STRING_ID)
327DEFINE_PARAMETER_INDEX(BaselineStglobalvarImm16Id16,
328    GLUE, SP, ACC, SLOTID, STRING_ID)
329DEFINE_PARAMETER_INDEX(BaselineLdobjbynameImm8Id16,
330    GLUE, SP, SLOTID, STRING_ID)
331DEFINE_PARAMETER_INDEX(BaselineLdobjbynameImm16Id16,
332    GLUE, SP, SLOTID, STRING_ID)
333DEFINE_PARAMETER_INDEX(BaselineStobjbynameImm8Id16V8,
334    GLUE, SP, SLOTID, STRING_ID, RECEIVER)
335DEFINE_PARAMETER_INDEX(BaselineStobjbynameImm16Id16V8,
336    GLUE, SP, SLOTID, STRING_ID, RECEIVER)
337DEFINE_PARAMETER_INDEX(BaselineStownbynameImm8Id16V8,
338    GLUE, SP, RECEIVER_ID, STRING_ID, SLOT_ID)
339DEFINE_PARAMETER_INDEX(BaselineStownbynameImm16Id16V8,
340    GLUE, SP, RECEIVER, STRING_ID, SLOT_ID)
341DEFINE_PARAMETER_INDEX(BaselineLdsuperbynameImm8Id16,
342    GLUE, SP, STRING_ID)
343DEFINE_PARAMETER_INDEX(BaselineLdsuperbynameImm16Id16,
344    GLUE, SP, STRING_ID)
345DEFINE_PARAMETER_INDEX(BaselineStsuperbynameImm8Id16V8,
346    GLUE, SP, ACC, RECEIVER, STRING_ID)
347DEFINE_PARAMETER_INDEX(BaselineStsuperbynameImm16Id16V8,
348    GLUE, SP, ACC, RECEIVER, STRING_ID)
349DEFINE_PARAMETER_INDEX(BaselineLdlocalmodulevarImm8,
350    GLUE, INDEX)
351DEFINE_PARAMETER_INDEX(BaselineStconsttoglobalrecordImm16Id16,
352    GLUE, SP, ACC, STRING_ID)
353DEFINE_PARAMETER_INDEX(BaselineStownbyvaluewithnamesetImm8V8V8,
354    GLUE, SP, RECEIVER_ID, PROP_KEY_ID, SLOT_ID)
355DEFINE_PARAMETER_INDEX(BaselineStownbyvaluewithnamesetImm16V8V8,
356    GLUE, SP, RECEIVER, PROP_KEY, SLOT_ID)
357DEFINE_PARAMETER_INDEX(BaselineStownbynamewithnamesetImm8Id16V8,
358    GLUE, SP, RECEIVER_ID, STRING_ID, SLOT_ID)
359DEFINE_PARAMETER_INDEX(BaselineStownbynamewithnamesetImm16Id16V8,
360    GLUE, SP, STRING_ID, RECEIVER, SLOT_ID)
361DEFINE_PARAMETER_INDEX(BaselineLdbigintId16,
362    GLUE, SP, STRING_ID)
363DEFINE_PARAMETER_INDEX(BaselineFldaiImm64,
364    IMM)
365DEFINE_PARAMETER_INDEX(BaselineReturn, GLUE, SP, OFFSET)
366DEFINE_PARAMETER_INDEX(BaselineLdlexvarImm8Imm8,
367    LEVEL, SLOT, SP)
368DEFINE_PARAMETER_INDEX(BaselineStlexvarImm8Imm8,
369    GLUE, ACC, LEVEL, SLOT, SP)
370DEFINE_PARAMETER_INDEX(BaselineJnstricteqV8Imm16,
371    GLUE)
372DEFINE_PARAMETER_INDEX(BaselineAsyncgeneratorrejectV8,
373    GLUE, SP, ACC, V0)
374DEFINE_PARAMETER_INDEX(BaselineSetgeneratorstateImm8,
375    GLUE, ACC, INDEX)
376DEFINE_PARAMETER_INDEX(BaselineGetasynciteratorImm8,
377    GLUE, SP, ACC)
378DEFINE_PARAMETER_INDEX(BaselineLdPrivatePropertyImm8Imm16Imm16,
379    GLUE, SP, ACC, INDEX0, INDEX1, ENV)
380DEFINE_PARAMETER_INDEX(BaselineStPrivatePropertyImm8Imm16Imm16V8,
381    GLUE, SP, INDEX0, INDEX1, INDEX2)
382DEFINE_PARAMETER_INDEX(BaselineTestInImm8Imm16Imm16,
383    GLUE, SP, ACC, INDEX0, INDEX1, ENV)
384DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdlexenvPrefNone,
385    SP)
386DEFINE_PARAMETER_INDEX(BaselineWideCreateobjectwithexcludedkeysPrefImm16V8V8,
387    GLUE, SP, V0, V1, V2)
388DEFINE_PARAMETER_INDEX(BaselineThrowPrefNone,
389    GLUE, SP, ACC)
390DEFINE_PARAMETER_INDEX(BaselineDeprecatedPoplexenvPrefNone,
391    GLUE, SP)
392DEFINE_PARAMETER_INDEX(BaselineWideNewobjrangePrefImm16V8,
393    GLUE, SP, NUM_ARGS, IDX, HOTNESS_COUNTER, SLOT_ID)
394DEFINE_PARAMETER_INDEX(BaselineThrowNotexistsPrefNone,
395    GLUE, SP)
396DEFINE_PARAMETER_INDEX(BaselineDeprecatedGetiteratornextPrefV8V8,
397    GLUE, SP, V0, V1)
398DEFINE_PARAMETER_INDEX(BaselineWideNewlexenvPrefImm16,
399    GLUE, SP, ACC, NUM_VARS)
400DEFINE_PARAMETER_INDEX(BaselineThrowPatternnoncoerciblePrefNone,
401    GLUE, SP)
402DEFINE_PARAMETER_INDEX(BaselineDeprecatedCreatearraywithbufferPrefImm16,
403    GLUE, SP, IMM_I16, SLOT_ID, PROFILE_TYPE_INFO, PC)
404DEFINE_PARAMETER_INDEX(BaselineWideNewlexenvwithnamePrefImm16Id16,
405    GLUE, SP, ACC, NUM_VARS, SCOPE_ID)
406DEFINE_PARAMETER_INDEX(BaselineThrowDeletesuperpropertyPrefNone,
407    GLUE, SP)
408DEFINE_PARAMETER_INDEX(BaselineDeprecatedCreateobjectwithbufferPrefImm16,
409    GLUE, IMM_I16, SP)
410DEFINE_PARAMETER_INDEX(BaselineNewobjrangeImm8Imm8V8,
411    GLUE, SP, NUM_ARGS, FIRST_ARG_REG_IDX, SLOT_ID)
412DEFINE_PARAMETER_INDEX(BaselineNewobjrangeImm16Imm8V8,
413    GLUE, SP, NUM_ARGS, FIRST_ARG_REG_IDX, SLOT_ID)
414DEFINE_PARAMETER_INDEX(BaselineWideCallrangePrefImm16V8,
415    GLUE, SP, ACC, ACTUAL_NUM_ARGS, VREG_ID, HOTNESS_COUNTER)
416DEFINE_PARAMETER_INDEX(BaselineThrowConstassignmentPrefV8,
417    GLUE, SP, V0)
418DEFINE_PARAMETER_INDEX(BaselineDeprecatedTonumberPrefV8,
419    GLUE, SP, V0)
420DEFINE_PARAMETER_INDEX(BaselineWideCallthisrangePrefImm16V8,
421    GLUE, SP, ACC, ACTUAL_NUM_ARGS, VREG_ID, HOTNESS_COUNTER)
422DEFINE_PARAMETER_INDEX(BaselineThrowIfnotobjectPrefV8,
423    GLUE, SP, V0)
424DEFINE_PARAMETER_INDEX(BaselineDeprecatedTonumericPrefV8,
425    GLUE, SP, V0)
426DEFINE_PARAMETER_INDEX(BaselineWideSupercallthisrangePrefImm16V8,
427    GLUE, SP, RANGE, V0)
428DEFINE_PARAMETER_INDEX(BaselineThrowUndefinedifholePrefV8V8,
429    GLUE, SP, V0, V1)
430DEFINE_PARAMETER_INDEX(BaselineThrowUndefinedifholewithnamePrefId16,
431    GLUE, SP, STRING_ID)
432DEFINE_PARAMETER_INDEX(BaselineDeprecatedNegPrefV8,
433    GLUE, SP, V0)
434DEFINE_PARAMETER_INDEX(BaselineWideSupercallarrowrangePrefImm16V8,
435    GLUE, SP, ACC, RANGE, V0)
436DEFINE_PARAMETER_INDEX(BaselineThrowIfsupernotcorrectcallPrefImm8,
437    GLUE, SP, ACC, IMM)
438DEFINE_PARAMETER_INDEX(BaselineDeprecatedNotPrefV8,
439    GLUE, SP, INDEX)
440DEFINE_PARAMETER_INDEX(BaselineWideLdobjbyindexPrefImm32,
441    GLUE, SP, INDEX, SLOT_ID)
442DEFINE_PARAMETER_INDEX(BaselineThrowIfsupernotcorrectcallPrefImm16,
443    GLUE, SP, ACC, IMM)
444DEFINE_PARAMETER_INDEX(BaselineDeprecatedIncPrefV8,
445    GLUE, SP, V0)
446DEFINE_PARAMETER_INDEX(BaselineWideStobjbyindexPrefV8Imm32,
447    GLUE, SP, V0, INDEX, SLOT_ID)
448DEFINE_PARAMETER_INDEX(BaselineDeprecatedDecPrefV8,
449    GLUE, SP, INDEX)
450DEFINE_PARAMETER_INDEX(BaselineWideStownbyindexPrefV8Imm32,
451    GLUE, SP, V0, INDEX, SLOT_ID)
452DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallarg0PrefV8,
453    GLUE, SP, FUNC_REG, HOTNESS_COUNTER)
454DEFINE_PARAMETER_INDEX(BaselineWideCopyrestargsPrefImm16,
455    GLUE, SP, INDEX)
456DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallarg1PrefV8V8,
457    GLUE, SP, FUNC_REG, A0, HOTNESS_COUNTER)
458DEFINE_PARAMETER_INDEX(BaselineWideLdlexvarPrefImm16Imm16,
459    SP, LEVEL, SLOT)
460DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallargs2PrefV8V8V8,
461    GLUE, SP, FUNC_REG, A0, A1, HOTNESS_COUNTER)
462DEFINE_PARAMETER_INDEX(BaselineWideStlexvarPrefImm16Imm16,
463    GLUE, SP, ACC, LEVEL, SLOT)
464DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallargs3PrefV8V8V8V8,
465    GLUE, SP, FUNC_REG, A0, A1, A2)
466DEFINE_PARAMETER_INDEX(BaselineWideGetmodulenamespacePrefImm16,
467    GLUE, INDEX)
468DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallrangePrefImm16V8,
469    GLUE, SP, INDEX, FUNC_REG, HOTNESS_COUNTER)
470DEFINE_PARAMETER_INDEX(BaselineWideStmodulevarPrefImm16,
471    GLUE, ACC, INDEX)
472DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallspreadPrefV8V8V8,
473    GLUE, SP, V0, V1, V2)
474DEFINE_PARAMETER_INDEX(BaselineWideLdlocalmodulevarPrefImm16,
475    GLUE, INDEX)
476DEFINE_PARAMETER_INDEX(BaselineDeprecatedCallthisrangePrefImm16V8,
477    GLUE, SP, INDEX, FUNC_REG, HOTNESS_COUNTER)
478DEFINE_PARAMETER_INDEX(BaselineWideLdexternalmodulevarPrefImm16,
479    GLUE, INDEX)
480DEFINE_PARAMETER_INDEX(BaselineDeprecatedDefineclasswithbufferPrefId16Imm16Imm16V8V8,
481    GLUE, SP, METHOD_ID, LITERAL_ID, LENGTH, VREG_IDS)
482DEFINE_PARAMETER_INDEX(BaselineWideLdpatchvarPrefImm16,
483    GLUE, SP, INDEX)
484DEFINE_PARAMETER_INDEX(BaselineDeprecatedResumegeneratorPrefV8,
485    GLUE, SP, ACC, V0)
486DEFINE_PARAMETER_INDEX(BaselineWideStpatchvarPrefImm16,
487    GLUE, SP, ACC, INDEX)
488DEFINE_PARAMETER_INDEX(BaselineDeprecatedGetresumemodePrefV8,
489    SP, ACC, V0)
490DEFINE_PARAMETER_INDEX(BaselineDeprecatedGettemplateobjectPrefV8,
491    GLUE, SP, V0)
492DEFINE_PARAMETER_INDEX(BaselineDeprecatedDelobjpropPrefV8V8,
493    GLUE, SP, V0, V1)
494DEFINE_PARAMETER_INDEX(BaselineDeprecatedSuspendgeneratorPrefV8V8,
495    GLUE, SP, OFFSET, V0, V1)
496DEFINE_PARAMETER_INDEX(BaselineSuspendgeneratorV8,
497    GLUE, SP, OFFSET, V0)
498DEFINE_PARAMETER_INDEX(BaselineDeprecatedAsyncfunctionawaituncaughtPrefV8V8,
499    GLUE, SP, V0, V1)
500DEFINE_PARAMETER_INDEX(BaselineDeprecatedCopydatapropertiesPrefV8V8,
501    GLUE, SP, V0, V1)
502DEFINE_PARAMETER_INDEX(BaselineDeprecatedSetobjectwithprotoPrefV8V8,
503    GLUE, SP, ACC, V0, V1)
504DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdobjbyvaluePrefV8V8,
505    GLUE, SP, V0, V1)
506DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdsuperbyvaluePrefV8V8,
507    GLUE, SP, V0, V1)
508DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdobjbyindexPrefV8Imm32,
509    GLUE, SP, V0, INDEX)
510DEFINE_PARAMETER_INDEX(BaselineDeprecatedAsyncfunctionresolvePrefV8V8V8,
511    GLUE, SP, V0, V1)
512DEFINE_PARAMETER_INDEX(BaselineDeprecatedAsyncfunctionrejectPrefV8V8V8,
513    GLUE, SP, V0, V1)
514DEFINE_PARAMETER_INDEX(BaselineDeprecatedStlexvarPrefImm4Imm4V8,
515    GLUE, SP, LEVEL, SLOT, V0)
516DEFINE_PARAMETER_INDEX(BaselineDeprecatedStlexvarPrefImm8Imm8V8,
517    GLUE, SP, LEVEL, SLOT, V0)
518DEFINE_PARAMETER_INDEX(BaselineDeprecatedStlexvarPrefImm16Imm16V8,
519    GLUE, SP, LEVEL, SLOT, V0)
520DEFINE_PARAMETER_INDEX(BaselineDeprecatedGetmodulenamespacePrefId32,
521    GLUE, STRING_ID, SP)
522DEFINE_PARAMETER_INDEX(BaselineDeprecatedStmodulevarPrefId32,
523    GLUE, ACC, STRING_ID, SP)
524DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdobjbynamePrefId32V8,
525    GLUE, SP, V0, STRING_ID)
526DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdsuperbynamePrefId32V8,
527    GLUE, SP, STRING_ID, V0)
528DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdmodulevarPrefId32Imm8,
529    GLUE, STRING_ID, FLAG_I8, SP)
530DEFINE_PARAMETER_INDEX(BaselineDeprecatedStconsttoglobalrecordPrefId32,
531    GLUE, ACC, STRING_ID, SP)
532DEFINE_PARAMETER_INDEX(BaselineDeprecatedStlettoglobalrecordPrefId32,
533    GLUE, ACC, STRING_ID, SP)
534DEFINE_PARAMETER_INDEX(BaselineDeprecatedStclasstoglobalrecordPrefId32,
535    GLUE, ACC, STRING_ID, SP)
536DEFINE_PARAMETER_INDEX(BaselineDeprecatedLdhomeobjectPrefNone,
537    SP)
538DEFINE_PARAMETER_INDEX(BaselineDeprecatedCreateobjecthavingmethodPrefImm16,
539    GLUE, ACC, SP, IMM_I16)
540DEFINE_PARAMETER_INDEX(BaselineDeprecatedDynamicimportPrefV8,
541    GLUE, SP, ACC, VREG)
542DEFINE_PARAMETER_INDEX(BaselineCallRuntimeNotifyConcurrentResultPrefNone,
543    GLUE, SP, ACC)
544DEFINE_PARAMETER_INDEX(BaselineDefineFieldByNameImm8Id16V8,
545    GLUE, SP, SLOT_ID, STRING_ID, V0)
546DEFINE_PARAMETER_INDEX(BaselineDefinePropertyByNameImm8Id16V8,
547    GLUE, SP, SLOT_ID, STRING_ID, V0)
548DEFINE_PARAMETER_INDEX(BaselineCallRuntimeDefineFieldByValuePrefImm8V8V8,
549    GLUE, SP, ACC, V0, V1)
550DEFINE_PARAMETER_INDEX(BaselineCallRuntimeDefineFieldByIndexPrefImm8Imm32V8,
551    GLUE, SP, ACC, INDEX, V0)
552DEFINE_PARAMETER_INDEX(BaselineCallRuntimeToPropertyKeyPrefNone,
553    GLUE, SP, ACC)
554DEFINE_PARAMETER_INDEX(BaselineCallRuntimeCreatePrivatePropertyPrefImm16Id16,
555    GLUE, SP, COUNT, LITERAL_ID)
556DEFINE_PARAMETER_INDEX(BaselineCallRuntimeDefinePrivatePropertyPrefImm8Imm16Imm16V8,
557    GLUE, SP, ACC, LEVEL_INDEX, SLOT_INDEX, V0)
558DEFINE_PARAMETER_INDEX(BaselineCallRuntimeCallInitPrefImm8V8,
559    GLUE, SP, ACC, V0, HOTNESS_COUNTER, SLOT_ID)
560DEFINE_PARAMETER_INDEX(BaselineCallRuntimeDefineSendableClassPrefImm16Id16Id16Imm16V8,
561    GLUE, SP, METHOD_ID, LITERAL_ID, LENGTH, V0)
562DEFINE_PARAMETER_INDEX(BaselineCallRuntimeLdSendableClassPrefImm16,
563    GLUE, SP, LEVEL)
564DEFINE_PARAMETER_INDEX(BaselineCallRuntimeIstruePrefImm8,
565    GLUE, SP, ACC, SLOT_ID)
566DEFINE_PARAMETER_INDEX(BaselineCallRuntimeIsfalsePrefImm8,
567    GLUE, SP, ACC, SLOT_ID)
568DEFINE_PARAMETER_INDEX(BaselineReturnundefined, GLUE, SP, OFFSET)
569DEFINE_PARAMETER_INDEX(BaselineExceptionHandler,
570    GLUE, SP, ACC)
571DEFINE_PARAMETER_INDEX(BaselineUpdateHotness,
572    GLUE, SP, OFFSET)
573}  // namespace panda::ecmascript::kungfu
574#endif  // ECMASCRIPT_BASELINE_COMPILER_CALL_SIGNATURE_H
575