InterpreterHandler.inl 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. // Default all macro to nothing
  6. #ifndef DEF2
  7. #define DEF2(process, op, func)
  8. #endif
  9. #ifndef DEF3
  10. #define DEF3(process, op, func, y)
  11. #endif
  12. #ifndef DEF2_WMS
  13. #define DEF2_WMS(process, op, func)
  14. #endif
  15. #ifndef DEF3_WMS
  16. #define DEF3_WMS(process, op, func, y)
  17. #endif
  18. #ifndef DEF4_WMS
  19. #define DEF4_WMS(process, op, func, y, t)
  20. #endif
  21. #ifndef EXDEF2
  22. #define EXDEF2(process, op, func)
  23. #endif
  24. #ifndef EXDEF3
  25. #define EXDEF3(process, op, func, y)
  26. #endif
  27. #ifndef EXDEF2_WMS
  28. #define EXDEF2_WMS(process, op, func)
  29. #endif
  30. #ifndef EXDEF3_WMS
  31. #define EXDEF3_WMS(process, op, func, y)
  32. #endif
  33. #ifndef EXDEF4_WMS
  34. #define EXDEF4_WMS(process, op, func, y, t)
  35. #endif
  36. #if defined(INTERPRETER_ASMJS)
  37. #include "InterpreterHandlerAsmJs.inl"
  38. #else
  39. DEF2 (FALLTHROUGH, EndSwitch, /* Common case with Br */)
  40. DEF2 (BR, Br, OP_Br)
  41. #ifdef BYTECODE_BRANCH_ISLAND
  42. EXDEF2 (BRLONG, BrLong, OP_Br)
  43. #endif
  44. DEF3 (CUSTOM, StartCall, OP_StartCall, StartCall)
  45. DEF2 (NOP, Nop, Empty)
  46. DEF2_WMS(NOP, Unused, Reg1)
  47. DEF2_WMS(IP_TARG, ProfiledLoopStart, OP_ProfiledLoopStart)
  48. DEF2_WMS(FALLTHROUGH, LoopBodyStart, /* Common case with ProfiledLoopBodyStart */)
  49. DEF2_WMS(IP_TARG, ProfiledLoopBodyStart, OP_ProfiledLoopBodyStart)
  50. DEF2_WMS(IP_TARG, ProfiledLoopEnd, OP_ProfiledLoopEnd)
  51. DEF2_WMS(BRCMem, BrEq_A, JavascriptOperators::Equal)
  52. DEF2_WMS(BRCMem, BrGt_A, JavascriptOperators::Greater)
  53. DEF2_WMS(BRCMem, BrGe_A, JavascriptOperators::GreaterEqual)
  54. DEF2_WMS(BRCMem, BrLt_A, JavascriptOperators::Less)
  55. DEF2_WMS(BRCMem, BrLe_A, JavascriptOperators::LessEqual)
  56. DEF2_WMS(BRCMem, BrNeq_A, JavascriptOperators::NotEqual)
  57. DEF2_WMS(BRBMem_ALLOW_STACK, BrFalse_A, OP_BrFalse_A)
  58. DEF2_WMS(BRBMem_ALLOW_STACK, BrTrue_A, OP_BrTrue_A)
  59. DEF2_WMS(BRB_ALLOW_STACK, BrOnObject_A, JavascriptOperators::IsObject)
  60. DEF2_WMS(BRB, BrNotNull_A, OP_BrNotNull_A)
  61. //Not emitted for byte code, keep it here for completeness
  62. //EXDEF2_WMS(BRB, BrUndecl_A, OP_BrUndecl_A)
  63. EXDEF2_WMS(BRB, BrNotUndecl_A, OP_BrNotUndecl_A)
  64. DEF2_WMS(FALLTHROUGH, Case, /* Common case with BrSrEq_A */)
  65. DEF2_WMS(BRCMem, BrSrEq_A, JavascriptOperators::StrictEqual)
  66. DEF2_WMS(BRCMem, BrSrNeq_A, JavascriptOperators::NotStrictEqual)
  67. //Not emitted for byte code, keep it here for completeness
  68. //DEF2 (BRS, BrHasSideEffects, JavascriptOperators::OP_BrHasSideEffects)
  69. DEF2 (BRS, BrNotHasSideEffects, JavascriptOperators::OP_BrNotHasSideEffects)
  70. EXDEF2 (BRPROP, BrOnHasProperty, OP_BrOnHasProperty)
  71. DEF2 (BRPROP, BrOnNoProperty, OP_BrOnNoProperty)
  72. DEF2 (BRLOCALPROP, BrOnNoLocalProperty, OP_BrOnNoProperty)
  73. DEF2 (BRENVPROP, BrOnNoEnvProperty, OP_BrOnNoEnvProperty)
  74. DEF2_WMS(BRBS, BrFncNeqApply, JavascriptOperators::OP_BrFncNeqApply)
  75. //Not emitted for byte code, keep it here for completeness
  76. //DEF2_WMS(BRBS, BrFncEqApply, JavascriptOperators::OP_BrFncEqApply)
  77. DEF3_WMS(CALL, CallI, OP_CallI, CallI)
  78. DEF3_WMS(CALL, CallIFlags, OP_CallIFlags, CallIFlags)
  79. DEF3_WMS(CALL, CallIExtended, OP_CallIExtended, CallIExtended)
  80. DEF3_WMS(CALL, CallIExtendedFlags, OP_CallIExtendedFlags, CallIExtendedFlags)
  81. DEF3_WMS(CALL, ProfiledCallI, PROFILEDOP(OP_ProfiledCallI, OP_CallI), ProfiledCallI)
  82. DEF3_WMS(CALL, ProfiledCallIFlags, PROFILEDOP(OP_ProfiledCallIFlags, OP_CallIFlags), ProfiledCallIFlags)
  83. DEF3_WMS(CALL, ProfiledCallIExtended, PROFILEDOP(OP_ProfiledCallIExtended, OP_CallIExtended), ProfiledCallIExtended)
  84. DEF3_WMS(CALL, ProfiledCallIExtendedFlags, PROFILEDOP(OP_ProfiledCallIExtendedFlags, OP_CallIExtendedFlags), ProfiledCallIExtendedFlags)
  85. DEF3_WMS(CALL, ProfiledCallIWithICIndex, PROFILEDOP(OP_ProfiledCallIWithICIndex, OP_CallI), ProfiledCallIWithICIndex)
  86. DEF3_WMS(CALL, ProfiledCallIFlagsWithICIndex, PROFILEDOP(OP_ProfiledCallIFlagsWithICIndex, OP_CallIFlags), ProfiledCallIFlagsWithICIndex)
  87. DEF3_WMS(CALL, ProfiledCallIExtendedWithICIndex, PROFILEDOP(OP_ProfiledCallIExtendedWithICIndex, OP_CallIExtended), ProfiledCallIExtendedWithICIndex)
  88. DEF3_WMS(CALL, ProfiledCallIExtendedFlagsWithICIndex, PROFILEDOP(OP_ProfiledCallIExtendedFlagsWithICIndex, OP_CallIExtendedFlags), ProfiledCallIExtendedFlagsWithICIndex)
  89. DEF3_WMS(CALL, ProfiledReturnTypeCallI, PROFILEDOP(OP_ProfiledReturnTypeCallI, OP_CallI), ProfiledCallI)
  90. DEF3_WMS(CALL, ProfiledReturnTypeCallIFlags, PROFILEDOP(OP_ProfiledReturnTypeCallIFlags, OP_CallIFlags), ProfiledCallIFlags)
  91. DEF3_WMS(CALL, ProfiledReturnTypeCallIExtended, PROFILEDOP(OP_ProfiledReturnTypeCallIExtended, OP_CallIExtended), ProfiledCallIExtended)
  92. DEF3_WMS(CALL, ProfiledReturnTypeCallIExtendedFlags, PROFILEDOP(OP_ProfiledReturnTypeCallIExtendedFlags, OP_CallIExtendedFlags), ProfiledCallIExtendedFlags)
  93. EXDEF2_WMS(A1toA1Mem, Conv_Str, JavascriptConversion::ToString)
  94. EXDEF2_WMS(A1toA1Mem, Conv_Prop, JavascriptOperators::OP_ToPropertyKey)
  95. DEF2_WMS(A1toA1Mem, Conv_Obj, JavascriptOperators::ToObject)
  96. EXDEF2_WMS(A1toA1Mem, NewUnscopablesWrapperObject,JavascriptOperators::ToUnscopablesWrapperObject)
  97. DEF2_WMS(A1toA1Mem, Conv_Num, JavascriptOperators::ToNumber)
  98. DEF2_WMS(A1toA1Mem, Incr_A, JavascriptMath::Increment)
  99. DEF2_WMS(A1toA1Mem, Decr_A, JavascriptMath::Decrement)
  100. DEF2_WMS(A1toA1Mem, Neg_A, JavascriptMath::Negate)
  101. DEF2_WMS(A1toA1Mem, Not_A, JavascriptMath::Not)
  102. DEF2_WMS(A1toA1Mem, Typeof, JavascriptOperators::Typeof)
  103. DEF2_WMS(A1toA1Mem, Delete_A, JavascriptOperators::Delete)
  104. DEF2_WMS(GET_ELEM_IMem, TypeofElem, JavascriptOperators::TypeofElem)
  105. DEF2_WMS(A3toA1Mem, Concat3, JavascriptOperators::Concat3)
  106. DEF2_WMS(A2I1toA1Mem, NewConcatStrMulti, JavascriptOperators::NewConcatStrMulti)
  107. DEF2_WMS(A2I1toXXMem, SetConcatStrMultiItem, JavascriptOperators::SetConcatStrMultiItem)
  108. DEF2_WMS(A3I1toXXMem, SetConcatStrMultiItem2, JavascriptOperators::SetConcatStrMultiItem2)
  109. DEF2_WMS(A2toA1Mem, Add_A, JavascriptMath::Add)
  110. DEF2_WMS(A2toA1Mem, Div_A, JavascriptMath::Divide)
  111. DEF2_WMS(A2toA1MemProfiled, ProfiledDiv_A, PROFILEDOP(ProfiledDivide<true>, ProfiledDivide<false>))
  112. DEF2_WMS(A2toA1Mem, Mul_A, JavascriptMath::Multiply)
  113. DEF2_WMS(A2toA1Mem, Expo_A, JavascriptMath::Exponentiation)
  114. DEF2_WMS(A2toA1Mem, Rem_A, JavascriptMath::Modulus)
  115. DEF2_WMS(A2toA1MemProfiled, ProfiledRem_A, PROFILEDOP(ProfileModulus<true>, ProfileModulus<false>))
  116. DEF2_WMS(A2toA1Mem, Sub_A, JavascriptMath::Subtract)
  117. DEF2_WMS(A2toA1Mem, And_A, JavascriptMath::And)
  118. DEF2_WMS(A2toA1Mem, Or_A, JavascriptMath::Or)
  119. DEF2_WMS(A2toA1Mem, Xor_A, JavascriptMath::Xor)
  120. DEF2_WMS(A2toA1Mem, Shl_A, JavascriptMath::ShiftLeft)
  121. DEF2_WMS(A2toA1Mem, Shr_A, JavascriptMath::ShiftRight)
  122. DEF2_WMS(A2toA1Mem, ShrU_A, JavascriptMath::ShiftRightU)
  123. DEF2_WMS(CMMem, CmEq_A, JavascriptOperators::Equal)
  124. DEF2_WMS(CMMem, CmGt_A, JavascriptOperators::Greater)
  125. DEF2_WMS(CMMem, CmGe_A, JavascriptOperators::GreaterEqual)
  126. DEF2_WMS(CMMem, CmLt_A, JavascriptOperators::Less)
  127. DEF2_WMS(CMMem, CmLe_A, JavascriptOperators::LessEqual)
  128. DEF2_WMS(CMMem, CmNeq_A, JavascriptOperators::NotEqual)
  129. DEF2_WMS(CMMem, CmSrEq_A, JavascriptOperators::StrictEqual)
  130. DEF2_WMS(CMMem, CmSrNeq_A, JavascriptOperators::NotStrictEqual)
  131. DEF2_WMS(FALLTHROUGH, BeginSwitch, /* Common case with Ld_A */)
  132. DEF2_WMS(A1toA1_ALLOW_STACK, Ld_A, OP_Ld_A)
  133. DEF2_WMS(INNERtoA1, LdInnerScope, OP_Ld_A)
  134. DEF2_WMS(XXtoA1, LdLocalObj, OP_LdLocalObj)
  135. EXDEF2_WMS(XXtoA1, LdParamObj, OP_LdParamObj)
  136. EXDEF2_WMS(A1toA1_ALLOW_STACK, UnwrapWithObj, JavascriptOperators::OP_UnwrapWithObj)
  137. EXDEF2_WMS(A2toXX, SetComputedNameVar, JavascriptOperators::OP_SetComputedNameVar)
  138. DEF2_WMS(A1toXX_ALLOW_STACK, ChkUndecl, OP_ChkUndecl)
  139. DEF2_WMS(XXtoA1, InitUndecl, OP_InitUndecl)
  140. DEF2_WMS(ELEM_RtU_to_XX, EnsureNoRootFld, OP_EnsureNoRootProperty)
  141. DEF2_WMS(ELEM_RtU_to_XX, EnsureNoRootRedeclFld, OP_EnsureNoRootRedeclProperty)
  142. DEF2_WMS(ELEM_C2_to_XX, ScopedEnsureNoRedeclFld, OP_ScopedEnsureNoRedeclProperty)
  143. DEF2_WMS(A1toA1Profiled, ProfiledBeginSwitch, PROFILEDOP(ProfiledSwitch<true>, ProfiledSwitch<false>))
  144. DEF2_WMS(XXtoA1Mem, LdC_A_Null, JavascriptOperators::OP_LdNull)
  145. DEF2_WMS(XXtoA1, ArgIn0, OP_ArgIn0)
  146. DEF2_WMS(CUSTOM_ArgNoSrc, ArgOut_Env, OP_ArgOut_Env)
  147. #if DBG
  148. DEF2_WMS(CUSTOM_L_Arg, ArgOut_ANonVar, OP_ArgOut_ANonVar)
  149. #else
  150. DEF2_WMS(FALLTHROUGH, ArgOut_ANonVar, /* Common case with ArgOUt_A in fre build */)
  151. #endif
  152. DEF2_WMS(CUSTOM_L_Arg, ArgOut_A, OP_ArgOut_A)
  153. DEF3_WMS(CUSTOM_L_Arg2, ProfiledArgOut_A, PROFILEDOP(OP_ProfiledArgOut_A, OP_ArgOut_A), ProfiledArg)
  154. DEF3_WMS(CUSTOM_L_Value, LdFld, OP_GetProperty, ElementCP)
  155. DEF3_WMS(CUSTOM_L_Value, LdLocalFld, OP_GetLocalProperty, ElementP)
  156. EXDEF3_WMS(CUSTOM_L_Value, LdSuperFld, OP_GetSuperProperty, ElementC2)
  157. DEF3_WMS(CUSTOM_L_Value, LdFldForTypeOf, OP_GetPropertyForTypeOf, ElementCP)
  158. EXDEF3_WMS(CUSTOM_L_Value, LdRootFldForTypeOf, OP_GetRootPropertyForTypeOf, ElementRootCP)
  159. DEF3_WMS(CUSTOM_L_Value, LdFldForCallApplyTarget, OP_GetProperty, ElementCP)
  160. DEF3_WMS(CUSTOM_L_Value, ProfiledLdFld, PROFILEDOP(OP_ProfiledGetProperty, OP_GetProperty), ElementCP)
  161. DEF3_WMS(CUSTOM_L_Value, ProfiledLdLocalFld, PROFILEDOP(OP_ProfiledGetLocalProperty, OP_GetLocalProperty), ElementP)
  162. EXDEF3_WMS(CUSTOM_L_Value, ProfiledLdSuperFld, PROFILEDOP(OP_ProfiledGetSuperProperty, OP_GetSuperProperty), ElementC2)
  163. DEF3_WMS(CUSTOM_L_Value, ProfiledLdFldForTypeOf, PROFILEDOP(OP_ProfiledGetPropertyForTypeOf, OP_GetPropertyForTypeOf), ElementCP)
  164. EXDEF3_WMS(CUSTOM_L_Value, ProfiledLdRootFldForTypeOf, PROFILEDOP(OP_ProfiledGetRootPropertyForTypeOf, OP_GetRootPropertyForTypeOf), ElementRootCP)
  165. DEF3_WMS(CUSTOM_L_Value, ProfiledLdFldForCallApplyTarget,PROFILEDOP(OP_ProfiledGetPropertyCallApplyTarget, OP_GetProperty), ElementCP)
  166. DEF3_WMS(CUSTOM_L_Value, LdRootFld, OP_GetRootProperty, ElementRootCP)
  167. DEF3_WMS(CUSTOM_L_Value, ProfiledLdRootFld, PROFILEDOP(OP_ProfiledGetRootProperty, OP_GetRootProperty), ElementRootCP)
  168. DEF3_WMS(CUSTOM_L_Value, LdMethodFld, OP_GetMethodProperty, ElementCP)
  169. DEF3_WMS(CUSTOM_L_Value, ProfiledLdMethodFld, PROFILEDOP(OP_ProfiledGetMethodProperty, OP_GetMethodProperty), ElementCP)
  170. EXDEF3_WMS(CUSTOM_L_Value, LdLocalMethodFld, OP_GetLocalMethodProperty, ElementP)
  171. EXDEF3_WMS(CUSTOM_L_Value, ProfiledLdLocalMethodFld, PROFILEDOP(OP_ProfiledGetLocalMethodProperty, OP_GetLocalMethodProperty), ElementP)
  172. DEF3_WMS(CUSTOM_L_Value, LdRootMethodFld, OP_GetRootMethodProperty, ElementRootCP)
  173. DEF3_WMS(CUSTOM_L_Value, ProfiledLdRootMethodFld, PROFILEDOP(OP_ProfiledGetRootMethodProperty, OP_GetRootMethodProperty), ElementRootCP)
  174. DEF3_WMS(CUSTOM_L_Value, DeleteFld, OP_DeleteFld, ElementC)
  175. EXDEF3_WMS(CUSTOM_L_Value, DeleteLocalFld, OP_DeleteLocalFld, ElementU)
  176. DEF3_WMS(CUSTOM_L_Value, DeleteRootFld, OP_DeleteRootFld, ElementC)
  177. DEF3_WMS(CUSTOM_L_Value, DeleteFldStrict, OP_DeleteFldStrict, ElementC)
  178. DEF3_WMS(CUSTOM_L_Value, DeleteRootFldStrict, OP_DeleteRootFldStrict, ElementC)
  179. DEF3_WMS(CUSTOM, StFld, OP_SetProperty, ElementCP)
  180. DEF3_WMS(CUSTOM, StLocalFld, OP_SetLocalProperty, ElementP)
  181. EXDEF3_WMS(CUSTOM_L_Value, StSuperFld, OP_SetSuperProperty, ElementC2)
  182. DEF3_WMS(CUSTOM, ProfiledStFld, PROFILEDOP(OP_ProfiledSetProperty, OP_SetProperty), ElementCP)
  183. DEF3_WMS(CUSTOM, ProfiledStLocalFld, PROFILEDOP(OP_ProfiledSetLocalProperty, OP_SetLocalProperty), ElementP)
  184. EXDEF3_WMS(CUSTOM_L_Value, ProfiledStSuperFld, PROFILEDOP(OP_ProfiledSetSuperProperty, OP_SetSuperProperty), ElementC2)
  185. DEF3_WMS(CUSTOM, StRootFld, OP_SetRootProperty, ElementRootCP)
  186. DEF3_WMS(CUSTOM, ProfiledStRootFld, PROFILEDOP(OP_ProfiledSetRootProperty, OP_SetRootProperty), ElementRootCP)
  187. DEF3_WMS(CUSTOM, StFldStrict, OP_SetPropertyStrict, ElementCP)
  188. DEF3_WMS(CUSTOM, ProfiledStFldStrict, PROFILEDOP(OP_ProfiledSetPropertyStrict, OP_SetPropertyStrict), ElementCP)
  189. DEF3_WMS(CUSTOM, StRootFldStrict, OP_SetRootPropertyStrict, ElementRootCP)
  190. DEF3_WMS(CUSTOM, ProfiledStRootFldStrict, PROFILEDOP(OP_ProfiledSetRootPropertyStrict, OP_SetRootPropertyStrict), ElementRootCP)
  191. DEF3_WMS(CUSTOM, InitFld, OP_InitProperty, ElementCP)
  192. DEF3_WMS(CUSTOM, ProfiledInitFld, PROFILEDOP(OP_ProfiledInitProperty, OP_InitProperty), ElementCP)
  193. DEF3_WMS(CUSTOM, InitLocalFld, OP_InitLocalProperty, ElementP)
  194. DEF3_WMS(CUSTOM, ProfiledInitLocalFld, PROFILEDOP(OP_ProfiledInitLocalProperty, OP_InitLocalProperty), ElementP)
  195. DEF3_WMS(CUSTOM, InitRootFld, OP_InitRootProperty, ElementRootCP)
  196. DEF3_WMS(CUSTOM, ProfiledInitRootFld, PROFILEDOP(OP_ProfiledInitRootProperty, OP_InitRootProperty), ElementRootCP)
  197. DEF3_WMS(CUSTOM, InitUndeclLetFld, OP_InitUndeclLetProperty, ElementPIndexed)
  198. EXDEF3_WMS(CUSTOM, InitUndeclLocalLetFld, OP_InitUndeclLocalLetProperty, ElementP)
  199. EXDEF3_WMS(CUSTOM, InitUndeclConstFld, OP_InitUndeclConstProperty, ElementPIndexed)
  200. EXDEF3_WMS(CUSTOM, InitUndeclLocalConstFld, OP_InitUndeclLocalConstProperty, ElementP)
  201. DEF3_WMS(CUSTOM, InitLetFld, OP_InitLetFld, ElementCP)
  202. EXDEF3_WMS(CUSTOM, InitLocalLetFld, OP_InitLocalLetFld, ElementP)
  203. EXDEF3_WMS(CUSTOM, InitInnerFld, OP_InitInnerFld, ElementPIndexed)
  204. EXDEF3_WMS(CUSTOM, InitInnerLetFld, OP_InitInnerLetFld, ElementPIndexed)
  205. DEF3_WMS(CUSTOM, InitRootLetFld, OP_InitRootLetFld, ElementRootCP)
  206. DEF3_WMS(CUSTOM, InitConstFld, OP_InitConstFld, ElementCP)
  207. DEF3_WMS(CUSTOM, InitRootConstFld, OP_InitRootConstFld, ElementRootCP)
  208. DEF2_WMS(ELEM_RtU_to_XX, InitUndeclRootLetFld, OP_InitUndeclRootLetProperty)
  209. DEF2_WMS(ELEM_RtU_to_XX, InitUndeclRootConstFld, OP_InitUndeclRootConstProperty)
  210. EXDEF3_WMS(CUSTOM, InitUndeclConsoleLetFld, OP_InitUndeclConsoleLetProperty, ElementScopedU)
  211. EXDEF3_WMS(CUSTOM, InitUndeclConsoleConstFld, OP_InitUndeclConsoleConstProperty, ElementScopedU)
  212. DEF3_WMS(CUSTOM, InitClassMember, OP_InitClassMember, ElementCP)
  213. EXDEF3_WMS(CUSTOM, InitClassMemberComputedName,OP_InitClassMemberComputedName, ElementI)
  214. EXDEF3_WMS(CUSTOM, InitClassMemberSet, OP_InitClassMemberSet, ElementC)
  215. EXDEF3_WMS(CUSTOM, InitClassMemberGetComputedName, OP_InitClassMemberGetComputedName, ElementI)
  216. EXDEF3_WMS(CUSTOM, InitClassMemberGet, OP_InitClassMemberGet, ElementC)
  217. EXDEF3_WMS(CUSTOM, InitClassMemberSetComputedName, OP_InitClassMemberSetComputedName, ElementI)
  218. EXDEF2_WMS(BRB, BrOnClassConstructor, OP_BrOnClassConstructor)
  219. EXDEF2_WMS(BRB, BrOnBaseConstructorKind, OP_BrOnBaseConstructorKind)
  220. DEF3_WMS(GET_ELEM_LOCALSLOTNonVar,LdLocalSlot, OP_LdSlot, ElementSlotI1)
  221. EXDEF3_WMS(GET_ELEM_PARAMSLOTNonVar,LdParamSlot, OP_LdSlot, ElementSlotI1)
  222. DEF3_WMS(GET_ELEM_INNERSLOTNonVar,LdInnerSlot, OP_LdInnerSlot, ElementSlotI2)
  223. EXDEF3_WMS(GET_ELEM_INNERSLOTNonVar,LdInnerObjSlot, OP_LdInnerObjSlot, ElementSlotI2)
  224. DEF3_WMS(GET_ELEM_ENVSLOTNonVar, LdEnvSlot, OP_LdEnvSlot, ElementSlotI2)
  225. DEF3_WMS(GET_ELEM_ENVSLOTNonVar, LdEnvObj, OP_LdEnvObj, ElementSlotI1)
  226. EXDEF3_WMS(GET_ELEM_ENVSLOTNonVar, LdEnvObjSlot, OP_LdEnvObjSlot, ElementSlotI2)
  227. EXDEF3_WMS(GET_ELEM_ENVSLOTNonVar, LdModuleSlot, OP_LdModuleSlot, ElementSlotI2)
  228. EXDEF2_WMS(SET_ELEM_ENVSLOTNonVar, StModuleSlot, OP_StModuleSlot)
  229. DEF3_WMS(GET_ELEM_SLOTNonVar, ProfiledLdSlot, PROFILEDOP(OP_ProfiledLdSlot, OP_LdSlot), ProfiledElementSlot)
  230. DEF3_WMS(GET_ELEM_INNERSLOTNonVar,ProfiledLdInnerSlot, PROFILEDOP(OP_ProfiledLdInnerSlot, OP_LdInnerSlot), ProfiledElementSlotI2)
  231. EXDEF3_WMS(GET_ELEM_INNERSLOTNonVar,ProfiledLdInnerObjSlot, PROFILEDOP(OP_ProfiledLdInnerObjSlot, OP_LdInnerObjSlot), ProfiledElementSlotI2)
  232. DEF3_WMS(GET_ELEM_LOCALSLOTNonVar,ProfiledLdLocalSlot, PROFILEDOP(OP_ProfiledLdSlot, OP_LdSlot), ProfiledElementSlotI1)
  233. EXDEF3_WMS(GET_ELEM_PARAMSLOTNonVar,ProfiledLdParamSlot, PROFILEDOP(OP_ProfiledLdSlot, OP_LdSlot), ProfiledElementSlotI1)
  234. DEF3_WMS(GET_ELEM_ENVSLOTNonVar, ProfiledLdEnvSlot, PROFILEDOP(OP_ProfiledLdEnvSlot, OP_LdEnvSlot), ProfiledElementSlotI2)
  235. EXDEF3_WMS(GET_ELEM_ENVSLOTNonVar, ProfiledLdEnvObjSlot, PROFILEDOP(OP_ProfiledLdEnvObjSlot, OP_LdEnvObjSlot), ProfiledElementSlotI2)
  236. EXDEF3_WMS(GET_ELEM_SLOTNonVar, LdObjSlot, OP_LdObjSlot, ElementSlot)
  237. EXDEF3_WMS(GET_ELEM_SLOTNonVar, ProfiledLdObjSlot, PROFILEDOP(OP_ProfiledLdObjSlot, OP_LdObjSlot), ProfiledElementSlot)
  238. EXDEF3_WMS(GET_ELEM_LOCALSLOTNonVar,LdLocalObjSlot, OP_LdObjSlot, ElementSlotI1)
  239. EXDEF3_WMS(GET_ELEM_PARAMSLOTNonVar,LdParamObjSlot, OP_LdObjSlot, ElementSlotI1)
  240. EXDEF3_WMS(GET_ELEM_LOCALSLOTNonVar,ProfiledLdLocalObjSlot, PROFILEDOP(OP_ProfiledLdObjSlot, OP_LdObjSlot), ProfiledElementSlotI1)
  241. EXDEF3_WMS(GET_ELEM_PARAMSLOTNonVar,ProfiledLdParamObjSlot, PROFILEDOP(OP_ProfiledLdObjSlot, OP_LdObjSlot), ProfiledElementSlotI1)
  242. DEF2_WMS(SET_ELEM_LOCALSLOTNonVar,StLocalSlot, OP_StSlot)
  243. EXDEF2_WMS(SET_ELEM_PARAMSLOTNonVar,StParamSlot, OP_StSlot)
  244. EXDEF2_WMS(SET_ELEM_LOCALSLOTNonVar,StLocalSlotChkUndecl, OP_StSlotChkUndecl)
  245. EXDEF2_WMS(SET_ELEM_PARAMSLOTNonVar,StParamSlotChkUndecl, OP_StSlotChkUndecl)
  246. DEF2_WMS(SET_ELEM_INNERSLOTNonVar,StInnerSlot, OP_StSlot)
  247. EXDEF2_WMS(SET_ELEM_INNERSLOTNonVar,StInnerSlotChkUndecl, OP_StSlotChkUndecl)
  248. EXDEF2_WMS(SET_ELEM_INNERSLOTNonVar,StInnerObjSlot, OP_StObjSlot)
  249. EXDEF2_WMS(SET_ELEM_INNERSLOTNonVar,StInnerObjSlotChkUndecl, OP_StObjSlotChkUndecl)
  250. DEF2_WMS(SET_ELEM_ENVSLOTNonVar, StEnvSlot, OP_StEnvSlot)
  251. EXDEF2_WMS(SET_ELEM_ENVSLOTNonVar, StEnvSlotChkUndecl, OP_StEnvSlotChkUndecl)
  252. EXDEF2_WMS(SET_ELEM_SLOTNonVar, StObjSlot, OP_StObjSlot)
  253. EXDEF2_WMS(SET_ELEM_LOCALSLOTNonVar,StLocalObjSlot, OP_StObjSlot)
  254. EXDEF2_WMS(SET_ELEM_PARAMSLOTNonVar,StParamObjSlot, OP_StObjSlot)
  255. EXDEF2_WMS(SET_ELEM_LOCALSLOTNonVar,StLocalObjSlotChkUndecl, OP_StObjSlotChkUndecl)
  256. EXDEF2_WMS(SET_ELEM_PARAMSLOTNonVar,StParamObjSlotChkUndecl, OP_StObjSlotChkUndecl)
  257. EXDEF2_WMS(SET_ELEM_ENVSLOTNonVar, StEnvObjSlot, OP_StEnvObjSlot)
  258. EXDEF2_WMS(SET_ELEM_SLOTNonVar, StObjSlotChkUndecl, OP_StObjSlotChkUndecl)
  259. EXDEF2_WMS(SET_ELEM_ENVSLOTNonVar, StEnvObjSlotChkUndecl, OP_StEnvObjSlotChkUndecl)
  260. DEF3_WMS(CUSTOM_L_Value, LdElemI_A, OP_GetElementI, ElementI)
  261. DEF3_WMS(CUSTOM_L_Value, ProfiledLdElemI_A, PROFILEDOP(OP_ProfiledGetElementI, OP_GetElementI), ProfiledElementI)
  262. DEF2_WMS(GET_ELEM_IMem, LdMethodElem, JavascriptOperators::OP_GetMethodElement)
  263. DEF3_WMS(CUSTOM, StElemI_A, OP_SetElementI, ElementI)
  264. DEF3_WMS(CUSTOM, StElemI_A_Strict, OP_SetElementIStrict, ElementI)
  265. DEF3_WMS(CUSTOM_L_Value, ProfiledStElemI_A, PROFILEDOP(OP_ProfiledSetElementI, OP_SetElementI), ProfiledElementI)
  266. DEF3_WMS(CUSTOM_L_Value, ProfiledStElemI_A_Strict, PROFILEDOP(OP_ProfiledSetElementIStrict, OP_SetElementIStrict), ProfiledElementI)
  267. DEF3_WMS(CUSTOM, StArrItemI_CI4, OP_SetArrayItemI_CI4, ElementUnsigned1)
  268. DEF2_WMS(FALLTHROUGH, StArrInlineItem_CI4, /*Common case with StArrItemC_CI4 */)
  269. DEF3_WMS(CUSTOM, StArrItemC_CI4, OP_SetArrayItemC_CI4, ElementUnsigned1)
  270. DEF3_WMS(CUSTOM_L_R0, LdArrHead, OP_LdArrayHeadSegment, Reg2)
  271. DEF3_WMS(CUSTOM, StArrSegItem_CI4, OP_SetArraySegmentItem_CI4, ElementUnsigned1)
  272. DEF3 (CUSTOM, StArrSegItem_A, OP_SetArraySegmentVars, Auxiliary)
  273. DEF3_WMS(CALL, NewScObject, OP_NewScObject, CallI)
  274. DEF3_WMS(CUSTOM_L_R0, NewScObjectNoCtorFull, OP_NewScObjectNoCtorFull, Reg2)
  275. EXDEF2_WMS(A1toA1Mem, LdCustomSpreadIteratorList, JavascriptOperators::OP_LdCustomSpreadIteratorList)
  276. EXDEF3_WMS(CALL, NewScObjectSpread, OP_NewScObjectSpread, CallIExtended)
  277. DEF3_WMS(CALL, NewScObjArray, OP_NewScObjArray, CallI)
  278. DEF3_WMS(CALL, NewScObjArraySpread, OP_NewScObjArraySpread, CallIExtended)
  279. DEF3_WMS(CALL, ProfiledNewScObject, PROFILEDOP(OP_ProfiledNewScObject, OP_NewScObject), ProfiledCallI)
  280. EXDEF3_WMS(CALL, ProfiledNewScObjectSpread, PROFILEDOP(OP_ProfiledNewScObjectSpread, OP_NewScObjectSpread), ProfiledCallIExtended)
  281. DEF3_WMS(CALL, ProfiledNewScObjectWithICIndex, PROFILEDOP(OP_ProfiledNewScObjectWithICIndex, OP_NewScObject), ProfiledCallIWithICIndex)
  282. DEF3_WMS(CALL, ProfiledNewScObjArray, PROFILEDOP(OP_ProfiledNewScObjArray, OP_ProfiledNewScObjArray_NoProfile), Profiled2CallI)
  283. DEF3_WMS(CALL, ProfiledNewScObjArraySpread,PROFILEDOP(OP_ProfiledNewScObjArraySpread, OP_ProfiledNewScObjArraySpread_NoProfile), Profiled2CallIExtended)
  284. DEF2_WMS(XXtoA1NonVar, LdArgCnt, OP_LdArgCnt)
  285. DEF3_WMS(CUSTOM_L_Value, LdLen_A, OP_LdLen, ElementCP)
  286. DEF3_WMS(CUSTOM_L_Value, ProfiledLdLen_A, PROFILEDOP(OP_ProfiledLdLen, OP_LdLen), ProfiledElementCP)
  287. DEF2_WMS(XXtoA1Mem, LdUndef, JavascriptOperators::OP_LdUndef)
  288. DEF2_WMS(XXtoA1Mem, LdNaN, JavascriptOperators::OP_LdNaN)
  289. DEF2_WMS(XXtoA1Mem, LdInfinity, JavascriptOperators::OP_LdInfinity)
  290. DEF2_WMS(XXtoA1Mem, LdTrue, JavascriptBoolean::OP_LdTrue)
  291. DEF2_WMS(XXtoA1Mem, LdFalse, JavascriptBoolean::OP_LdFalse)
  292. EXDEF2_WMS(XXtoA1Mem, LdChakraLib, JavascriptOperators::OP_LdChakraLib)
  293. DEF2_WMS(A1I1toA1Mem, LdThis, JavascriptOperators::OP_GetThisNoFastPath)
  294. EXDEF2_WMS(XXtoA1Mem, LdHomeObj, OP_LdHomeObj)
  295. EXDEF2_WMS(XXtoA1Mem, LdFuncObj, OP_LdFuncObj)
  296. EXDEF2_WMS(A1toA1Mem, LdHomeObjProto, JavascriptOperators::OP_LdHomeObjProto)
  297. EXDEF2_WMS(A1toA1Mem, LdFuncObjProto, JavascriptOperators::OP_LdFuncObjProto)
  298. EXDEF2_WMS(A1toA1Mem, ImportCall, OP_ImportCall)
  299. DEF2_WMS(A1toA1Mem, StrictLdThis, JavascriptOperators::OP_StrictGetThis)
  300. DEF2_WMS(A1I1toA1Mem, ProfiledLdThis, PROFILEDOP(OP_ProfiledLdThis, JavascriptOperators::OP_GetThisNoFastPath))
  301. DEF2_WMS(A1toA1Mem, ProfiledStrictLdThis, PROFILEDOP(OP_ProfiledStrictLdThis, JavascriptOperators::OP_StrictGetThis))
  302. DEF2_WMS(XXtoA1Mem, LdHeapArgsCached, OP_LdHeapArgsCached)
  303. EXDEF2_WMS(XXtoA1Mem, LdLetHeapArgsCached, OP_LdLetHeapArgsCached)
  304. EXDEF2_WMS(XXtoA1NonVar, LdStackArgPtr, OP_LdStackArgPtr)
  305. EXDEF3_WMS(CUSTOM, InitSetFld, OP_InitSetFld, ElementC)
  306. EXDEF3_WMS(CUSTOM, InitGetFld, OP_InitGetFld, ElementC)
  307. EXDEF3_WMS(CUSTOM, InitSetElemI, OP_InitSetElemI, ElementI)
  308. EXDEF3_WMS(CUSTOM, InitGetElemI, OP_InitGetElemI, ElementI)
  309. EXDEF3_WMS(CUSTOM, InitComputedProperty, OP_InitComputedProperty, ElementI)
  310. EXDEF3_WMS(CUSTOM, InitProto, OP_InitProto, ElementC)
  311. DEF3_WMS(CUSTOM, LdElemUndefScoped, OP_LdElementUndefinedScoped, ElementScopedU)
  312. DEF3_WMS(CUSTOM_L_R0, LdFuncExpr, OP_LdFunctionExpression, Reg1)
  313. DEF3_WMS(CUSTOM, StFuncExpr, OP_StFunctionExpression, ElementC)
  314. DEF3_WMS(CUSTOM, StLocalFuncExpr, OP_StLocalFunctionExpression, ElementU)
  315. EXDEF3_WMS(CUSTOM_L_R0, LdNewTarget, OP_LdNewTarget, Reg1)
  316. EXDEF2 (EMPTY, ChkNewCallFlag, OP_ChkNewCallFlag)
  317. DEF2_WMS(U1toINNERMemNonVar, NewBlockScope, JavascriptOperators::OP_NewBlockScope)
  318. DEF3_WMS(CUSTOM, CloneBlockScope, OP_CloneBlockScope, Unsigned1)
  319. DEF2_WMS(U1toINNERMemNonVar, NewPseudoScope, JavascriptOperators::OP_NewPseudoScope)
  320. DEF3_WMS(CUSTOM_L_Value, NewStackScFunc, OP_NewStackScFunc, ElementSlotI1)
  321. DEF2_WMS(GET_SLOT_FB, NewScFunc, ScriptFunction::OP_NewScFunc)
  322. DEF2_WMS(GET_SLOT_FB, NewScGenFunc, JavascriptGeneratorFunction::OP_NewScGenFunc)
  323. EXDEF3_WMS(CUSTOM_L_Value, NewInnerStackScFunc, OP_NewInnerStackScFunc, ElementSlot)
  324. EXDEF2_WMS(GET_ELEM_SLOT_FB, NewInnerScFunc, ScriptFunction::OP_NewScFunc)
  325. EXDEF2_WMS(GET_ELEM_SLOT_FB, NewInnerScGenFunc, JavascriptGeneratorFunction::OP_NewScGenFunc)
  326. DEF2_WMS(GET_SLOT_FB_HMO, NewScFuncHomeObj, ScriptFunction::OP_NewScFuncHomeObj)
  327. EXDEF2_WMS(GET_SLOT_FB_HMO, NewScGenFuncHomeObj, JavascriptGeneratorFunction::OP_NewScGenFuncHomeObj)
  328. EXDEF2_WMS(GET_ELEM_SLOT_FB_HMO, NewInnerScFuncHomeObj, ScriptFunction::OP_NewScFuncHomeObj)
  329. EXDEF2_WMS(GET_ELEM_SLOT_FB_HMO, NewInnerScGenFuncHomeObj, JavascriptGeneratorFunction::OP_NewScGenFuncHomeObj)
  330. DEF2_WMS(A1U1toXX, InitForInEnumerator, OP_InitForInEnumerator)
  331. DEF2_WMS(A1U1toXXWithCache, ProfiledInitForInEnumerator,OP_InitForInEnumeratorWithCache)
  332. DEF2_WMS(A1toXXMem, Throw, JavascriptExceptionOperators::OP_Throw)
  333. DEF2_WMS(XXtoA1NonVar, LdArgumentsFromFrame, OP_LdArgumentsFromFrame)
  334. DEF2_WMS(XXtoA1Mem, LdHeapArguments, OP_LdHeapArguments)
  335. DEF2_WMS(XXtoA1Mem, LdLetHeapArguments, OP_LdLetHeapArguments)
  336. DEF2_WMS(A2toA1MemNonVar, LdInnerFrameDisplay, OP_LdInnerFrameDisplay)
  337. DEF2_WMS(A1toA1MemNonVar, LdInnerFrameDisplayNoParent,OP_LdInnerFrameDisplayNoParent)
  338. DEF2_WMS(A1INNERtoA1MemNonVar, LdIndexedFrameDisplay, OP_LdFrameDisplay)
  339. DEF2_WMS(XXINNERtoA1MemNonVar, LdIndexedFrameDisplayNoParent,OP_LdFrameDisplayNoParent<true>)
  340. DEF2_WMS(A2toXXMemNonVar, LdFuncExprFrameDisplay, OP_LdFuncExprFrameDisplaySetLocal)
  341. DEF3_WMS(CUSTOM_L_R0, IsInst, OP_IsInst, Reg3C)
  342. DEF2_WMS(A2toA1Mem, IsIn, JavascriptOperators::IsIn)
  343. DEF2_WMS(A2toA1MemProfiled, ProfiledIsIn, PROFILEDOP(ProfiledIsIn<true>, ProfiledIsIn<false>))
  344. DEF3_WMS(CUSTOM_L_Value, ScopedLdFld, OP_GetPropertyScoped, ElementP)
  345. EXDEF3_WMS(CUSTOM_L_Value, ScopedLdFldForTypeOf, OP_GetPropertyForTypeOfScoped, ElementP)
  346. DEF3_WMS(CUSTOM_L_Value, ScopedLdMethodFld, OP_GetMethodPropertyScoped, ElementCP)
  347. DEF3_WMS(CUSTOM, ScopedStFld, OP_SetPropertyScoped, ElementP)
  348. EXDEF3_WMS(CUSTOM, ConsoleScopedStFld, OP_ConsoleSetPropertyScoped, ElementP)
  349. DEF3_WMS(CUSTOM, ScopedStFldStrict, OP_SetPropertyScopedStrict, ElementP)
  350. EXDEF3_WMS(CUSTOM, ConsoleScopedStFldStrict, OP_ConsoleSetPropertyScopedStrict, ElementP)
  351. DEF2_WMS(GET_ELEM_IMem, DeleteElemI_A, JavascriptOperators::OP_DeleteElementI)
  352. DEF2_WMS(GET_ELEM_IMem_Strict, DeleteElemIStrict_A, JavascriptOperators::OP_DeleteElementI)
  353. DEF3_WMS(CUSTOM_L_Value, ScopedLdInst, OP_ScopedLdInst, ElementScopedC2)
  354. DEF3_WMS(CUSTOM, ScopedInitFunc, OP_ScopedInitFunc, ElementScopedC)
  355. DEF3_WMS(CUSTOM_L_Value, ScopedDeleteFld, OP_ScopedDeleteFld, ElementScopedC)
  356. DEF3_WMS(CUSTOM_L_Value, ScopedDeleteFldStrict, OP_ScopedDeleteFldStrict, ElementScopedC)
  357. DEF3_WMS(CUSTOM, LdElemUndef, OP_LdElementUndefined, ElementU)
  358. EXDEF3_WMS(CUSTOM, LdLocalElemUndef, OP_LdLocalElementUndefined, ElementRootU)
  359. DEF2_WMS(XXtoA1, NewScObjectSimple, OP_NewScObjectSimple)
  360. DEF3 (CUSTOM, NewScObject_A, OP_NewScObject_A, Auxiliary)
  361. DEF3 (CUSTOM, NewScObjectLiteral, OP_NewScObjectLiteral, Auxiliary)
  362. DEF3 (CUSTOM_L_R0, LdPropIds, OP_LdPropIds, Auxiliary)
  363. DEF3 (CUSTOM, InitCachedFuncs, OP_InitCachedFuncs, AuxNoReg)
  364. DEF2_WMS(LOCALI1toA1, GetCachedFunc, OP_GetCachedFunc)
  365. DEF2_WMS(EnvU1toXX, InvalCachedScope, JavascriptOperators::OP_InvalidateCachedScope)
  366. DEF2 (EMPTY, CommitScope, OP_CommitScope)
  367. DEF2_WMS(A1I2toXXNonVar_FuncBody, NewInnerScopeSlots, OP_NewInnerScopeSlots)
  368. DEF3_WMS(CUSTOM, CloneInnerScopeSlots, OP_CloneInnerScopeSlots, Unsigned1)
  369. DEF3_WMS(CUSTOM_L_R0, NewScArray, OP_NewScArray, Reg1Unsigned1)
  370. DEF2_WMS(U1toA1, NewScArrayWithMissingValues,JavascriptArray::OP_NewScArrayWithMissingValues)
  371. DEF3 (CUSTOM_L_R0, NewScIntArray, OP_NewScIntArray, Auxiliary)
  372. DEF3 (CUSTOM_L_R0, NewScFltArray, OP_NewScFltArray, Auxiliary)
  373. DEF3_WMS(CUSTOM_L_R0, ProfiledNewScArray, PROFILEDOP(OP_ProfiledNewScArray, OP_ProfiledNewScArray_NoProfile), ProfiledReg1Unsigned1)
  374. DEF3 (CUSTOM_L_R0, ProfiledNewScIntArray, PROFILEDOP(ProfiledNewScIntArray<true>, ProfiledNewScIntArray<false>), ProfiledAuxiliary)
  375. DEF3 (CUSTOM_L_R0, ProfiledNewScFltArray, PROFILEDOP(ProfiledNewScFltArray<true>, ProfiledNewScFltArray<false>), ProfiledAuxiliary)
  376. DEF2_WMS(RegextoA1, NewRegEx, JavascriptRegExp::OP_NewRegEx)
  377. EXDEF3_WMS(CUSTOM, InitClass, OP_InitClass, Class)
  378. DEF2_WMS(BRBReturnP1toA1, BrOnEmpty, JavascriptOperators::OP_BrOnEmpty)
  379. DEF2 (TRY, TryCatch, OP_TryCatch)
  380. DEF2 (TRY, TryFinally, OP_TryFinally)
  381. EXDEF2_WMS(TRYBR2, TryFinallyWithYield, OP_TryFinallyWithYield)
  382. EXDEF2 (EMPTY, ResumeCatch, OP_ResumeCatch)
  383. EXDEF2_WMS(TRYBR2, ResumeFinally, OP_ResumeFinally)
  384. DEF2_WMS(A1NonVarToA1, ResumeYield, OP_ResumeYield)
  385. DEF2_WMS(A2NonVarToA1Reg, ResumeYieldStar, OP_ResumeYield)
  386. EXDEF2 (W1, RuntimeTypeError, JavascriptExceptionOperators::OP_RuntimeTypeError)
  387. EXDEF2 (W1, RuntimeReferenceError, JavascriptExceptionOperators::OP_RuntimeReferenceError)
  388. DEF3 (CUSTOM_L_R0, SpreadArrayLiteral, OP_SpreadArrayLiteral, Reg2Aux)
  389. EXDEF3_WMS(CUSTOM, ClearAttributes, OP_ClearAttributes, ElementU)
  390. DEF3_WMS(CUSTOM, ApplyArgs, OP_ApplyArgs, Reg5)
  391. #ifdef ENABLE_SCRIPT_DEBUGGING
  392. EXDEF3_WMS(CUSTOM, EmitTmpRegCount, OP_EmitTmpRegCount, Unsigned1)
  393. #endif
  394. EXDEF2 (EMPTY, BeginBodyScope, OP_BeginBodyScope)
  395. #endif
  396. // help the caller to undefine all the macros
  397. #undef DEF2
  398. #undef DEF3
  399. #undef DEF2_WMS
  400. #undef DEF3_WMS
  401. #undef DEF4_WMS
  402. #undef EXDEF2
  403. #undef EXDEF3
  404. #undef EXDEF2_WMS
  405. #undef EXDEF3_WMS
  406. #undef EXDEF4_WMS