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#ifndef ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
16#define ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
17namespace panda::ecmascript::kungfu {
18
19#define BASELINE_COMPILER_BUILTIN_LIST(V)                                  \
20    V(BaselineTryLdGLobalByNameImm8ID16)                                   \
21    V(BaselineStToGlobalRecordImm16ID16)                                   \
22    V(BaselineLdaStrID16)                                                  \
23    V(BaselineCallArg1Imm8V8)                                              \
24    V(BaselineLdsymbol)                                                    \
25    V(BaselineLdglobal)                                                    \
26    V(BaselinePoplexenv)                                                   \
27    V(BaselineGetunmappedargs)                                             \
28    V(BaselineAsyncfunctionenter)                                          \
29    V(BaselineCreateasyncgeneratorobjV8)                                   \
30    V(BaselineDebugger)                                                    \
31    V(BaselineGetpropiterator)                                             \
32    V(BaselineGetiteratorImm8)                                             \
33    V(BaselineGetiteratorImm16)                                            \
34    V(BaselineCloseiteratorImm8V8)                                         \
35    V(BaselineCloseiteratorImm16V8)                                        \
36    V(BaselineAsyncgeneratorresolveV8V8V8)                                 \
37    V(BaselineCreateemptyobject)                                           \
38    V(BaselineCreateemptyarrayImm8)                                        \
39    V(BaselineCreateemptyarrayImm16)                                       \
40    V(BaselineCreategeneratorobjV8)                                        \
41    V(BaselineCreateiterresultobjV8V8)                                     \
42    V(BaselineCreateobjectwithexcludedkeysImm8V8V8)                        \
43    V(BaselineCallthis0Imm8V8)                                             \
44    V(BaselineCreatearraywithbufferImm8Id16)                               \
45    V(BaselineCreatearraywithbufferImm16Id16)                              \
46    V(BaselineCallthis1Imm8V8V8)                                           \
47    V(BaselineCallthis2Imm8V8V8V8)                                         \
48    V(BaselineCreateobjectwithbufferImm8Id16)                              \
49    V(BaselineCreateobjectwithbufferImm16Id16)                             \
50    V(BaselineCreateregexpwithliteralImm8Id16Imm8)                         \
51    V(BaselineCreateregexpwithliteralImm16Id16Imm8)                        \
52    V(BaselineNewobjapplyImm8V8)                                           \
53    V(BaselineNewobjapplyImm16V8)                                          \
54    V(BaselineNewlexenvImm8)                                               \
55    V(BaselineNewlexenvwithnameImm8Id16)                                   \
56    V(BaselineAdd2Imm8V8)                                                  \
57    V(BaselineSub2Imm8V8)                                                  \
58    V(BaselineMul2Imm8V8)                                                  \
59    V(BaselineDiv2Imm8V8)                                                  \
60    V(BaselineMod2Imm8V8)                                                  \
61    V(BaselineEqImm8V8)                                                    \
62    V(BaselineNoteqImm8V8)                                                 \
63    V(BaselineLessImm8V8)                                                  \
64    V(BaselineLesseqImm8V8)                                                \
65    V(BaselineGreaterImm8V8)                                               \
66    V(BaselineGreatereqImm8V8)                                             \
67    V(BaselineShl2Imm8V8)                                                  \
68    V(BaselineShr2Imm8V8)                                                  \
69    V(BaselineAshr2Imm8V8)                                                 \
70    V(BaselineAnd2Imm8V8)                                                  \
71    V(BaselineOr2Imm8V8)                                                   \
72    V(BaselineXor2Imm8V8)                                                  \
73    V(BaselineExpImm8V8)                                                   \
74    V(BaselineTypeofImm8)                                                  \
75    V(BaselineTypeofImm16)                                                 \
76    V(BaselineTonumberImm8)                                                \
77    V(BaselineTonumericImm8)                                               \
78    V(BaselineNegImm8)                                                     \
79    V(BaselineNotImm8)                                                     \
80    V(BaselineIncImm8)                                                     \
81    V(BaselineDecImm8)                                                     \
82    V(BaselineIsinImm8V8)                                                  \
83    V(BaselineInstanceofImm8V8)                                            \
84    V(BaselineStrictnoteqImm8V8)                                           \
85    V(BaselineStricteqImm8V8)                                              \
86    V(BaselineIstrue)                                                      \
87    V(BaselineIsfalse)                                                     \
88    V(BaselineCallthis3Imm8V8V8V8V8)                                       \
89    V(BaselineCallthisrangeImm8Imm8V8)                                     \
90    V(BaselineSupercallthisrangeImm8Imm8V8)                                \
91    V(BaselineSupercallarrowrangeImm8Imm8V8)                               \
92    V(BaselineDefinefuncImm8Id16Imm8)                                      \
93    V(BaselineDefinefuncImm16Id16Imm8)                                     \
94    V(BaselineDefinemethodImm8Id16Imm8)                                    \
95    V(BaselineDefinemethodImm16Id16Imm8)                                   \
96    V(BaselineCallarg0Imm8)                                                \
97    V(BaselineSupercallspreadImm8V8)                                       \
98    V(BaselineCallRuntimeSupercallforwardallargsPrefV8)                    \
99    V(BaselineApplyImm8V8V8)                                               \
100    V(BaselineCallargs2Imm8V8V8)                                           \
101    V(BaselineCallargs3Imm8V8V8V8)                                         \
102    V(BaselineCallrangeImm8Imm8V8)                                         \
103    V(BaselineLdexternalmodulevarImm8)                                     \
104    V(BaselineLdthisbynameImm8Id16)                                        \
105    V(BaselineDefinegettersetterbyvalueV8V8V8V8)                           \
106    V(BaselineLdthisbynameImm16Id16)                                       \
107    V(BaselineStthisbynameImm8Id16)                                        \
108    V(BaselineStthisbynameImm16Id16)                                       \
109    V(BaselineLdthisbyvalueImm8)                                           \
110    V(BaselineLdthisbyvalueImm16)                                          \
111    V(BaselineStthisbyvalueImm8V8)                                         \
112    V(BaselineStthisbyvalueImm16V8)                                        \
113    V(BaselineDynamicimport)                                               \
114    V(BaselineDefineclasswithbufferImm8Id16Id16Imm16V8)                    \
115    V(BaselineDefineclasswithbufferImm16Id16Id16Imm16V8)                   \
116    V(BaselineResumegenerator)                                             \
117    V(BaselineGetresumemod)                                                \
118    V(BaselineGettemplateobjectImm8)                                       \
119    V(BaselineGettemplateobjectImm16)                                      \
120    V(BaselineGetnextpropnameV8)                                           \
121    V(BaselineSetobjectwithprotoImm8V8)                                    \
122    V(BaselineDelobjpropV8)                                                \
123    V(BaselineSuspendgeneratorV8)                                          \
124    V(BaselineAsyncfunctionawaituncaughtV8)                                \
125    V(BaselineCopydatapropertiesV8)                                        \
126    V(BaselineStarrayspreadV8V8)                                           \
127    V(BaselineSetobjectwithprotoImm16V8)                                   \
128    V(BaselineLdobjbyvalueImm8V8)                                          \
129    V(BaselineLdobjbyvalueImm16V8)                                         \
130    V(BaselineStobjbyvalueImm8V8V8)                                        \
131    V(BaselineStobjbyvalueImm16V8V8)                                       \
132    V(BaselineStownbyvalueImm8V8V8)                                        \
133    V(BaselineStownbyvalueImm16V8V8)                                       \
134    V(BaselineLdsuperbyvalueImm8V8)                                        \
135    V(BaselineLdsuperbyvalueImm16V8)                                       \
136    V(BaselineStsuperbyvalueImm8V8V8)                                      \
137    V(BaselineStsuperbyvalueImm16V8V8)                                     \
138    V(BaselineLdobjbyindexImm8Imm16)                                       \
139    V(BaselineLdobjbyindexImm16Imm16)                                      \
140    V(BaselineStobjbyindexImm8V8Imm16)                                     \
141    V(BaselineStobjbyindexImm16V8Imm16)                                    \
142    V(BaselineStownbyindexImm8V8Imm16)                                     \
143    V(BaselineStownbyindexImm16V8Imm16)                                    \
144    V(BaselineAsyncfunctionresolveV8)                                      \
145    V(BaselineAsyncfunctionrejectV8)                                       \
146    V(BaselineCopyrestargsImm8)                                            \
147    V(BaselineLdlexvarImm4Imm4)                                            \
148    V(BaselineStlexvarImm4Imm4)                                            \
149    V(BaselineGetmodulenamespaceImm8)                                      \
150    V(BaselineStmodulevarImm8)                                             \
151    V(BaselineTryldglobalbynameImm16Id16)                                   \
152    V(BaselineTrystglobalbynameImm8Id16)                                   \
153    V(BaselineTrystglobalbynameImm16Id16)                                  \
154    V(BaselineLdglobalvarImm16Id16)                                        \
155    V(BaselineStglobalvarImm16Id16)                                        \
156    V(BaselineLdobjbynameImm8Id16)                                         \
157    V(BaselineLdobjbynameImm16Id16)                                        \
158    V(BaselineStobjbynameImm8Id16V8)                                       \
159    V(BaselineStobjbynameImm16Id16V8)                                      \
160    V(BaselineStownbynameImm8Id16V8)                                       \
161    V(BaselineStownbynameImm16Id16V8)                                      \
162    V(BaselineLdsuperbynameImm8Id16)                                       \
163    V(BaselineLdsuperbynameImm16Id16)                                      \
164    V(BaselineStsuperbynameImm8Id16V8)                                     \
165    V(BaselineStsuperbynameImm16Id16V8)                                    \
166    V(BaselineLdlocalmodulevarImm8)                                        \
167    V(BaselineStconsttoglobalrecordImm16Id16)                              \
168    V(BaselineStownbyvaluewithnamesetImm8V8V8)                             \
169    V(BaselineStownbyvaluewithnamesetImm16V8V8)                            \
170    V(BaselineStownbynamewithnamesetImm8Id16V8)                            \
171    V(BaselineStownbynamewithnamesetImm16Id16V8)                           \
172    V(BaselineLdbigintId16)                                                \
173    V(BaselineFldaiImm64)                                                  \
174    V(BaselineReturn)                                                      \
175    V(BaselineLdlexvarImm8Imm8)                                            \
176    V(BaselineStlexvarImm8Imm8)                                            \
177    V(BaselineJnstricteqV8Imm16)                                           \
178    V(BaselineAsyncgeneratorrejectV8)                                      \
179    V(BaselineSetgeneratorstateImm8)                                       \
180    V(BaselineGetasynciteratorImm8)                                        \
181    V(BaselineLdPrivatePropertyImm8Imm16Imm16)                             \
182    V(BaselineStPrivatePropertyImm8Imm16Imm16V8)                           \
183    V(BaselineTestInImm8Imm16Imm16)                                        \
184    V(BaselineDeprecatedLdlexenvPrefNone)                                  \
185    V(BaselineWideCreateobjectwithexcludedkeysPrefImm16V8V8)               \
186    V(BaselineThrowPrefNone)                                               \
187    V(BaselineDeprecatedPoplexenvPrefNone)                                 \
188    V(BaselineWideNewobjrangePrefImm16V8)                                  \
189    V(BaselineThrowNotexistsPrefNone)                                      \
190    V(BaselineDeprecatedGetiteratornextPrefV8V8)                           \
191    V(BaselineWideNewlexenvPrefImm16)                                      \
192    V(BaselineThrowPatternnoncoerciblePrefNone)                            \
193    V(BaselineDeprecatedCreatearraywithbufferPrefImm16)                    \
194    V(BaselineWideNewlexenvwithnamePrefImm16Id16)                          \
195    V(BaselineThrowDeletesuperpropertyPrefNone)                            \
196    V(BaselineDeprecatedCreateobjectwithbufferPrefImm16)                   \
197    V(BaselineNewobjrangeImm8Imm8V8)                                       \
198    V(BaselineNewobjrangeImm16Imm8V8)                                      \
199    V(BaselineWideCallrangePrefImm16V8)                                    \
200    V(BaselineThrowConstassignmentPrefV8)                                  \
201    V(BaselineDeprecatedTonumberPrefV8)                                    \
202    V(BaselineWideCallthisrangePrefImm16V8)                                \
203    V(BaselineThrowIfnotobjectPrefV8)                                      \
204    V(BaselineDeprecatedTonumericPrefV8)                                   \
205    V(BaselineWideSupercallthisrangePrefImm16V8)                           \
206    V(BaselineThrowUndefinedifholePrefV8V8)                                \
207    V(BaselineThrowUndefinedifholewithnamePrefId16)                        \
208    V(BaselineDeprecatedNegPrefV8)                                         \
209    V(BaselineWideSupercallarrowrangePrefImm16V8)                          \
210    V(BaselineThrowIfsupernotcorrectcallPrefImm8)                          \
211    V(BaselineDeprecatedNotPrefV8)                                         \
212    V(BaselineWideLdobjbyindexPrefImm32)                                   \
213    V(BaselineThrowIfsupernotcorrectcallPrefImm16)                         \
214    V(BaselineDeprecatedIncPrefV8)                                         \
215    V(BaselineWideStobjbyindexPrefV8Imm32)                                 \
216    V(BaselineDeprecatedDecPrefV8)                                         \
217    V(BaselineWideStownbyindexPrefV8Imm32)                                 \
218    V(BaselineDeprecatedCallarg0PrefV8)                                    \
219    V(BaselineWideCopyrestargsPrefImm16)                                   \
220    V(BaselineDeprecatedCallarg1PrefV8V8)                                  \
221    V(BaselineWideLdlexvarPrefImm16Imm16)                                  \
222    V(BaselineDeprecatedCallargs2PrefV8V8V8)                               \
223    V(BaselineWideStlexvarPrefImm16Imm16)                                  \
224    V(BaselineDeprecatedCallargs3PrefV8V8V8V8)                             \
225    V(BaselineWideGetmodulenamespacePrefImm16)                             \
226    V(BaselineDeprecatedCallrangePrefImm16V8)                              \
227    V(BaselineWideStmodulevarPrefImm16)                                    \
228    V(BaselineDeprecatedCallspreadPrefV8V8V8)                              \
229    V(BaselineWideLdlocalmodulevarPrefImm16)                               \
230    V(BaselineDeprecatedCallthisrangePrefImm16V8)                          \
231    V(BaselineWideLdexternalmodulevarPrefImm16)                            \
232    V(BaselineDeprecatedDefineclasswithbufferPrefId16Imm16Imm16V8V8)       \
233    V(BaselineWideLdpatchvarPrefImm16)                                     \
234    V(BaselineDeprecatedResumegeneratorPrefV8)                             \
235    V(BaselineWideStpatchvarPrefImm16)                                     \
236    V(BaselineDeprecatedGetresumemodePrefV8)                               \
237    V(BaselineDeprecatedGettemplateobjectPrefV8)                           \
238    V(BaselineDeprecatedDelobjpropPrefV8V8)                                \
239    V(BaselineDeprecatedSuspendgeneratorPrefV8V8)                          \
240    V(BaselineDeprecatedAsyncfunctionawaituncaughtPrefV8V8)                \
241    V(BaselineDeprecatedCopydatapropertiesPrefV8V8)                        \
242    V(BaselineDeprecatedSetobjectwithprotoPrefV8V8)                        \
243    V(BaselineDeprecatedLdobjbyvaluePrefV8V8)                              \
244    V(BaselineDeprecatedLdsuperbyvaluePrefV8V8)                            \
245    V(BaselineDeprecatedLdobjbyindexPrefV8Imm32)                           \
246    V(BaselineDeprecatedAsyncfunctionresolvePrefV8V8V8)                    \
247    V(BaselineDeprecatedAsyncfunctionrejectPrefV8V8V8)                     \
248    V(BaselineDeprecatedStlexvarPrefImm4Imm4V8)                            \
249    V(BaselineDeprecatedStlexvarPrefImm8Imm8V8)                            \
250    V(BaselineDeprecatedStlexvarPrefImm16Imm16V8)                          \
251    V(BaselineDeprecatedGetmodulenamespacePrefId32)                        \
252    V(BaselineDeprecatedStmodulevarPrefId32)                               \
253    V(BaselineDeprecatedLdobjbynamePrefId32V8)                             \
254    V(BaselineDeprecatedLdsuperbynamePrefId32V8)                           \
255    V(BaselineDeprecatedLdmodulevarPrefId32Imm8)                           \
256    V(BaselineDeprecatedStconsttoglobalrecordPrefId32)                     \
257    V(BaselineDeprecatedStlettoglobalrecordPrefId32)                       \
258    V(BaselineDeprecatedStclasstoglobalrecordPrefId32)                     \
259    V(BaselineDeprecatedLdhomeobjectPrefNone)                              \
260    V(BaselineDeprecatedCreateobjecthavingmethodPrefImm16)                 \
261    V(BaselineDeprecatedDynamicimportPrefV8)                               \
262    V(BaselineCallRuntimeNotifyConcurrentResultPrefNone)                   \
263    V(BaselineDefineFieldByNameImm8Id16V8)                                 \
264    V(BaselineDefinePropertyByNameImm8Id16V8)                              \
265    V(BaselineCallRuntimeDefineFieldByValuePrefImm8V8V8)                   \
266    V(BaselineCallRuntimeDefineFieldByIndexPrefImm8Imm32V8)                \
267    V(BaselineCallRuntimeToPropertyKeyPrefNone)                            \
268    V(BaselineCallRuntimeCreatePrivatePropertyPrefImm16Id16)               \
269    V(BaselineCallRuntimeDefinePrivatePropertyPrefImm8Imm16Imm16V8)        \
270    V(BaselineCallRuntimeCallInitPrefImm8V8)                               \
271    V(BaselineCallRuntimeDefineSendableClassPrefImm16Id16Id16Imm16V8)      \
272    V(BaselineCallRuntimeLdSendableClassPrefImm16)                         \
273    V(BaselineCallRuntimeIstruePrefImm8)                                   \
274    V(BaselineCallRuntimeIsfalsePrefImm8)                                  \
275    V(BaselineReturnundefined)                                             \
276    V(BaselineExceptionHandler)                                            \
277    V(BaselineUpdateHotness)                                               \
278
279}  // namespace panda::ecmascript::kungfu
280#endif  // ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
281