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