14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License.
54514f5e3Sopenharmony_ci * You may obtain a copy of the License at
64514f5e3Sopenharmony_ci *
74514f5e3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84514f5e3Sopenharmony_ci *
94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and
134514f5e3Sopenharmony_ci * limitations under the License.
144514f5e3Sopenharmony_ci */
154514f5e3Sopenharmony_ci#ifndef ECMASCRIPT_COMPILER_ECMA_OPCODE_DES_H
164514f5e3Sopenharmony_ci#define ECMASCRIPT_COMPILER_ECMA_OPCODE_DES_H
174514f5e3Sopenharmony_ci
184514f5e3Sopenharmony_ci#include <map>
194514f5e3Sopenharmony_ci#include <string>
204514f5e3Sopenharmony_ci#include <vector>
214514f5e3Sopenharmony_ci
224514f5e3Sopenharmony_ci#include "ecmascript/compiler/bytecodes.h"
234514f5e3Sopenharmony_ci
244514f5e3Sopenharmony_cinamespace panda::ecmascript::kungfu {
254514f5e3Sopenharmony_ci
264514f5e3Sopenharmony_ci#define ECMA_OPCODE_LIST(V)                                                \
274514f5e3Sopenharmony_ci    V(LDNAN)  															   \
284514f5e3Sopenharmony_ci    V(LDINFINITY)                                                          \
294514f5e3Sopenharmony_ci    V(LDNEWTARGET)                                                         \
304514f5e3Sopenharmony_ci    V(LDUNDEFINED)                                                         \
314514f5e3Sopenharmony_ci    V(LDNULL)                                                              \
324514f5e3Sopenharmony_ci    V(LDSYMBOL)                                                            \
334514f5e3Sopenharmony_ci    V(LDGLOBAL)                                                            \
344514f5e3Sopenharmony_ci    V(LDTRUE)                                                              \
354514f5e3Sopenharmony_ci    V(LDFALSE)                                                             \
364514f5e3Sopenharmony_ci    V(LDHOLE)                                                              \
374514f5e3Sopenharmony_ci    V(LDTHIS)                                                              \
384514f5e3Sopenharmony_ci    V(POPLEXENV)                                                           \
394514f5e3Sopenharmony_ci    V(GETUNMAPPEDARGS)                                                     \
404514f5e3Sopenharmony_ci    V(ASYNCFUNCTIONENTER)                                                  \
414514f5e3Sopenharmony_ci    V(CREATEASYNCGENERATOROBJ_V8)                                          \
424514f5e3Sopenharmony_ci    V(LDFUNCTION)                                                          \
434514f5e3Sopenharmony_ci    V(DEBUGGER)                                                            \
444514f5e3Sopenharmony_ci    V(GETPROPITERATOR)                                                     \
454514f5e3Sopenharmony_ci    V(GETITERATOR_IMM8)                                                    \
464514f5e3Sopenharmony_ci    V(GETITERATOR_IMM16)                                                   \
474514f5e3Sopenharmony_ci    V(CLOSEITERATOR_IMM8_V8)                                               \
484514f5e3Sopenharmony_ci    V(CLOSEITERATOR_IMM16_V8)                                              \
494514f5e3Sopenharmony_ci    V(ASYNCGENERATORRESOLVE_V8_V8_V8)                                      \
504514f5e3Sopenharmony_ci    V(CREATEEMPTYOBJECT)                                                   \
514514f5e3Sopenharmony_ci    V(CREATEEMPTYARRAY_IMM8)                                               \
524514f5e3Sopenharmony_ci    V(CREATEEMPTYARRAY_IMM16)                                              \
534514f5e3Sopenharmony_ci    V(CREATEGENERATOROBJ_V8)                                               \
544514f5e3Sopenharmony_ci    V(CREATEITERRESULTOBJ_V8_V8)                                           \
554514f5e3Sopenharmony_ci    V(CREATEOBJECTWITHEXCLUDEDKEYS_IMM8_V8_V8)                             \
564514f5e3Sopenharmony_ci    V(CALLTHIS0_IMM8_V8)                                                   \
574514f5e3Sopenharmony_ci    V(CREATEARRAYWITHBUFFER_IMM8_ID16)                                     \
584514f5e3Sopenharmony_ci    V(CREATEARRAYWITHBUFFER_IMM16_ID16)                                    \
594514f5e3Sopenharmony_ci    V(CALLTHIS1_IMM8_V8_V8)                                                \
604514f5e3Sopenharmony_ci    V(CALLTHIS2_IMM8_V8_V8_V8)                                             \
614514f5e3Sopenharmony_ci    V(CREATEOBJECTWITHBUFFER_IMM8_ID16)                                    \
624514f5e3Sopenharmony_ci    V(CREATEOBJECTWITHBUFFER_IMM16_ID16)                                   \
634514f5e3Sopenharmony_ci    V(CREATEREGEXPWITHLITERAL_IMM8_ID16_IMM8)                              \
644514f5e3Sopenharmony_ci    V(CREATEREGEXPWITHLITERAL_IMM16_ID16_IMM8)                             \
654514f5e3Sopenharmony_ci    V(NEWOBJAPPLY_IMM8_V8)                                                 \
664514f5e3Sopenharmony_ci    V(NEWOBJAPPLY_IMM16_V8)                                                \
674514f5e3Sopenharmony_ci    V(NEWOBJRANGE_IMM8_IMM8_V8)                                            \
684514f5e3Sopenharmony_ci    V(NEWOBJRANGE_IMM16_IMM8_V8)                                           \
694514f5e3Sopenharmony_ci    V(WIDE_NEWOBJRANGE_PREF_IMM16_V8)                                      \
704514f5e3Sopenharmony_ci    V(NEWLEXENV_IMM8)                                                      \
714514f5e3Sopenharmony_ci    V(NEWLEXENVWITHNAME_IMM8_ID16)                                         \
724514f5e3Sopenharmony_ci    V(ADD2_IMM8_V8)                                                        \
734514f5e3Sopenharmony_ci    V(SUB2_IMM8_V8)                                                        \
744514f5e3Sopenharmony_ci    V(MUL2_IMM8_V8)                                                        \
754514f5e3Sopenharmony_ci    V(DIV2_IMM8_V8)                                                        \
764514f5e3Sopenharmony_ci    V(MOD2_IMM8_V8)                                                        \
774514f5e3Sopenharmony_ci    V(EQ_IMM8_V8)                                                          \
784514f5e3Sopenharmony_ci    V(NOTEQ_IMM8_V8)                                                       \
794514f5e3Sopenharmony_ci    V(LESS_IMM8_V8)                                                        \
804514f5e3Sopenharmony_ci    V(LESSEQ_IMM8_V8)                                                      \
814514f5e3Sopenharmony_ci    V(GREATER_IMM8_V8)                                                     \
824514f5e3Sopenharmony_ci    V(GREATEREQ_IMM8_V8)                                                   \
834514f5e3Sopenharmony_ci    V(SHL2_IMM8_V8)                                                        \
844514f5e3Sopenharmony_ci    V(SHR2_IMM8_V8)                                                        \
854514f5e3Sopenharmony_ci    V(ASHR2_IMM8_V8)                                                       \
864514f5e3Sopenharmony_ci    V(AND2_IMM8_V8)                                                        \
874514f5e3Sopenharmony_ci    V(OR2_IMM8_V8)                                                         \
884514f5e3Sopenharmony_ci    V(XOR2_IMM8_V8)                                                        \
894514f5e3Sopenharmony_ci    V(EXP_IMM8_V8)                                                         \
904514f5e3Sopenharmony_ci    V(TYPEOF_IMM8)                                                         \
914514f5e3Sopenharmony_ci    V(TYPEOF_IMM16)                                                        \
924514f5e3Sopenharmony_ci    V(TONUMBER_IMM8)                                                       \
934514f5e3Sopenharmony_ci    V(TONUMERIC_IMM8)                                                      \
944514f5e3Sopenharmony_ci    V(NEG_IMM8)                                                            \
954514f5e3Sopenharmony_ci    V(NOT_IMM8)                                                            \
964514f5e3Sopenharmony_ci    V(INC_IMM8)                                                            \
974514f5e3Sopenharmony_ci    V(DEC_IMM8)                                                            \
984514f5e3Sopenharmony_ci    V(ISIN_IMM8_V8)                                                        \
994514f5e3Sopenharmony_ci    V(INSTANCEOF_IMM8_V8)                                                  \
1004514f5e3Sopenharmony_ci    V(STRICTNOTEQ_IMM8_V8)                                                 \
1014514f5e3Sopenharmony_ci    V(STRICTEQ_IMM8_V8)                                                    \
1024514f5e3Sopenharmony_ci    V(ISTRUE)                                                              \
1034514f5e3Sopenharmony_ci    V(ISFALSE)                                                             \
1044514f5e3Sopenharmony_ci    V(CALLTHIS3_IMM8_V8_V8_V8_V8)                                          \
1054514f5e3Sopenharmony_ci    V(CALLTHISRANGE_IMM8_IMM8_V8)                                          \
1064514f5e3Sopenharmony_ci    V(WIDE_SUPERCALLTHISRANGE_PREF_IMM16_V8)                               \
1074514f5e3Sopenharmony_ci    V(SUPERCALLTHISRANGE_IMM8_IMM8_V8)                                     \
1084514f5e3Sopenharmony_ci    V(SUPERCALLARROWRANGE_IMM8_IMM8_V8)                                    \
1094514f5e3Sopenharmony_ci    V(CALLRUNTIME_SUPERCALLFORWARDALLARGS_PREF_V8)                         \
1104514f5e3Sopenharmony_ci    V(DEFINEFUNC_IMM8_ID16_IMM8)                                           \
1114514f5e3Sopenharmony_ci    V(DEFINEFUNC_IMM16_ID16_IMM8)                                          \
1124514f5e3Sopenharmony_ci    V(DEFINEMETHOD_IMM8_ID16_IMM8)                                         \
1134514f5e3Sopenharmony_ci    V(DEFINEMETHOD_IMM16_ID16_IMM8)                                        \
1144514f5e3Sopenharmony_ci    V(CALLARG0_IMM8)                                                       \
1154514f5e3Sopenharmony_ci    V(SUPERCALLSPREAD_IMM8_V8)                                             \
1164514f5e3Sopenharmony_ci    V(APPLY_IMM8_V8_V8)                                                    \
1174514f5e3Sopenharmony_ci    V(CALLARGS2_IMM8_V8_V8)                                                \
1184514f5e3Sopenharmony_ci    V(CALLARGS3_IMM8_V8_V8_V8)                                             \
1194514f5e3Sopenharmony_ci    V(CALLRANGE_IMM8_IMM8_V8)                                              \
1204514f5e3Sopenharmony_ci    V(LDEXTERNALMODULEVAR_IMM8)                                            \
1214514f5e3Sopenharmony_ci    V(LDTHISBYNAME_IMM8_ID16)                                              \
1224514f5e3Sopenharmony_ci    V(LDTHISBYNAME_IMM16_ID16)                                             \
1234514f5e3Sopenharmony_ci    V(LDOBJBYNAME_IMM8_ID16)                                               \
1244514f5e3Sopenharmony_ci    V(LDOBJBYNAME_IMM16_ID16)                                              \
1254514f5e3Sopenharmony_ci    V(DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8)                               \
1264514f5e3Sopenharmony_ci    V(STTHISBYNAME_IMM8_ID16)                                              \
1274514f5e3Sopenharmony_ci    V(STTHISBYNAME_IMM16_ID16)                                             \
1284514f5e3Sopenharmony_ci    V(STOBJBYNAME_IMM8_ID16_V8)                                            \
1294514f5e3Sopenharmony_ci    V(STOBJBYNAME_IMM16_ID16_V8)                                           \
1304514f5e3Sopenharmony_ci    V(DEFINEFIELDBYNAME_IMM8_ID16_V8)                                      \
1314514f5e3Sopenharmony_ci    V(DEFINEPROPERTYBYNAME_IMM8_ID16_V8)                                   \
1324514f5e3Sopenharmony_ci    V(LDTHISBYVALUE_IMM8)                                                  \
1334514f5e3Sopenharmony_ci    V(LDTHISBYVALUE_IMM16)                                                 \
1344514f5e3Sopenharmony_ci    V(LDOBJBYVALUE_IMM8_V8)                                                \
1354514f5e3Sopenharmony_ci    V(LDOBJBYVALUE_IMM16_V8)                                               \
1364514f5e3Sopenharmony_ci    V(STTHISBYVALUE_IMM8_V8)                                               \
1374514f5e3Sopenharmony_ci    V(STTHISBYVALUE_IMM16_V8)                                              \
1384514f5e3Sopenharmony_ci    V(DYNAMICIMPORT)                                                       \
1394514f5e3Sopenharmony_ci    V(DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8)                       \
1404514f5e3Sopenharmony_ci    V(DEFINECLASSWITHBUFFER_IMM16_ID16_ID16_IMM16_V8)                      \
1414514f5e3Sopenharmony_ci    V(RESUMEGENERATOR)                                                     \
1424514f5e3Sopenharmony_ci    V(GETRESUMEMODE)                                                       \
1434514f5e3Sopenharmony_ci    V(GETTEMPLATEOBJECT_IMM8)                                              \
1444514f5e3Sopenharmony_ci    V(GETTEMPLATEOBJECT_IMM16)                                             \
1454514f5e3Sopenharmony_ci    V(GETNEXTPROPNAME_V8)                                                  \
1464514f5e3Sopenharmony_ci    V(JEQZ_IMM8)                                                           \
1474514f5e3Sopenharmony_ci    V(JEQZ_IMM16)                                                          \
1484514f5e3Sopenharmony_ci    V(JEQZ_IMM32)                                                          \
1494514f5e3Sopenharmony_ci    V(SETOBJECTWITHPROTO_IMM8_V8)                                          \
1504514f5e3Sopenharmony_ci    V(DELOBJPROP_V8)                                                       \
1514514f5e3Sopenharmony_ci    V(SUSPENDGENERATOR_V8)                                                 \
1524514f5e3Sopenharmony_ci    V(ASYNCFUNCTIONAWAITUNCAUGHT_V8)                                       \
1534514f5e3Sopenharmony_ci    V(COPYDATAPROPERTIES_V8)                                               \
1544514f5e3Sopenharmony_ci    V(STARRAYSPREAD_V8_V8)                                                 \
1554514f5e3Sopenharmony_ci    V(SETOBJECTWITHPROTO_IMM16_V8)                                         \
1564514f5e3Sopenharmony_ci    V(STOBJBYVALUE_IMM8_V8_V8)                                             \
1574514f5e3Sopenharmony_ci    V(STOBJBYVALUE_IMM16_V8_V8)                                            \
1584514f5e3Sopenharmony_ci    V(STOWNBYVALUE_IMM8_V8_V8)                                             \
1594514f5e3Sopenharmony_ci    V(STOWNBYVALUE_IMM16_V8_V8)                                            \
1604514f5e3Sopenharmony_ci    V(LDSUPERBYVALUE_IMM8_V8)                                              \
1614514f5e3Sopenharmony_ci    V(LDSUPERBYVALUE_IMM16_V8)                                             \
1624514f5e3Sopenharmony_ci    V(STSUPERBYVALUE_IMM8_V8_V8)                                           \
1634514f5e3Sopenharmony_ci    V(STSUPERBYVALUE_IMM16_V8_V8)                                          \
1644514f5e3Sopenharmony_ci    V(LDOBJBYINDEX_IMM8_IMM16)                                             \
1654514f5e3Sopenharmony_ci    V(LDOBJBYINDEX_IMM16_IMM16)                                            \
1664514f5e3Sopenharmony_ci    V(WIDE_LDOBJBYINDEX_PREF_IMM32)                                        \
1674514f5e3Sopenharmony_ci    V(STOBJBYINDEX_IMM8_V8_IMM16)                                          \
1684514f5e3Sopenharmony_ci    V(STOBJBYINDEX_IMM16_V8_IMM16)                                         \
1694514f5e3Sopenharmony_ci    V(WIDE_STOBJBYINDEX_PREF_V8_IMM32)                                     \
1704514f5e3Sopenharmony_ci    V(STOWNBYINDEX_IMM8_V8_IMM16)                                          \
1714514f5e3Sopenharmony_ci    V(STOWNBYINDEX_IMM16_V8_IMM16)                                         \
1724514f5e3Sopenharmony_ci    V(ASYNCFUNCTIONRESOLVE_V8)                                             \
1734514f5e3Sopenharmony_ci    V(ASYNCFUNCTIONREJECT_V8)                                              \
1744514f5e3Sopenharmony_ci    V(COPYRESTARGS_IMM8)                                                   \
1754514f5e3Sopenharmony_ci    V(LDLEXVAR_IMM4_IMM4)                                                  \
1764514f5e3Sopenharmony_ci    V(STLEXVAR_IMM4_IMM4)                                                  \
1774514f5e3Sopenharmony_ci    V(GETMODULENAMESPACE_IMM8)                                             \
1784514f5e3Sopenharmony_ci    V(STMODULEVAR_IMM8)                                                    \
1794514f5e3Sopenharmony_ci    V(TRYLDGLOBALBYNAME_IMM8_ID16)                                         \
1804514f5e3Sopenharmony_ci    V(TRYLDGLOBALBYNAME_IMM16_ID16)                                        \
1814514f5e3Sopenharmony_ci    V(TRYSTGLOBALBYNAME_IMM8_ID16)                                         \
1824514f5e3Sopenharmony_ci    V(TRYSTGLOBALBYNAME_IMM16_ID16)                                        \
1834514f5e3Sopenharmony_ci    V(LDGLOBALVAR_IMM16_ID16)                                              \
1844514f5e3Sopenharmony_ci    V(STGLOBALVAR_IMM16_ID16)                                              \
1854514f5e3Sopenharmony_ci    V(STOWNBYNAME_IMM8_ID16_V8)                                            \
1864514f5e3Sopenharmony_ci    V(STOWNBYNAME_IMM16_ID16_V8)                                           \
1874514f5e3Sopenharmony_ci    V(LDSUPERBYNAME_IMM8_ID16)                                             \
1884514f5e3Sopenharmony_ci    V(LDSUPERBYNAME_IMM16_ID16)                                            \
1894514f5e3Sopenharmony_ci    V(STSUPERBYNAME_IMM8_ID16_V8)                                          \
1904514f5e3Sopenharmony_ci    V(STSUPERBYNAME_IMM16_ID16_V8)                                         \
1914514f5e3Sopenharmony_ci    V(LDLOCALMODULEVAR_IMM8)                                               \
1924514f5e3Sopenharmony_ci    V(STCONSTTOGLOBALRECORD_IMM16_ID16)                                    \
1934514f5e3Sopenharmony_ci    V(STTOGLOBALRECORD_IMM16_ID16)                                         \
1944514f5e3Sopenharmony_ci    V(JNEZ_IMM8)                                                           \
1954514f5e3Sopenharmony_ci    V(JNEZ_IMM16)                                                          \
1964514f5e3Sopenharmony_ci    V(JNEZ_IMM32)                                                          \
1974514f5e3Sopenharmony_ci    V(STOWNBYVALUEWITHNAMESET_IMM8_V8_V8)                                  \
1984514f5e3Sopenharmony_ci    V(STOWNBYVALUEWITHNAMESET_IMM16_V8_V8)                                 \
1994514f5e3Sopenharmony_ci    V(STOWNBYNAMEWITHNAMESET_IMM8_ID16_V8)                                 \
2004514f5e3Sopenharmony_ci    V(STOWNBYNAMEWITHNAMESET_IMM16_ID16_V8)                                \
2014514f5e3Sopenharmony_ci    V(LDBIGINT_ID16)                                                       \
2024514f5e3Sopenharmony_ci    V(LDA_STR_ID16)                                                        \
2034514f5e3Sopenharmony_ci    V(JMP_IMM8)                                                            \
2044514f5e3Sopenharmony_ci    V(JMP_IMM16)                                                           \
2054514f5e3Sopenharmony_ci    V(JMP_IMM32)                                                           \
2064514f5e3Sopenharmony_ci    V(JSTRICTEQZ_IMM8)                                                     \
2074514f5e3Sopenharmony_ci    V(JSTRICTEQZ_IMM16)                                                    \
2084514f5e3Sopenharmony_ci    V(JNSTRICTEQZ_IMM8)                                                    \
2094514f5e3Sopenharmony_ci    V(JNSTRICTEQZ_IMM16)                                                   \
2104514f5e3Sopenharmony_ci    V(JEQNULL_IMM8)                                                        \
2114514f5e3Sopenharmony_ci    V(JEQNULL_IMM16)                                                       \
2124514f5e3Sopenharmony_ci    V(LDA_V8)                                                              \
2134514f5e3Sopenharmony_ci    V(STA_V8)                                                              \
2144514f5e3Sopenharmony_ci    V(LDAI_IMM32)                                                          \
2154514f5e3Sopenharmony_ci    V(FLDAI_IMM64)                                                         \
2164514f5e3Sopenharmony_ci    V(RETURN)                                                              \
2174514f5e3Sopenharmony_ci    V(RETURNUNDEFINED)                                                     \
2184514f5e3Sopenharmony_ci    V(LDLEXVAR_IMM8_IMM8)                                                  \
2194514f5e3Sopenharmony_ci    V(JNENULL_IMM8)                                                        \
2204514f5e3Sopenharmony_ci    V(STLEXVAR_IMM8_IMM8)                                                  \
2214514f5e3Sopenharmony_ci    V(JNENULL_IMM16)                                                       \
2224514f5e3Sopenharmony_ci    V(CALLARG1_IMM8_V8)                                                    \
2234514f5e3Sopenharmony_ci    V(JSTRICTEQNULL_IMM8)                                                  \
2244514f5e3Sopenharmony_ci    V(JSTRICTEQNULL_IMM16)                                                 \
2254514f5e3Sopenharmony_ci    V(JNSTRICTEQNULL_IMM8)                                                 \
2264514f5e3Sopenharmony_ci    V(JNSTRICTEQNULL_IMM16)                                                \
2274514f5e3Sopenharmony_ci    V(JEQUNDEFINED_IMM8)                                                   \
2284514f5e3Sopenharmony_ci    V(JEQUNDEFINED_IMM16)                                                  \
2294514f5e3Sopenharmony_ci    V(JNEUNDEFINED_IMM8)                                                   \
2304514f5e3Sopenharmony_ci    V(JNEUNDEFINED_IMM16)                                                  \
2314514f5e3Sopenharmony_ci    V(JSTRICTEQUNDEFINED_IMM8)                                             \
2324514f5e3Sopenharmony_ci    V(JSTRICTEQUNDEFINED_IMM16)                                            \
2334514f5e3Sopenharmony_ci    V(JNSTRICTEQUNDEFINED_IMM8)                                            \
2344514f5e3Sopenharmony_ci    V(JNSTRICTEQUNDEFINED_IMM16)                                           \
2354514f5e3Sopenharmony_ci    V(JEQ_V8_IMM8)                                                         \
2364514f5e3Sopenharmony_ci    V(JEQ_V8_IMM16)                                                        \
2374514f5e3Sopenharmony_ci    V(JNE_V8_IMM8)                                                         \
2384514f5e3Sopenharmony_ci    V(JNE_V8_IMM16)                                                        \
2394514f5e3Sopenharmony_ci    V(JSTRICTEQ_V8_IMM8)                                                   \
2404514f5e3Sopenharmony_ci    V(JSTRICTEQ_V8_IMM16)                                                  \
2414514f5e3Sopenharmony_ci    V(JNSTRICTEQ_V8_IMM8)                                                  \
2424514f5e3Sopenharmony_ci    V(JNSTRICTEQ_V8_IMM16)                                                 \
2434514f5e3Sopenharmony_ci    V(MOV_V4_V4)                                                           \
2444514f5e3Sopenharmony_ci    V(MOV_V8_V8)                                                           \
2454514f5e3Sopenharmony_ci    V(MOV_V16_V16)                                                         \
2464514f5e3Sopenharmony_ci    V(ASYNCGENERATORREJECT_V8)                                             \
2474514f5e3Sopenharmony_ci    V(NOP)                                                                 \
2484514f5e3Sopenharmony_ci    V(SETGENERATORSTATE_IMM8)                                              \
2494514f5e3Sopenharmony_ci    V(GETASYNCITERATOR_IMM8)                                               \
2504514f5e3Sopenharmony_ci    V(LDPRIVATEPROPERTY_IMM8_IMM16_IMM16)                                  \
2514514f5e3Sopenharmony_ci    V(STPRIVATEPROPERTY_IMM8_IMM16_IMM16_V8)                               \
2524514f5e3Sopenharmony_ci    V(TESTIN_IMM8_IMM16_IMM16)                                             \
2534514f5e3Sopenharmony_ci    V(DEPRECATED_LDLEXENV_PREF_NONE)                                       \
2544514f5e3Sopenharmony_ci    V(WIDE_CREATEOBJECTWITHEXCLUDEDKEYS_PREF_IMM16_V8_V8)                  \
2554514f5e3Sopenharmony_ci    V(THROW_PREF_NONE)                                                     \
2564514f5e3Sopenharmony_ci    V(DEPRECATED_POPLEXENV_PREF_NONE)                                      \
2574514f5e3Sopenharmony_ci    V(THROW_NOTEXISTS_PREF_NONE)                                           \
2584514f5e3Sopenharmony_ci    V(DEPRECATED_GETITERATORNEXT_PREF_V8_V8)                               \
2594514f5e3Sopenharmony_ci    V(WIDE_NEWLEXENV_PREF_IMM16)                                           \
2604514f5e3Sopenharmony_ci    V(THROW_PATTERNNONCOERCIBLE_PREF_NONE)                                 \
2614514f5e3Sopenharmony_ci    V(DEPRECATED_CREATEARRAYWITHBUFFER_PREF_IMM16)                         \
2624514f5e3Sopenharmony_ci    V(WIDE_NEWLEXENVWITHNAME_PREF_IMM16_ID16)                              \
2634514f5e3Sopenharmony_ci    V(THROW_DELETESUPERPROPERTY_PREF_NONE)                                 \
2644514f5e3Sopenharmony_ci    V(DEPRECATED_CREATEOBJECTWITHBUFFER_PREF_IMM16)                        \
2654514f5e3Sopenharmony_ci    V(WIDE_CALLRANGE_PREF_IMM16_V8)                                        \
2664514f5e3Sopenharmony_ci    V(THROW_CONSTASSIGNMENT_PREF_V8)                                       \
2674514f5e3Sopenharmony_ci    V(DEPRECATED_TONUMBER_PREF_V8)                                         \
2684514f5e3Sopenharmony_ci    V(WIDE_CALLTHISRANGE_PREF_IMM16_V8)                                    \
2694514f5e3Sopenharmony_ci    V(THROW_IFNOTOBJECT_PREF_V8)                                           \
2704514f5e3Sopenharmony_ci    V(DEPRECATED_TONUMERIC_PREF_V8)                                        \
2714514f5e3Sopenharmony_ci    V(THROW_UNDEFINEDIFHOLE_PREF_V8_V8)                                    \
2724514f5e3Sopenharmony_ci    V(THROW_UNDEFINEDIFHOLEWITHNAME_PREF_ID16)                             \
2734514f5e3Sopenharmony_ci    V(DEPRECATED_NEG_PREF_V8)                                              \
2744514f5e3Sopenharmony_ci    V(WIDE_SUPERCALLARROWRANGE_PREF_IMM16_V8)                              \
2754514f5e3Sopenharmony_ci    V(THROW_IFSUPERNOTCORRECTCALL_PREF_IMM8)                               \
2764514f5e3Sopenharmony_ci    V(DEPRECATED_NOT_PREF_V8)                                              \
2774514f5e3Sopenharmony_ci    V(THROW_IFSUPERNOTCORRECTCALL_PREF_IMM16)                              \
2784514f5e3Sopenharmony_ci    V(DEPRECATED_INC_PREF_V8)                                              \
2794514f5e3Sopenharmony_ci    V(DEPRECATED_DEC_PREF_V8)                                              \
2804514f5e3Sopenharmony_ci    V(WIDE_STOWNBYINDEX_PREF_V8_IMM32)                                     \
2814514f5e3Sopenharmony_ci    V(DEPRECATED_CALLARG0_PREF_V8)                                         \
2824514f5e3Sopenharmony_ci    V(WIDE_COPYRESTARGS_PREF_IMM16)                                        \
2834514f5e3Sopenharmony_ci    V(DEPRECATED_CALLARG1_PREF_V8_V8)                                      \
2844514f5e3Sopenharmony_ci    V(WIDE_LDLEXVAR_PREF_IMM16_IMM16)                                      \
2854514f5e3Sopenharmony_ci    V(DEPRECATED_CALLARGS2_PREF_V8_V8_V8)                                  \
2864514f5e3Sopenharmony_ci    V(WIDE_STLEXVAR_PREF_IMM16_IMM16)                                      \
2874514f5e3Sopenharmony_ci    V(DEPRECATED_CALLARGS3_PREF_V8_V8_V8_V8)                               \
2884514f5e3Sopenharmony_ci    V(WIDE_GETMODULENAMESPACE_PREF_IMM16)                                  \
2894514f5e3Sopenharmony_ci    V(DEPRECATED_CALLRANGE_PREF_IMM16_V8)                                  \
2904514f5e3Sopenharmony_ci    V(WIDE_STMODULEVAR_PREF_IMM16)                                         \
2914514f5e3Sopenharmony_ci    V(DEPRECATED_CALLSPREAD_PREF_V8_V8_V8)                                 \
2924514f5e3Sopenharmony_ci    V(WIDE_LDLOCALMODULEVAR_PREF_IMM16)                                    \
2934514f5e3Sopenharmony_ci    V(DEPRECATED_CALLTHISRANGE_PREF_IMM16_V8)                              \
2944514f5e3Sopenharmony_ci    V(WIDE_LDEXTERNALMODULEVAR_PREF_IMM16)                                 \
2954514f5e3Sopenharmony_ci    V(DEPRECATED_DEFINECLASSWITHBUFFER_PREF_ID16_IMM16_IMM16_V8_V8)        \
2964514f5e3Sopenharmony_ci    V(WIDE_LDPATCHVAR_PREF_IMM16)                                          \
2974514f5e3Sopenharmony_ci    V(DEPRECATED_RESUMEGENERATOR_PREF_V8)                                  \
2984514f5e3Sopenharmony_ci    V(WIDE_STPATCHVAR_PREF_IMM16)                                          \
2994514f5e3Sopenharmony_ci    V(DEPRECATED_GETRESUMEMODE_PREF_V8)                                    \
3004514f5e3Sopenharmony_ci    V(DEPRECATED_GETTEMPLATEOBJECT_PREF_V8)                                \
3014514f5e3Sopenharmony_ci    V(DEPRECATED_DELOBJPROP_PREF_V8_V8)                                    \
3024514f5e3Sopenharmony_ci    V(DEPRECATED_SUSPENDGENERATOR_PREF_V8_V8)                              \
3034514f5e3Sopenharmony_ci    V(DEPRECATED_ASYNCFUNCTIONAWAITUNCAUGHT_PREF_V8_V8)                    \
3044514f5e3Sopenharmony_ci    V(DEPRECATED_COPYDATAPROPERTIES_PREF_V8_V8)                            \
3054514f5e3Sopenharmony_ci    V(DEPRECATED_SETOBJECTWITHPROTO_PREF_V8_V8)                            \
3064514f5e3Sopenharmony_ci    V(DEPRECATED_LDOBJBYVALUE_PREF_V8_V8)                                  \
3074514f5e3Sopenharmony_ci    V(DEPRECATED_LDSUPERBYVALUE_PREF_V8_V8)                                \
3084514f5e3Sopenharmony_ci    V(DEPRECATED_LDOBJBYINDEX_PREF_V8_IMM32)                               \
3094514f5e3Sopenharmony_ci    V(DEPRECATED_ASYNCFUNCTIONRESOLVE_PREF_V8_V8_V8)                       \
3104514f5e3Sopenharmony_ci    V(DEPRECATED_ASYNCFUNCTIONREJECT_PREF_V8_V8_V8)                        \
3114514f5e3Sopenharmony_ci    V(DEPRECATED_STLEXVAR_PREF_IMM4_IMM4_V8)                               \
3124514f5e3Sopenharmony_ci    V(DEPRECATED_STLEXVAR_PREF_IMM8_IMM8_V8)                               \
3134514f5e3Sopenharmony_ci    V(DEPRECATED_STLEXVAR_PREF_IMM16_IMM16_V8)                             \
3144514f5e3Sopenharmony_ci    V(DEPRECATED_GETMODULENAMESPACE_PREF_ID32)                             \
3154514f5e3Sopenharmony_ci    V(DEPRECATED_STMODULEVAR_PREF_ID32)                                    \
3164514f5e3Sopenharmony_ci    V(DEPRECATED_LDOBJBYNAME_PREF_ID32_V8)                                 \
3174514f5e3Sopenharmony_ci    V(DEPRECATED_LDSUPERBYNAME_PREF_ID32_V8)                               \
3184514f5e3Sopenharmony_ci    V(DEPRECATED_LDMODULEVAR_PREF_ID32_IMM8)                               \
3194514f5e3Sopenharmony_ci    V(DEPRECATED_STCONSTTOGLOBALRECORD_PREF_ID32)                          \
3204514f5e3Sopenharmony_ci    V(DEPRECATED_STLETTOGLOBALRECORD_PREF_ID32)                            \
3214514f5e3Sopenharmony_ci    V(DEPRECATED_STCLASSTOGLOBALRECORD_PREF_ID32)                          \
3224514f5e3Sopenharmony_ci    V(DEPRECATED_LDHOMEOBJECT_PREF_NONE)                                   \
3234514f5e3Sopenharmony_ci    V(DEPRECATED_CREATEOBJECTHAVINGMETHOD_PREF_IMM16)                      \
3244514f5e3Sopenharmony_ci    V(DEPRECATED_DYNAMICIMPORT_PREF_V8)                                    \
3254514f5e3Sopenharmony_ci    V(CALLRUNTIME_NOTIFYCONCURRENTRESULT_PREF_NONE)                        \
3264514f5e3Sopenharmony_ci    V(CALLRUNTIME_DEFINEFIELDBYVALUE_PREF_IMM8_V8_V8)                      \
3274514f5e3Sopenharmony_ci    V(CALLRUNTIME_DEFINEFIELDBYINDEX_PREF_IMM8_IMM32_V8)                   \
3284514f5e3Sopenharmony_ci    V(CALLRUNTIME_TOPROPERTYKEY_PREF_NONE)                                 \
3294514f5e3Sopenharmony_ci    V(CALLRUNTIME_CREATEPRIVATEPROPERTY_PREF_IMM16_ID16)                   \
3304514f5e3Sopenharmony_ci    V(CALLRUNTIME_DEFINEPRIVATEPROPERTY_PREF_IMM8_IMM16_IMM16_V8)          \
3314514f5e3Sopenharmony_ci    V(CALLRUNTIME_CALLINIT_PREF_IMM8_V8)                                   \
3324514f5e3Sopenharmony_ci    V(CALLRUNTIME_DEFINESENDABLECLASS_PREF_IMM16_ID16_ID16_IMM16_V8)       \
3334514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDSENDABLECLASS_PREF_IMM16)                              \
3344514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDSENDABLEEXTERNALMODULEVAR_PREF_IMM8)                   \
3354514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDELDSENDABLEEXTERNALMODULEVAR_PREF_IMM16)              \
3364514f5e3Sopenharmony_ci    V(CALLRUNTIME_NEWSENDABLEENV_PREF_IMM8)                                \
3374514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDENEWSENDABLEENV_PREF_IMM16)                           \
3384514f5e3Sopenharmony_ci    V(CALLRUNTIME_STSENDABLEVAR_PREF_IMM4_IMM4)                            \
3394514f5e3Sopenharmony_ci    V(CALLRUNTIME_STSENDABLEVAR_PREF_IMM8_IMM8)                            \
3404514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDESTSENDABLEVAR_PREF_IMM16_IMM16)                      \
3414514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDSENDABLEVAR_PREF_IMM4_IMM4)                            \
3424514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDSENDABLEVAR_PREF_IMM8_IMM8)                            \
3434514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDELDSENDABLEVAR_PREF_IMM16_IMM16)                      \
3444514f5e3Sopenharmony_ci    V(CALLRUNTIME_ISTRUE_PREF_IMM8)                                        \
3454514f5e3Sopenharmony_ci    V(CALLRUNTIME_ISFALSE_PREF_IMM8)                                       \
3464514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDLAZYMODULEVAR_PREF_IMM8)                               \
3474514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDELDLAZYMODULEVAR_PREF_IMM16)                          \
3484514f5e3Sopenharmony_ci    V(CALLRUNTIME_LDLAZYSENDABLEMODULEVAR_PREF_IMM8)                       \
3494514f5e3Sopenharmony_ci    V(CALLRUNTIME_WIDELDLAZYSENDABLEMODULEVAR_PREF_IMM16)                  \
3504514f5e3Sopenharmony_ci
3514514f5e3Sopenharmony_ciinline std::string GetEcmaOpcodeStr(EcmaOpcode opcode)
3524514f5e3Sopenharmony_ci{
3534514f5e3Sopenharmony_ci    const std::map<EcmaOpcode, const char *> strMap = {
3544514f5e3Sopenharmony_ci#define BYTECODE_NAME_MAP(name) { EcmaOpcode::name, #name },
3554514f5e3Sopenharmony_ci        ECMA_OPCODE_LIST(BYTECODE_NAME_MAP)
3564514f5e3Sopenharmony_ci#undef BYTECODE_NAME_MAP
3574514f5e3Sopenharmony_ci    };
3584514f5e3Sopenharmony_ci    if (strMap.count(opcode) > 0) {
3594514f5e3Sopenharmony_ci        return strMap.at(opcode);
3604514f5e3Sopenharmony_ci    }
3614514f5e3Sopenharmony_ci    return "bytecode-" + std::to_string(static_cast<uint16_t>(opcode));
3624514f5e3Sopenharmony_ci}
3634514f5e3Sopenharmony_ci
3644514f5e3Sopenharmony_ciinline std::vector<EcmaOpcode> GetEcmaCodeListForRange()
3654514f5e3Sopenharmony_ci{
3664514f5e3Sopenharmony_ci    std::vector<EcmaOpcode> lorwingOpCodeList = {
3674514f5e3Sopenharmony_ci#define BYTECODE_NAME_VECTOR(name) EcmaOpcode::name,
3684514f5e3Sopenharmony_ci        ECMA_OPCODE_LIST(BYTECODE_NAME_VECTOR)
3694514f5e3Sopenharmony_ci#undef BYTECODE_NAME_VECTOR
3704514f5e3Sopenharmony_ci    };
3714514f5e3Sopenharmony_ci    return lorwingOpCodeList;
3724514f5e3Sopenharmony_ci}
3734514f5e3Sopenharmony_ci
3744514f5e3Sopenharmony_ciinline std::string GetHelpForEcmaCodeListForRange()
3754514f5e3Sopenharmony_ci{
3764514f5e3Sopenharmony_ci    int32_t i = 0;
3774514f5e3Sopenharmony_ci    std::vector<EcmaOpcode> lorwingOpCodeList = GetEcmaCodeListForRange();
3784514f5e3Sopenharmony_ci    std::string optBCRangeStr;
3794514f5e3Sopenharmony_ci    optBCRangeStr.append(" bytecode for list: \n");
3804514f5e3Sopenharmony_ci    for (auto ecmaOpCode : lorwingOpCodeList) {
3814514f5e3Sopenharmony_ci        optBCRangeStr.append(" index:" + std::to_string(i) + "     ecmaOpCode:" + GetEcmaOpcodeStr(ecmaOpCode) + "\n");
3824514f5e3Sopenharmony_ci        i++;
3834514f5e3Sopenharmony_ci    }
3844514f5e3Sopenharmony_ci    return optBCRangeStr;
3854514f5e3Sopenharmony_ci}
3864514f5e3Sopenharmony_ci}  // namespace panda::ecmascript::kungfu
3874514f5e3Sopenharmony_ci#endif  // ECMASCRIPT_COMPILER_ECMA_OPCODE_DES_H_
388