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