JnHelperMethodList.h 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Copyright (c) 2021 ChakraCore Project Contributors. All rights reserved.
  4. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  5. //-------------------------------------------------------------------------------------------------------
  6. #ifndef HELPERCALL
  7. #error HELPERCALL must be defined before including this file
  8. #else
  9. #ifndef HELPERCALLCHK
  10. #define HELPERCALLCHK(Name, Address, Attributes) HELPERCALL(Name, Address, Attributes)
  11. #endif
  12. #define HELPERCALL_MATH(Name, Address, Attributes) \
  13. HELPERCALLCHK(Name##, Address##, Attributes)
  14. #define HELPERCALL_FULL_OR_INPLACE_MATH(Name, Address, Attributes) \
  15. HELPERCALLCHK(Name##, Address##, Attributes) \
  16. HELPERCALLCHK(Name##_Full, Address##_Full, Attributes) \
  17. HELPERCALLCHK(Name##InPlace, Address##_InPlace, Attributes)
  18. #ifndef HELPERCALLCRT
  19. #define HELPERCALLCRT(Name, Attributes) HELPERCALL(Name, nullptr, Attributes)
  20. #endif
  21. //HELPERCALL(Name, Address, Attributes)
  22. HELPERCALL(Invalid, nullptr, AttrCanNotBeReentrant)
  23. HELPERCALLCHK(ScrFunc_OP_NewScFunc, Js::ScriptFunction::OP_NewScFunc, AttrCanNotBeReentrant)
  24. HELPERCALLCHK(ScrFunc_OP_NewScFuncHomeObj, Js::ScriptFunction::OP_NewScFuncHomeObj, AttrCanNotBeReentrant)
  25. HELPERCALLCHK(ScrFunc_OP_NewScGenFunc, Js::JavascriptGeneratorFunction::OP_NewScGenFunc, AttrCanNotBeReentrant)
  26. HELPERCALLCHK(ScrFunc_OP_NewScGenFuncHomeObj, Js::JavascriptGeneratorFunction::OP_NewScGenFuncHomeObj, AttrCanNotBeReentrant)
  27. HELPERCALLCHK(ScrFunc_OP_NewClassConstructor, Js::ScriptFunction::OP_NewClassConstructor, AttrCanNotBeReentrant)
  28. HELPERCALLCHK(ScrFunc_CheckAlignment, Js::JavascriptFunction::CheckAlignment, AttrCanNotBeReentrant)
  29. HELPERCALLCHK(ScrObj_LdHandlerScope, Js::JavascriptOperators::OP_LdHandlerScope, 0)
  30. HELPERCALLCHK(ScrObj_LdFrameDisplay, Js::JavascriptOperators::OP_LdFrameDisplay, AttrCanNotBeReentrant)
  31. HELPERCALLCHK(ScrObj_LdFrameDisplayNoParent, Js::JavascriptOperators::OP_LdFrameDisplayNoParent, AttrCanNotBeReentrant)
  32. HELPERCALLCHK(ScrObj_LdStrictFrameDisplay, Js::JavascriptOperators::OP_LdStrictFrameDisplay, AttrCanNotBeReentrant)
  33. HELPERCALLCHK(ScrObj_LdStrictFrameDisplayNoParent, Js::JavascriptOperators::OP_LdStrictFrameDisplayNoParent, AttrCanNotBeReentrant)
  34. HELPERCALLCHK(ScrObj_LdInnerFrameDisplay, Js::JavascriptOperators::OP_LdInnerFrameDisplay, AttrCanNotBeReentrant)
  35. HELPERCALLCHK(ScrObj_LdInnerFrameDisplayNoParent, Js::JavascriptOperators::OP_LdInnerFrameDisplayNoParent, AttrCanNotBeReentrant)
  36. HELPERCALLCHK(ScrObj_LdStrictInnerFrameDisplay, Js::JavascriptOperators::OP_LdStrictInnerFrameDisplay, AttrCanNotBeReentrant)
  37. HELPERCALLCHK(ScrObj_LdStrictInnerFrameDisplayNoParent, Js::JavascriptOperators::OP_LdStrictInnerFrameDisplayNoParent, AttrCanNotBeReentrant)
  38. HELPERCALLCHK(ScrObj_OP_IsInst, Js::JavascriptOperators::OP_IsInst, AttrCanThrow)
  39. HELPERCALLCHK(Op_IsIn, Js::JavascriptOperators::IsIn, AttrCanThrow)
  40. HELPERCALLCHK(Op_IsObject, (BOOL (*) (Js::Var))Js::JavascriptOperators::IsObject, AttrCanNotBeReentrant)
  41. HELPERCALLCHK(Op_IsObjectOrNull, (BOOL (*) (Js::Var))Js::JavascriptOperators::IsObjectOrNull, AttrCanNotBeReentrant)
  42. HELPERCALLCHK(Op_IsClassConstructor, Js::JavascriptOperators::IsClassConstructor, AttrCanNotBeReentrant)
  43. HELPERCALLCHK(Op_IsConstructor, (bool (*)(Js::Var))Js::JavascriptOperators::IsConstructor, AttrCanNotBeReentrant)
  44. HELPERCALLCHK(Op_IsBaseConstructorKind, Js::JavascriptOperators::IsBaseConstructorKind, AttrCanNotBeReentrant)
  45. HELPERCALLCHK(Op_LoadHeapArguments, Js::JavascriptOperators::LoadHeapArguments, AttrCanNotBeReentrant)
  46. HELPERCALLCHK(Op_LoadHeapArgsCached, Js::JavascriptOperators::LoadHeapArgsCached, AttrCanNotBeReentrant)
  47. HELPERCALLCHK(OP_InitCachedScope, Js::JavascriptOperators::OP_InitCachedScope, AttrCanNotBeReentrant)
  48. HELPERCALLCHK(OP_InitCachedFuncs, Js::JavascriptOperators::OP_InitCachedFuncs, AttrCanNotBeReentrant)
  49. HELPERCALLCHK(OP_InvalidateCachedScope, Js::JavascriptOperators::OP_InvalidateCachedScope, AttrCanNotBeReentrant)
  50. HELPERCALLCHK(OP_NewScopeObject, Js::JavascriptOperators::OP_NewScopeObject, AttrCanNotBeReentrant)
  51. HELPERCALLCHK(OP_NewScopeObjectWithFormals, Js::JavascriptOperators::OP_NewScopeObjectWithFormals, AttrCanNotBeReentrant)
  52. HELPERCALLCHK(OP_NewScopeSlots, Js::JavascriptOperators::OP_NewScopeSlots, AttrCanNotBeReentrant)
  53. HELPERCALLCHK(OP_NewScopeSlotsWithoutPropIds, Js::JavascriptOperators::OP_NewScopeSlotsWithoutPropIds, AttrCanNotBeReentrant)
  54. HELPERCALLCHK(OP_NewBlockScope, Js::JavascriptOperators::OP_NewBlockScope, AttrCanNotBeReentrant)
  55. HELPERCALLCHK(OP_NewPseudoScope, Js::JavascriptOperators::OP_NewPseudoScope, AttrCanNotBeReentrant)
  56. HELPERCALLCHK(OP_CloneInnerScopeSlots, Js::JavascriptOperators::OP_CloneScopeSlots, AttrCanNotBeReentrant)
  57. HELPERCALLCHK(OP_CloneBlockScope, Js::JavascriptOperators::OP_CloneBlockScope, AttrCanNotBeReentrant)
  58. HELPERCALLCHK(LdThis, Js::JavascriptOperators::OP_GetThis, AttrCanThrow)
  59. HELPERCALLCHK(LdThisNoFastPath, Js::JavascriptOperators::OP_GetThisNoFastPath, 0)
  60. HELPERCALLCHK(Op_LdElemUndef, Js::JavascriptOperators::OP_LoadUndefinedToElement, AttrCanNotBeReentrant)
  61. HELPERCALLCHK(Op_LdElemUndefDynamic, Js::JavascriptOperators::OP_LoadUndefinedToElementDynamic, AttrCanNotBeReentrant)
  62. HELPERCALLCHK(Op_LdElemUndefScoped, Js::JavascriptOperators::OP_LoadUndefinedToElementScoped, AttrCanNotBeReentrant)
  63. HELPERCALLCHK(Op_EnsureNoRootProperty, Js::JavascriptOperators::OP_EnsureNoRootProperty, AttrCanThrow | AttrCanNotBeReentrant)
  64. HELPERCALLCHK(Op_EnsureNoRootRedeclProperty, Js::JavascriptOperators::OP_EnsureNoRootRedeclProperty, AttrCanThrow | AttrCanNotBeReentrant)
  65. HELPERCALLCHK(Op_EnsureCanDeclGloFunc, Js::JavascriptOperators::OP_EnsureCanDeclGloFunc, AttrCanThrow | AttrCanNotBeReentrant)
  66. HELPERCALLCHK(Op_EnsureNoRedeclPropertyScoped, Js::JavascriptOperators::OP_ScopedEnsureNoRedeclProperty, AttrCanThrow | AttrCanNotBeReentrant)
  67. HELPERCALLCHK(Op_ToSpreadedFunctionArgument, Js::JavascriptOperators::OP_LdCustomSpreadIteratorList, AttrCanThrow)
  68. HELPERCALLCHK(Op_ConvObject, Js::JavascriptOperators::ToObject, AttrCanThrow | AttrCanNotBeReentrant)
  69. HELPERCALLCHK(Op_NewUnscopablesWrapperObject, Js::JavascriptOperators::ToUnscopablesWrapperObject, AttrCanThrow | AttrCanNotBeReentrant)
  70. HELPERCALLCHK(SetComputedNameVar, Js::JavascriptOperators::OP_SetComputedNameVar, AttrCanNotBeReentrant)
  71. HELPERCALLCHK(Op_UnwrapWithObj, Js::JavascriptOperators::OP_UnwrapWithObj, AttrCanNotBeReentrant)
  72. HELPERCALLCHK(Op_ConvNumber_Full, Js::JavascriptOperators::ToNumeric, AttrCanThrow)
  73. HELPERCALLCHK(Op_ConvNumberInPlace, Js::JavascriptOperators::ToNumericInPlace, AttrCanThrow)
  74. HELPERCALLCHK(Op_ConvNumber_Helper, Js::JavascriptConversion::ToNumber_Helper, 0)
  75. HELPERCALLCHK(Op_ConvFloat_Helper, Js::JavascriptConversion::ToFloat_Helper, 0)
  76. HELPERCALLCHK(Op_ConvNumber_FromPrimitive, Js::JavascriptConversion::ToNumber_FromPrimitive, 0)
  77. HELPERCALLCHK(Op_Typeof, Js::JavascriptOperators::Typeof, 0)
  78. HELPERCALLCHK(Op_TypeofElem, Js::JavascriptOperators::TypeofElem, AttrCanThrow)
  79. HELPERCALLCHK(Op_TypeofElem_UInt32, Js::JavascriptOperators::TypeofElem_UInt32, AttrCanThrow)
  80. HELPERCALLCHK(Op_TypeofElem_Int32, Js::JavascriptOperators::TypeofElem_Int32, AttrCanThrow)
  81. HELPERCALLCHK(Op_TypeofPropertyScoped, Js::JavascriptOperators::OP_TypeofPropertyScoped, AttrCanThrow)
  82. HELPERCALLCHK(Op_Rem_Double, Js::NumberUtilities::Modulus, AttrCanNotBeReentrant)
  83. #ifdef ENABLE_WASM
  84. HELPERCALLCHK(Op_CheckWasmSignature, Js::WebAssembly::CheckSignature, AttrCanThrow | AttrCanNotBeReentrant)
  85. HELPERCALLCHK(Op_GrowWasmMemory, Js::WebAssemblyMemory::GrowHelper, AttrCanNotBeReentrant)
  86. #if DBG
  87. HELPERCALLCHK(Op_WasmMemoryTraceWrite, Js::WebAssemblyMemory::TraceMemWrite, AttrCanNotBeReentrant)
  88. #endif
  89. #endif
  90. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Increment, Js::JavascriptMath::Increment, AttrCanThrow)
  91. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Decrement, Js::JavascriptMath::Decrement, AttrCanThrow)
  92. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Negate, Js::JavascriptMath::Negate, AttrCanThrow)
  93. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Not, Js::JavascriptMath::Not, AttrCanThrow)
  94. HELPERCALL_MATH(Op_AddLeftDead, Js::JavascriptMath::AddLeftDead, AttrCanThrow)
  95. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Add, Js::JavascriptMath::Add, AttrCanThrow)
  96. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Divide, Js::JavascriptMath::Divide, AttrCanThrow)
  97. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Modulus, Js::JavascriptMath::Modulus, AttrCanThrow)
  98. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Multiply, Js::JavascriptMath::Multiply, AttrCanThrow)
  99. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Subtract, Js::JavascriptMath::Subtract, AttrCanThrow)
  100. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Exponentiation, Js::JavascriptMath::Exponentiation, AttrCanThrow)
  101. HELPERCALL_FULL_OR_INPLACE_MATH(Op_And, Js::JavascriptMath::And, AttrCanThrow)
  102. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Or, Js::JavascriptMath::Or, AttrCanThrow)
  103. HELPERCALL_FULL_OR_INPLACE_MATH(Op_Xor, Js::JavascriptMath::Xor, AttrCanThrow)
  104. HELPERCALL_MATH(Op_MulAddLeft, Js::JavascriptMath::MulAddLeft, AttrCanThrow)
  105. HELPERCALL_MATH(Op_MulAddRight, Js::JavascriptMath::MulAddRight, AttrCanThrow)
  106. HELPERCALL_MATH(Op_MulSubLeft, Js::JavascriptMath::MulSubLeft, AttrCanThrow)
  107. HELPERCALL_MATH(Op_MulSubRight, Js::JavascriptMath::MulSubRight, AttrCanThrow)
  108. HELPERCALL_MATH(Op_ShiftLeft, Js::JavascriptMath::ShiftLeft, AttrCanThrow)
  109. HELPERCALL_MATH(Op_ShiftLeft_Full, Js::JavascriptMath::ShiftLeft_Full, AttrCanThrow)
  110. HELPERCALL_MATH(Op_ShiftRight, Js::JavascriptMath::ShiftRight, AttrCanThrow)
  111. HELPERCALL_MATH(Op_ShiftRight_Full, Js::JavascriptMath::ShiftRight_Full, AttrCanThrow)
  112. HELPERCALL_MATH(Op_ShiftRightU, Js::JavascriptMath::ShiftRightU, AttrCanThrow)
  113. HELPERCALL_MATH(Op_ShiftRightU_Full, Js::JavascriptMath::ShiftRightU_Full, AttrCanThrow)
  114. HELPERCALL_MATH(Conv_ToInt32_Full, Js::JavascriptMath::ToInt32_Full, AttrCanThrow)
  115. HELPERCALL_MATH(Conv_ToInt32, (int32 (*)(Js::Var, Js::ScriptContext *))Js::JavascriptMath::ToInt32, AttrCanThrow)
  116. HELPERCALL_MATH(Conv_ToInt32_NoObjects, Js::JavascriptMath::ToInt32_NoObjects, AttrCanThrow | AttrCanNotBeReentrant)
  117. HELPERCALL_MATH(Op_FinishOddDivByPow2, Js::JavascriptMath::FinishOddDivByPow2, AttrCanNotBeReentrant)
  118. HELPERCALL_MATH(Op_FinishOddDivByPow2InPlace, Js::JavascriptMath::FinishOddDivByPow2_InPlace, AttrCanNotBeReentrant)
  119. HELPERCALL_MATH(Conv_ToInt32Core, (int32 (*)(double))Js::JavascriptMath::ToInt32Core, AttrCanNotBeReentrant)
  120. HELPERCALL_MATH(Conv_ToUInt32Core, (uint32(*)(double))Js::JavascriptMath::ToUInt32, AttrCanNotBeReentrant)
  121. HELPERCALL_MATH(Op_MaxInAnArray, Js::JavascriptMath::MaxInAnArray, AttrCanThrow)
  122. HELPERCALL_MATH(Op_MinInAnArray, Js::JavascriptMath::MinInAnArray, AttrCanThrow)
  123. HELPERCALLCHK(Op_ConvString, Js::JavascriptConversion::ToString, AttrCanThrow)
  124. HELPERCALLCHK(Op_ConvPropertyKey, Js::JavascriptOperators::OP_ToPropertyKey, AttrCanThrow)
  125. HELPERCALLCHK(Op_CoerseString, Js::JavascriptConversion::CoerseString, AttrCanThrow)
  126. HELPERCALLCHK(Op_CoerseRegex, (Js::JavascriptRegExp* (*) (Js::Var aValue, Js::Var options, Js::ScriptContext *scriptContext))Js::JavascriptRegExp::CreateRegEx, AttrCanThrow)
  127. HELPERCALLCHK(Op_ConvPrimitiveString, Js::JavascriptConversion::ToPrimitiveString, AttrCanThrow)
  128. HELPERCALLCHK(Op_CompoundStringCloneForConcat, Js::CompoundString::JitClone, AttrCanThrow | AttrCanNotBeReentrant)
  129. HELPERCALLCHK(Op_CompoundStringCloneForAppending, Js::CompoundString::JitCloneForAppending, AttrCanThrow | AttrCanNotBeReentrant)
  130. HELPERCALLCHK(Op_Equal, Js::JavascriptOperators::Equal, 0)
  131. HELPERCALLCHK(Op_Equal_Full, Js::JavascriptOperators::Equal_Full, 0)
  132. HELPERCALLCHK(Op_Greater, Js::JavascriptOperators::Greater, AttrCanThrow)
  133. HELPERCALLCHK(Op_Greater_Full, Js::JavascriptOperators::Greater_Full, AttrCanThrow)
  134. HELPERCALLCHK(Op_GreaterEqual, Js::JavascriptOperators::GreaterEqual, AttrCanThrow)
  135. HELPERCALLCHK(Op_Less, Js::JavascriptOperators::Less, AttrCanThrow)
  136. HELPERCALLCHK(Op_LessEqual, Js::JavascriptOperators::LessEqual, AttrCanThrow)
  137. HELPERCALLCHK(Op_NotEqual, Js::JavascriptOperators::NotEqual, 0)
  138. HELPERCALLCHK(Op_StrictEqual, Js::JavascriptOperators::StrictEqual, 0)
  139. HELPERCALLCHK(Op_StrictEqualString, Js::JavascriptOperators::StrictEqualString, 0)
  140. HELPERCALLCHK(Op_StrictEqualEmptyString, Js::JavascriptOperators::StrictEqualEmptyString, AttrCanNotBeReentrant)
  141. HELPERCALLCHK(Op_NotStrictEqual, Js::JavascriptOperators::NotStrictEqual, 0)
  142. HELPERCALLCHK(Op_SwitchStringLookUp, Js::JavascriptNativeOperators::Op_SwitchStringLookUp, AttrCanNotBeReentrant)
  143. HELPERCALLCHK(Op_HasProperty, Js::JavascriptOperators::OP_HasProperty, 0)
  144. HELPERCALLCHK(Op_GetProperty, Js::JavascriptOperators::OP_GetProperty, AttrCanThrow)
  145. HELPERCALLCHK(Op_GetInstanceScoped, Js::JavascriptOperators::OP_GetInstanceScoped, 0)
  146. HELPERCALLCHK(Op_StFunctionExpression, Js::JavascriptOperators::OP_StFunctionExpression, AttrCanNotBeReentrant)
  147. HELPERCALLCHK(Op_InitUndeclRootLetFld, Js::JavascriptOperators::OP_InitUndeclRootLetProperty, AttrCanThrow | AttrCanNotBeReentrant)
  148. HELPERCALLCHK(Op_InitUndeclRootConstFld, Js::JavascriptOperators::OP_InitUndeclRootConstProperty, AttrCanThrow | AttrCanNotBeReentrant)
  149. HELPERCALLCHK(Op_InitUndeclConsoleLetFld, Js::JavascriptOperators::OP_InitUndeclConsoleLetProperty, AttrCanThrow | AttrCanNotBeReentrant)
  150. HELPERCALLCHK(Op_InitUndeclConsoleConstFld, Js::JavascriptOperators::OP_InitUndeclConsoleConstProperty, AttrCanThrow | AttrCanNotBeReentrant)
  151. HELPERCALLCHK(Op_InitLetFld, Js::JavascriptOperators::OP_InitLetProperty, AttrCanThrow)
  152. HELPERCALLCHK(Op_InitConstFld, Js::JavascriptOperators::OP_InitConstProperty, AttrCanThrow)
  153. HELPERCALLCHK(Op_InitClassMember, Js::JavascriptOperators::OP_InitClassMember, AttrCanThrow)
  154. HELPERCALLCHK(Op_InitClassMemberSet, Js::JavascriptOperators::OP_InitClassMemberSet, AttrCanThrow | AttrCanNotBeReentrant)
  155. HELPERCALLCHK(Op_InitClassMemberSetComputedName, Js::JavascriptOperators::OP_InitClassMemberSetComputedName, AttrCanThrow)
  156. HELPERCALLCHK(Op_InitClassMemberGet, Js::JavascriptOperators::OP_InitClassMemberGet, AttrCanThrow | AttrCanNotBeReentrant)
  157. HELPERCALLCHK(Op_InitClassMemberGetComputedName, Js::JavascriptOperators::OP_InitClassMemberGetComputedName, AttrCanThrow)
  158. HELPERCALLCHK(Op_InitClassMemberComputedName, Js::JavascriptOperators::OP_InitClassMemberComputedName, AttrCanThrow)
  159. HELPERCALLCHK(Op_InitFuncScoped, Js::JavascriptOperators::OP_InitFuncScoped, AttrCanThrow | AttrCanNotBeReentrant)
  160. HELPERCALLCHK(Op_DeleteProperty, Js::JavascriptOperators::OP_DeleteProperty, AttrCanThrow)
  161. HELPERCALLCHK(Op_DeleteRootProperty, Js::JavascriptOperators::OP_DeleteRootProperty, AttrCanThrow)
  162. HELPERCALLCHK(Op_DeletePropertyScoped, Js::JavascriptOperators::OP_DeletePropertyScoped, AttrCanThrow)
  163. HELPERCALLCHK(Op_GetElementI, Js::JavascriptOperators::OP_GetElementI_JIT, AttrCanThrow)
  164. HELPERCALLCHK(Op_GetElementI_ExpectingNativeFloatArray, Js::JavascriptNativeOperators::OP_GetElementI_JIT_ExpectingNativeFloatArray, AttrCanThrow)
  165. HELPERCALLCHK(Op_GetElementI_ExpectingVarArray, Js::JavascriptNativeOperators::OP_GetElementI_JIT_ExpectingVarArray, AttrCanThrow)
  166. HELPERCALLCHK(Op_GetElementI_UInt32, Js::JavascriptOperators::OP_GetElementI_UInt32, AttrCanThrow)
  167. HELPERCALLCHK(Op_GetElementI_UInt32_ExpectingNativeFloatArray, Js::JavascriptNativeOperators::OP_GetElementI_UInt32_ExpectingNativeFloatArray, AttrCanThrow)
  168. HELPERCALLCHK(Op_GetElementI_UInt32_ExpectingVarArray, Js::JavascriptNativeOperators::OP_GetElementI_UInt32_ExpectingVarArray, AttrCanThrow)
  169. HELPERCALLCHK(Op_GetElementI_Int32, Js::JavascriptOperators::OP_GetElementI_Int32, AttrCanThrow)
  170. HELPERCALLCHK(Op_GetElementI_Int32_ExpectingNativeFloatArray, Js::JavascriptNativeOperators::OP_GetElementI_Int32_ExpectingNativeFloatArray, AttrCanThrow)
  171. HELPERCALLCHK(Op_GetElementI_Int32_ExpectingVarArray, Js::JavascriptNativeOperators::OP_GetElementI_Int32_ExpectingVarArray, AttrCanThrow)
  172. HELPERCALLCHK(Op_GetNativeIntElementI, Js::JavascriptOperators::OP_GetNativeIntElementI, AttrCanThrow | AttrCanNotBeReentrant)
  173. HELPERCALLCHK(Op_GetNativeFloatElementI, Js::JavascriptOperators::OP_GetNativeFloatElementI, AttrCanThrow | AttrCanNotBeReentrant)
  174. HELPERCALLCHK(Op_GetNativeIntElementI_Int32, Js::JavascriptOperators::OP_GetNativeIntElementI_Int32, AttrCanThrow | AttrCanNotBeReentrant)
  175. HELPERCALLCHK(Op_GetNativeFloatElementI_Int32, Js::JavascriptOperators::OP_GetNativeFloatElementI_Int32, AttrCanThrow | AttrCanNotBeReentrant)
  176. HELPERCALLCHK(Op_GetNativeIntElementI_UInt32, Js::JavascriptOperators::OP_GetNativeIntElementI_UInt32, AttrCanThrow | AttrCanNotBeReentrant)
  177. HELPERCALLCHK(Op_GetNativeFloatElementI_UInt32, Js::JavascriptOperators::OP_GetNativeFloatElementI_UInt32, AttrCanThrow | AttrCanNotBeReentrant)
  178. HELPERCALLCHK(Op_GetMethodElement, Js::JavascriptOperators::OP_GetMethodElement, AttrCanThrow)
  179. HELPERCALLCHK(Op_GetMethodElement_UInt32, Js::JavascriptOperators::OP_GetMethodElement_UInt32, AttrCanThrow)
  180. HELPERCALLCHK(Op_GetMethodElement_Int32, Js::JavascriptOperators::OP_GetMethodElement_Int32, AttrCanThrow)
  181. HELPERCALLCHK(Op_SetElementI, Js::JavascriptOperators::OP_SetElementI_JIT, AttrCanThrow)
  182. HELPERCALLCHK(Op_SetElementI_UInt32, Js::JavascriptOperators::OP_SetElementI_UInt32, AttrCanThrow)
  183. HELPERCALLCHK(Op_SetElementI_Int32, Js::JavascriptOperators::OP_SetElementI_Int32, AttrCanThrow)
  184. HELPERCALLCHK(Op_SetNativeIntElementI, Js::JavascriptOperators::OP_SetNativeIntElementI, AttrCanThrow)
  185. HELPERCALLCHK(Op_SetNativeFloatElementI, Js::JavascriptOperators::OP_SetNativeFloatElementI, AttrCanThrow)
  186. HELPERCALLCHK(Op_SetNativeIntElementI_Int32, Js::JavascriptOperators::OP_SetNativeIntElementI_Int32, AttrCanThrow)
  187. HELPERCALLCHK(Op_SetNativeFloatElementI_Int32, Js::JavascriptOperators::OP_SetNativeFloatElementI_Int32, AttrCanThrow)
  188. HELPERCALLCHK(Op_SetNativeIntElementI_UInt32, Js::JavascriptOperators::OP_SetNativeIntElementI_UInt32, AttrCanThrow)
  189. HELPERCALLCHK(Op_SetNativeFloatElementI_UInt32, Js::JavascriptOperators::OP_SetNativeFloatElementI_UInt32, AttrCanThrow)
  190. HELPERCALLCHK(Op_SetNativeIntElementI_NoConvert, Js::JavascriptOperators::OP_SetNativeIntElementI_NoConvert, AttrCanThrow)
  191. HELPERCALLCHK(Op_SetNativeFloatElementI_NoConvert, Js::JavascriptOperators::OP_SetNativeFloatElementI_NoConvert, AttrCanThrow)
  192. HELPERCALLCHK(Op_SetNativeIntElementI_Int32_NoConvert, Js::JavascriptOperators::OP_SetNativeIntElementI_Int32_NoConvert, AttrCanThrow)
  193. HELPERCALLCHK(Op_SetNativeFloatElementI_Int32_NoConvert, Js::JavascriptOperators::OP_SetNativeFloatElementI_Int32_NoConvert, AttrCanThrow)
  194. HELPERCALLCHK(Op_SetNativeIntElementI_UInt32_NoConvert, Js::JavascriptOperators::OP_SetNativeIntElementI_UInt32_NoConvert, AttrCanThrow)
  195. HELPERCALLCHK(Op_SetNativeFloatElementI_UInt32_NoConvert, Js::JavascriptOperators::OP_SetNativeFloatElementI_UInt32_NoConvert, AttrCanThrow)
  196. HELPERCALLCHK(ScrArr_SetNativeIntElementC, Js::JavascriptArray::OP_SetNativeIntElementC, AttrCanNotBeReentrant)
  197. HELPERCALLCHK(ScrArr_SetNativeFloatElementC, Js::JavascriptArray::OP_SetNativeFloatElementC, AttrCanNotBeReentrant)
  198. HELPERCALLCHK(Op_DeleteElementI, Js::JavascriptOperators::OP_DeleteElementI, AttrCanThrow)
  199. HELPERCALLCHK(Op_DeleteElementI_UInt32, Js::JavascriptOperators::OP_DeleteElementI_UInt32, AttrCanThrow)
  200. HELPERCALLCHK(Op_DeleteElementI_Int32, Js::JavascriptOperators::OP_DeleteElementI_Int32, AttrCanThrow)
  201. HELPERCALLCHK(Op_Memset, Js::JavascriptOperators::OP_Memset, AttrCanThrow | AttrCanNotBeReentrant)
  202. HELPERCALLCHK(Op_Memcopy, Js::JavascriptOperators::OP_Memcopy, AttrCanThrow | AttrCanNotBeReentrant)
  203. HELPERCALLCHK(Op_PatchGetValue, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId))Js::JavascriptOperators::PatchGetValue<true, Js::InlineCache>), AttrCanThrow)
  204. HELPERCALLCHK(Op_PatchGetValueWithThisPtr, ((Js::Var(*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchGetValueWithThisPtr<true, Js::InlineCache>), AttrCanThrow)
  205. HELPERCALLCHK(Op_PatchGetValueForTypeOf, ((Js::Var(*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId))Js::JavascriptOperators::PatchGetValueForTypeOf<true, Js::InlineCache>), AttrCanThrow)
  206. HELPERCALLCHK(Op_PatchGetValuePolymorphic, ((Js::Var (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId))Js::JavascriptOperators::PatchGetValue<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  207. HELPERCALLCHK(Op_PatchGetValuePolymorphicWithThisPtr, ((Js::Var(*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchGetValueWithThisPtr<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  208. HELPERCALLCHK(Op_PatchGetValuePolymorphicForTypeOf, ((Js::Var(*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId))Js::JavascriptOperators::PatchGetValueForTypeOf<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  209. HELPERCALLCHK(Op_PatchGetRootValue, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::DynamicObject*, Js::PropertyId))Js::JavascriptOperators::PatchGetRootValue<true, Js::InlineCache>), AttrCanThrow)
  210. HELPERCALLCHK(Op_PatchGetRootValuePolymorphic, ((Js::Var (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::DynamicObject*, Js::PropertyId))Js::JavascriptOperators::PatchGetRootValue<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  211. HELPERCALLCHK(Op_PatchGetRootValueForTypeOf, ((Js::Var(*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::DynamicObject*, Js::PropertyId))Js::JavascriptOperators::PatchGetRootValueForTypeOf<true, Js::InlineCache>), AttrCanThrow)
  212. HELPERCALLCHK(Op_PatchGetRootValuePolymorphicForTypeOf, ((Js::Var(*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::DynamicObject*, Js::PropertyId))Js::JavascriptOperators::PatchGetRootValueForTypeOf<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  213. HELPERCALLCHK(Op_PatchGetPropertyScoped, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::FrameDisplay*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchGetPropertyScoped<true, Js::InlineCache>), AttrCanThrow)
  214. HELPERCALLCHK(Op_PatchGetPropertyForTypeOfScoped, ((Js::Var(*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::FrameDisplay*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchGetPropertyForTypeOfScoped<true, Js::InlineCache>), AttrCanThrow)
  215. HELPERCALLCHK(Op_PatchInitValue, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValue<true, Js::InlineCache>), AttrCanThrow)
  216. HELPERCALLCHK(Op_PatchInitValuePolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValue<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  217. HELPERCALLCHK(Op_PatchPutValue, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValue<true, Js::InlineCache>), AttrCanThrow)
  218. HELPERCALLCHK(Op_PatchPutValueWithThisPtr, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtr<true, Js::InlineCache>), AttrCanThrow)
  219. HELPERCALLCHK(Op_PatchPutValuePolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValue<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  220. HELPERCALLCHK(Op_PatchPutValueWithThisPtrPolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtr<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  221. HELPERCALLCHK(Op_PatchPutRootValue, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutRootValue<true, Js::InlineCache>), AttrCanThrow)
  222. HELPERCALLCHK(Op_PatchPutRootValuePolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutRootValue<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  223. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPath, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPath<true, Js::InlineCache>), AttrCanThrow)
  224. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPath, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPath<true, Js::InlineCache>), AttrCanThrow)
  225. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPathPolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPath<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  226. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPathPolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPath<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  227. HELPERCALLCHK(Op_PatchPutRootValueNoLocalFastPath, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutRootValueNoLocalFastPath<true, Js::InlineCache>), AttrCanThrow)
  228. HELPERCALLCHK(Op_PatchPutRootValueNoLocalFastPathPolymorphic, ((void (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutRootValueNoLocalFastPath<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  229. HELPERCALLCHK(Op_PatchInitValueCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValueCantChangeType<Js::InlineCache>), AttrCanThrow)
  230. HELPERCALLCHK(Op_PatchInitValuePolymorphicCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValueCantChangeType<Js::PolymorphicInlineCache>), AttrCanThrow)
  231. HELPERCALLCHK(Op_PatchPutValueCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueCantChangeType<Js::InlineCache>), AttrCanThrow)
  232. HELPERCALLCHK(Op_PatchPutValueWithThisPtrCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrCantChangeType<Js::InlineCache>), AttrCanThrow)
  233. HELPERCALLCHK(Op_PatchPutValuePolymorphicCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueCantChangeType<Js::PolymorphicInlineCache>), AttrCanThrow)
  234. HELPERCALLCHK(Op_PatchPutValueWithThisPtrPolymorphicCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrCantChangeType<Js::PolymorphicInlineCache>), AttrCanThrow)
  235. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPathCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPathCantChangeType<Js::InlineCache>), AttrCanThrow)
  236. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPathCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPathCantChangeType<Js::InlineCache>), AttrCanThrow)
  237. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPathPolymorphicCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPathCantChangeType<Js::PolymorphicInlineCache>), AttrCanThrow)
  238. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPathPolymorphicCantChangeType, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPathCantChangeType<Js::PolymorphicInlineCache>), AttrCanThrow)
  239. HELPERCALLCHK(Op_PatchInitValueCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValueCheckLayout<Js::InlineCache>), AttrCanThrow)
  240. HELPERCALLCHK(Op_PatchInitValuePolymorphicCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::RecyclableObject*, Js::PropertyId, Js::Var))Js::JavascriptOperators::PatchInitValueCheckLayout<Js::PolymorphicInlineCache>), AttrCanThrow)
  241. HELPERCALLCHK(Op_PatchPutValueCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueCheckLayout<Js::InlineCache>), AttrCanThrow)
  242. HELPERCALLCHK(Op_PatchPutValueWithThisPtrCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrCheckLayout<Js::InlineCache>), AttrCanThrow)
  243. HELPERCALLCHK(Op_PatchPutValuePolymorphicCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueCheckLayout<Js::PolymorphicInlineCache>), AttrCanThrow)
  244. HELPERCALLCHK(Op_PatchPutValueWithThisPtrPolymorphicCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrCheckLayout<Js::PolymorphicInlineCache>), AttrCanThrow)
  245. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPathCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPathCheckLayout<Js::InlineCache>), AttrCanThrow)
  246. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPathCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPathCheckLayout<Js::InlineCache>), AttrCanThrow)
  247. HELPERCALLCHK(Op_PatchPutValueNoLocalFastPathPolymorphicCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueNoLocalFastPathCheckLayout<Js::PolymorphicInlineCache>), AttrCanThrow)
  248. HELPERCALLCHK(Op_PatchPutValueWithThisPtrNoLocalFastPathPolymorphicCheckLayout, ((bool (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchPutValueWithThisPtrNoLocalFastPathCheckLayout<Js::PolymorphicInlineCache>), AttrCanThrow)
  249. HELPERCALLCHK(Op_PatchSetPropertyScoped, ((void (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::FrameDisplay*, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchSetPropertyScoped<true, Js::InlineCache>), AttrCanThrow)
  250. HELPERCALLCHK(Op_ConsolePatchSetPropertyScoped, ((void(*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::FrameDisplay*, Js::PropertyId, Js::Var, Js::Var, Js::PropertyOperationFlags))Js::JavascriptOperators::PatchSetPropertyScoped<true, Js::InlineCache>), AttrCanThrow)
  251. HELPERCALLCHK(Op_PatchGetMethod, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchGetMethod<true, Js::InlineCache>), AttrCanThrow)
  252. HELPERCALLCHK(Op_PatchGetMethodPolymorphic, ((Js::Var (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchGetMethod<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  253. HELPERCALLCHK(Op_PatchGetRootMethod, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchGetRootMethod<true, Js::InlineCache>), AttrCanThrow)
  254. HELPERCALLCHK(Op_PatchGetRootMethodPolymorphic, ((Js::Var (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchGetRootMethod<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  255. HELPERCALLCHK(Op_ScopedGetMethod, ((Js::Var (*)(Js::FunctionBody *const, Js::InlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchScopedGetMethod<true, Js::InlineCache>), AttrCanThrow)
  256. HELPERCALLCHK(Op_ScopedGetMethodPolymorphic, ((Js::Var (*)(Js::FunctionBody *const, Js::PolymorphicInlineCache *const, const Js::InlineCacheIndex, Js::Var, Js::PropertyId, bool))Js::JavascriptOperators::PatchScopedGetMethod<true, Js::PolymorphicInlineCache>), AttrCanThrow)
  257. HELPERCALLCHK(CheckIfTypeIsEquivalent, Js::JavascriptNativeOperators::CheckIfTypeIsEquivalent, AttrCanNotBeReentrant)
  258. HELPERCALLCHK(CheckIfTypeIsEquivalentForFixedField, Js::JavascriptNativeOperators::CheckIfTypeIsEquivalentForFixedField, AttrCanNotBeReentrant)
  259. HELPERCALLCHK(CheckIfPolyTypeIsEquivalent, Js::JavascriptNativeOperators::CheckIfPolyTypeIsEquivalent, AttrCanNotBeReentrant)
  260. HELPERCALLCHK(CheckIfPolyTypeIsEquivalentForFixedField, Js::JavascriptNativeOperators::CheckIfPolyTypeIsEquivalentForFixedField, AttrCanNotBeReentrant)
  261. HELPERCALLCHK(Op_Delete, Js::JavascriptOperators::Delete, AttrCanThrow | AttrCanNotBeReentrant)
  262. HELPERCALLCHK(OP_InitSetter, Js::JavascriptOperators::OP_InitSetter, AttrCanThrow | AttrCanNotBeReentrant)
  263. HELPERCALLCHK(OP_InitElemSetter, Js::JavascriptOperators::OP_InitElemSetter, AttrCanThrow)
  264. HELPERCALLCHK(OP_InitGetter, Js::JavascriptOperators::OP_InitGetter, AttrCanThrow | AttrCanNotBeReentrant)
  265. HELPERCALLCHK(OP_InitElemGetter, Js::JavascriptOperators::OP_InitElemGetter, AttrCanThrow)
  266. HELPERCALLCHK(OP_InitComputedProperty, Js::JavascriptOperators::OP_InitComputedProperty, AttrCanThrow)
  267. HELPERCALLCHK(OP_InitProto, Js::JavascriptOperators::OP_InitProto, AttrCanThrow | AttrCanNotBeReentrant)
  268. HELPERCALLCHK(Op_OP_InitForInEnumerator, Js::JavascriptOperators::OP_InitForInEnumerator, 0)
  269. HELPERCALLCHK(Op_OP_BrOnEmpty, Js::JavascriptOperators::OP_BrOnEmpty, 0)
  270. HELPERCALLCHK(Op_OP_BrFncEqApply, Js::JavascriptOperators::OP_BrFncEqApply, AttrCanNotBeReentrant)
  271. HELPERCALLCHK(Op_OP_BrFncNeqApply, Js::JavascriptOperators::OP_BrFncNeqApply, AttrCanNotBeReentrant)
  272. HELPERCALLCHK(Op_OP_ApplyArgs, Js::JavascriptOperators::OP_ApplyArgs, 0)
  273. HELPERCALLCHK(Conv_ToBoolean, Js::JavascriptConversion::ToBoolean, AttrCanNotBeReentrant)
  274. HELPERCALLCHK(ScrArr_ProfiledNewInstance, Js::JavascriptArray::ProfiledNewInstance, 0)
  275. HELPERCALLCHK(ScrArr_ProfiledNewInstanceNoArg, Js::JavascriptArray::ProfiledNewInstanceNoArg, AttrCanNotBeReentrant)
  276. HELPERCALLCHK(ScrArr_OP_NewScArray, Js::JavascriptArray::OP_NewScArray, AttrCanNotBeReentrant)
  277. HELPERCALLCHK(ScrArr_ProfiledNewScArray, Js::JavascriptArray::ProfiledNewScArray, AttrCanNotBeReentrant)
  278. HELPERCALLCHK(ScrArr_OP_NewScArrayWithElements, Js::JavascriptArray::OP_NewScArrayWithElements, AttrCanNotBeReentrant)
  279. HELPERCALLCHK(ScrArr_OP_NewScArrayWithMissingValues, Js::JavascriptArray::OP_NewScArrayWithMissingValues, AttrCanNotBeReentrant)
  280. HELPERCALLCHK(ScrArr_OP_NewScIntArray, Js::JavascriptArray::OP_NewScIntArray, AttrCanNotBeReentrant)
  281. HELPERCALLCHK(ScrArr_ProfiledNewScIntArray, Js::JavascriptArray::ProfiledNewScIntArray, AttrCanNotBeReentrant)
  282. HELPERCALLCHK(ScrArr_OP_NewScFltArray, Js::JavascriptArray::OP_NewScFltArray, AttrCanNotBeReentrant)
  283. HELPERCALLCHK(ScrArr_ProfiledNewScFltArray, Js::JavascriptArray::ProfiledNewScFltArray, AttrCanNotBeReentrant)
  284. HELPERCALLCHK(ArraySegmentVars, Js::JavascriptOperators::AddVarsToArraySegment, AttrCanNotBeReentrant)
  285. HELPERCALLCHK(IntArr_ToNativeFloatArray, Js::JavascriptNativeIntArray::ToNativeFloatArray, AttrCanThrow | AttrCanNotBeReentrant)
  286. HELPERCALLCHK(IntArr_ToVarArray, Js::JavascriptNativeIntArray::ToVarArray, AttrCanThrow | AttrCanNotBeReentrant)
  287. HELPERCALLCHK(FloatArr_ToVarArray, Js::JavascriptNativeFloatArray::ToVarArray, AttrCanThrow | AttrCanNotBeReentrant)
  288. HELPERCALLCHK(Array_Jit_GetArrayHeadSegmentForArrayOrObjectWithArray, Js::JavascriptArray::Jit_GetArrayHeadSegmentForArrayOrObjectWithArray, AttrCanNotBeReentrant)
  289. HELPERCALLCHK(Array_Jit_GetArrayHeadSegmentLength, Js::JavascriptArray::Jit_GetArrayHeadSegmentLength, AttrCanNotBeReentrant)
  290. HELPERCALLCHK(Array_Jit_OperationInvalidatedArrayHeadSegment, Js::JavascriptArray::Jit_OperationInvalidatedArrayHeadSegment, AttrCanNotBeReentrant)
  291. HELPERCALLCHK(Array_Jit_GetArrayLength, Js::JavascriptArray::Jit_GetArrayLength, AttrCanNotBeReentrant)
  292. HELPERCALLCHK(Array_Jit_OperationInvalidatedArrayLength, Js::JavascriptArray::Jit_OperationInvalidatedArrayLength, AttrCanNotBeReentrant)
  293. HELPERCALLCHK(Array_Jit_GetArrayFlagsForArrayOrObjectWithArray, Js::JavascriptArray::Jit_GetArrayFlagsForArrayOrObjectWithArray, AttrCanNotBeReentrant)
  294. HELPERCALLCHK(Array_Jit_OperationCreatedFirstMissingValue, Js::JavascriptArray::Jit_OperationCreatedFirstMissingValue, AttrCanNotBeReentrant)
  295. HELPERCALL(AllocMemForConcatStringMulti, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::ConcatStringMulti>, AttrCanNotBeReentrant)
  296. HELPERCALL(AllocMemForScObject, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::DynamicObject>, AttrCanNotBeReentrant)
  297. HELPERCALL(AllocMemForJavascriptArray, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::JavascriptArray>, AttrCanNotBeReentrant)
  298. HELPERCALL(AllocMemForJavascriptNativeIntArray, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::JavascriptNativeIntArray>, AttrCanNotBeReentrant)
  299. HELPERCALL(AllocMemForJavascriptNativeFloatArray, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::JavascriptNativeFloatArray>, AttrCanNotBeReentrant)
  300. HELPERCALL(AllocMemForSparseArraySegmentBase, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::SparseArraySegmentBase>, AttrCanNotBeReentrant)
  301. HELPERCALL(AllocMemForFrameDisplay, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::FrameDisplay>, AttrCanNotBeReentrant)
  302. HELPERCALL(AllocMemForVarArray, Js::JavascriptOperators::AllocMemForVarArray, AttrCanNotBeReentrant)
  303. HELPERCALL(AllocMemForJavascriptRegExp, (void (*)(size_t, Recycler*))Js::JavascriptOperators::JitRecyclerAlloc<Js::JavascriptRegExp>, AttrCanNotBeReentrant)
  304. HELPERCALLCHK(NewJavascriptObjectNoArg, Js::JavascriptOperators::NewJavascriptObjectNoArg, AttrCanNotBeReentrant)
  305. HELPERCALLCHK(NewJavascriptArrayNoArg, Js::JavascriptOperators::NewJavascriptArrayNoArg, AttrCanNotBeReentrant)
  306. HELPERCALLCHK(NewScObjectNoArg, Js::JavascriptOperators::NewScObjectNoArg, AttrCanThrow)
  307. HELPERCALLCHK(NewScObjectNoCtor, Js::JavascriptOperators::NewScObjectNoCtor, 0)
  308. HELPERCALLCHK(NewScObjectNoCtorFull, Js::JavascriptOperators::NewScObjectNoCtorFull, 0)
  309. HELPERCALLCHK(NewScObjectNoArgNoCtorFull, Js::JavascriptOperators::NewScObjectNoArgNoCtorFull, 0)
  310. HELPERCALLCHK(NewScObjectNoArgNoCtor, Js::JavascriptOperators::NewScObjectNoArgNoCtor, 0)
  311. HELPERCALLCHK(UpdateNewScObjectCache, Js::JavascriptOperators::UpdateNewScObjectCache, AttrCanNotBeReentrant)
  312. HELPERCALLCHK(EnsureObjectLiteralType, Js::JavascriptOperators::EnsureObjectLiteralType, AttrCanNotBeReentrant)
  313. HELPERCALLCHK(Op_NewClassProto, Js::JavascriptOperators::OP_NewClassProto, AttrCanNotBeReentrant)
  314. HELPERCALLCHK(OP_ClearAttributes, Js::JavascriptOperators::OP_ClearAttributes, AttrCanThrow | AttrCanNotBeReentrant)
  315. HELPERCALLCHK(OP_CmEq_A, Js::JavascriptOperators::OP_CmEq_A, 0)
  316. HELPERCALLCHK(OP_CmNeq_A, Js::JavascriptOperators::OP_CmNeq_A, 0)
  317. HELPERCALLCHK(OP_CmSrEq_A, Js::JavascriptOperators::OP_CmSrEq_A, 0)
  318. HELPERCALLCHK(OP_CmSrEq_String, Js::JavascriptOperators::OP_CmSrEq_String, 0)
  319. HELPERCALLCHK(OP_CmSrEq_EmptyString, Js::JavascriptOperators::OP_CmSrEq_EmptyString, 0)
  320. HELPERCALLCHK(OP_CmSrNeq_A, Js::JavascriptOperators::OP_CmSrNeq_A, 0)
  321. HELPERCALLCHK(OP_CmLt_A, Js::JavascriptOperators::OP_CmLt_A, AttrCanThrow)
  322. HELPERCALLCHK(OP_CmLe_A, Js::JavascriptOperators::OP_CmLe_A, AttrCanThrow)
  323. HELPERCALLCHK(OP_CmGt_A, Js::JavascriptOperators::OP_CmGt_A, AttrCanThrow)
  324. HELPERCALLCHK(OP_CmGe_A, Js::JavascriptOperators::OP_CmGe_A, AttrCanThrow)
  325. HELPERCALLCHK(Conv_ToUInt32_Full, Js::JavascriptConversion::ToUInt32_Full, AttrCanThrow)
  326. HELPERCALLCHK(Conv_ToUInt32, (uint32 (*)(Js::Var, Js::ScriptContext *))Js::JavascriptConversion::ToUInt32, AttrCanThrow)
  327. #if DBG && GLOBAL_ENABLE_WRITE_BARRIER
  328. HELPERCALL(WriteBarrierSetVerifyBit, Memory::Recycler::WBSetBitJIT, AttrCanNotBeReentrant)
  329. #endif
  330. #ifdef _M_IX86
  331. HELPERCALLCHK(Op_Int32ToAtom, Js::JavascriptOperators::Int32ToVar, AttrCanNotBeReentrant)
  332. HELPERCALLCHK(Op_Int32ToAtomInPlace, Js::JavascriptOperators::Int32ToVarInPlace, AttrCanNotBeReentrant)
  333. HELPERCALLCHK(Op_UInt32ToAtom, Js::JavascriptOperators::UInt32ToVar, AttrCanNotBeReentrant)
  334. HELPERCALLCHK(Op_UInt32ToAtomInPlace, Js::JavascriptOperators::UInt32ToVarInPlace, AttrCanNotBeReentrant)
  335. #endif
  336. #if !FLOATVAR
  337. HELPERCALLCHK(AllocUninitializedNumber, Js::JavascriptOperators::AllocUninitializedNumber, AttrCanNotBeReentrant)
  338. #endif
  339. #ifdef ENABLE_WASM_SIMD
  340. HELPERCALL(Simd128ShRtByScalarU2, Js::SIMDInt64x2Operation::OpShiftRightByScalarU, AttrCanNotBeReentrant)
  341. HELPERCALL(Simd128ShRtByScalarI2, Js::SIMDInt64x2Operation::OpShiftRightByScalar, AttrCanNotBeReentrant)
  342. HELPERCALL(Simd128ShLtByScalarI2, Js::SIMDInt64x2Operation::OpShiftLeftByScalar, AttrCanNotBeReentrant)
  343. HELPERCALL(Simd128ReplaceLaneI2, Js::SIMDInt64x2Operation::OpReplaceLane, AttrCanNotBeReentrant)
  344. HELPERCALL(Simd128TruncateI2, (void(*)(SIMDValue*, SIMDValue*))&Js::SIMDInt64x2Operation::OpTrunc<int64>, AttrCanThrow | AttrCanNotBeReentrant)
  345. HELPERCALL(Simd128TruncateU2, (void(*)(SIMDValue*, SIMDValue*))&Js::SIMDInt64x2Operation::OpTrunc<uint64>, AttrCanThrow | AttrCanNotBeReentrant)
  346. HELPERCALL(Simd128ConvertSD2, (void(*)(SIMDValue*, SIMDValue*))&Js::SIMDFloat64x2Operation::OpConv<int64>, AttrCanNotBeReentrant)
  347. HELPERCALL(Simd128ConvertUD2, (void(*)(SIMDValue*, SIMDValue*))&Js::SIMDFloat64x2Operation::OpConv<uint64>, AttrCanNotBeReentrant)
  348. #endif
  349. HELPERCALL(Op_TryCatch, nullptr, AttrCanNotBeReentrant)
  350. HELPERCALL(Op_TryFinally, nullptr, AttrCanThrow | AttrCanNotBeReentrant)
  351. HELPERCALL(Op_TryFinallyNoOpt, nullptr, AttrCanThrow | AttrCanNotBeReentrant)
  352. #if _M_X64
  353. HELPERCALL(Op_ReturnFromCallWithFakeFrame, amd64_ReturnFromCallWithFakeFrame, AttrCanNotBeReentrant)
  354. #endif
  355. HELPERCALL(Op_Throw, Js::JavascriptExceptionOperators::OP_Throw, AttrCanThrow | AttrCanNotBeReentrant)
  356. HELPERCALL(Op_RuntimeTypeError, Js::JavascriptExceptionOperators::OP_RuntimeTypeError, AttrCanThrow | AttrCanNotBeReentrant)
  357. HELPERCALL(Op_RuntimeRangeError, Js::JavascriptExceptionOperators::OP_RuntimeRangeError, AttrCanThrow | AttrCanNotBeReentrant)
  358. HELPERCALL(Op_RuntimeReferenceError, Js::JavascriptExceptionOperators::OP_RuntimeReferenceError, AttrCanThrow | AttrCanNotBeReentrant)
  359. HELPERCALL(Op_WebAssemblyRuntimeError, Js::JavascriptExceptionOperators::OP_WebAssemblyRuntimeError, AttrCanThrow | AttrCanNotBeReentrant)
  360. HELPERCALL(Op_OutOfMemoryError, Js::Throw::OutOfMemory, AttrCanThrow | AttrCanNotBeReentrant)
  361. HELPERCALL(Op_FatalInternalError, Js::Throw::FatalInternalError, AttrCanThrow | AttrCanNotBeReentrant)
  362. #if ENABLE_REGEX_CONFIG_OPTIONS
  363. HELPERCALL(ScrRegEx_OP_NewRegEx, Js::JavascriptRegExp::OP_NewRegEx, AttrCanNotBeReentrant)
  364. #endif
  365. HELPERCALL(ProbeCurrentStack, ThreadContext::ProbeCurrentStack, AttrCanNotBeReentrant)
  366. HELPERCALL(ProbeCurrentStack2, ThreadContext::ProbeCurrentStack2, AttrCanNotBeReentrant)
  367. HELPERCALLCHK(AdjustSlots, Js::DynamicTypeHandler::AdjustSlots_Jit, AttrCanNotBeReentrant)
  368. HELPERCALLCHK(InvalidateProtoCaches, Js::JavascriptOperators::OP_InvalidateProtoCaches, AttrCanNotBeReentrant)
  369. HELPERCALLCHK(GetStringForChar, (Js::JavascriptString * (*)(Js::CharStringCache *, char16))&Js::CharStringCache::GetStringForChar, AttrCanNotBeReentrant)
  370. HELPERCALLCHK(GetStringForCharCodePoint, (Js::JavascriptString * (*)(Js::CharStringCache *, codepoint_t))&Js::CharStringCache::GetStringForCharCodePoint, AttrCanNotBeReentrant)
  371. HELPERCALLCHK(ProfiledLdElem, Js::ProfilingHelpers::ProfiledLdElem, 0)
  372. HELPERCALLCHK(ProfiledStElem_DefaultFlags, Js::ProfilingHelpers::ProfiledStElem_DefaultFlags, 0)
  373. HELPERCALLCHK(ProfiledStElem, Js::ProfilingHelpers::ProfiledStElem, 0)
  374. HELPERCALLCHK(ProfiledNewScArray, Js::ProfilingHelpers::ProfiledNewScArray, 0)
  375. HELPERCALLCHK(ProfiledNewScObjArray, Js::ProfilingHelpers::ProfiledNewScObjArray_Jit, 0)
  376. HELPERCALLCHK(ProfiledNewScObjArraySpread, Js::ProfilingHelpers::ProfiledNewScObjArraySpread_Jit, 0)
  377. HELPERCALLCHK(ProfileLdSlot, Js::ProfilingHelpers::ProfileLdSlot, AttrCanNotBeReentrant)
  378. HELPERCALLCHK(ProfiledLdLen, Js::ProfilingHelpers::ProfiledLdLen_Jit, 0)
  379. HELPERCALLCHK(ProfiledLdFld, Js::ProfilingHelpers::ProfiledLdFld_Jit, 0)
  380. HELPERCALLCHK(ProfiledLdSuperFld, Js::ProfilingHelpers::ProfiledLdSuperFld_Jit, 0)
  381. HELPERCALLCHK(ProfiledLdFldForTypeOf, Js::ProfilingHelpers::ProfiledLdFldForTypeOf_Jit, 0)
  382. HELPERCALLCHK(ProfiledLdRootFldForTypeOf, Js::ProfilingHelpers::ProfiledLdRootFldForTypeOf_Jit, 0)
  383. HELPERCALLCHK(ProfiledLdFld_CallApplyTarget, Js::ProfilingHelpers::ProfiledLdFld_CallApplyTarget_Jit, 0)
  384. HELPERCALLCHK(ProfiledLdMethodFld, Js::ProfilingHelpers::ProfiledLdMethodFld_Jit, 0)
  385. HELPERCALLCHK(ProfiledLdRootFld, Js::ProfilingHelpers::ProfiledLdRootFld_Jit, 0)
  386. HELPERCALLCHK(ProfiledLdRootMethodFld, Js::ProfilingHelpers::ProfiledLdRootMethodFld_Jit, 0)
  387. HELPERCALLCHK(ProfiledStFld, Js::ProfilingHelpers::ProfiledStFld_Jit, 0)
  388. HELPERCALLCHK(ProfiledStSuperFld, Js::ProfilingHelpers::ProfiledStSuperFld_Jit, 0)
  389. HELPERCALLCHK(ProfiledStSuperFld_Strict, Js::ProfilingHelpers::ProfiledStSuperFld_Strict_Jit, 0)
  390. HELPERCALLCHK(ProfiledStFld_Strict, Js::ProfilingHelpers::ProfiledStFld_Strict_Jit, 0)
  391. HELPERCALLCHK(ProfiledStRootFld, Js::ProfilingHelpers::ProfiledStRootFld_Jit, 0)
  392. HELPERCALLCHK(ProfiledStRootFld_Strict, Js::ProfilingHelpers::ProfiledStRootFld_Strict_Jit, 0)
  393. HELPERCALLCHK(ProfiledInitFld, Js::ProfilingHelpers::ProfiledInitFld_Jit, 0)
  394. HELPERCALLCHK(TransitionFromSimpleJit, NativeCodeGenerator::Jit_TransitionFromSimpleJit, AttrCanNotBeReentrant)
  395. HELPERCALLCHK(SimpleProfileCall_DefaultInlineCacheIndex, Js::SimpleJitHelpers::ProfileCall_DefaultInlineCacheIndex, AttrCanNotBeReentrant)
  396. HELPERCALLCHK(SimpleProfileCall, Js::SimpleJitHelpers::ProfileCall, AttrCanNotBeReentrant)
  397. HELPERCALLCHK(SimpleProfileReturnTypeCall, Js::SimpleJitHelpers::ProfileReturnTypeCall, AttrCanNotBeReentrant)
  398. //HELPERCALLCHK(SimpleProfiledLdLen, Js::SimpleJitHelpers::ProfiledLdLen_A, AttrCanThrow) //Can throw because it mirrors OP_GetProperty
  399. HELPERCALLCHK(SimpleProfiledLdThis, Js::SimpleJitHelpers::ProfiledLdThis, AttrCanNotBeReentrant)
  400. HELPERCALLCHK(SimpleProfiledSwitch, Js::SimpleJitHelpers::ProfiledSwitch, AttrCanNotBeReentrant)
  401. HELPERCALLCHK(SimpleProfiledDivide, Js::SimpleJitHelpers::ProfiledDivide, AttrCanThrow)
  402. HELPERCALLCHK(SimpleProfiledRemainder, Js::SimpleJitHelpers::ProfiledRemainder, AttrCanThrow)
  403. HELPERCALLCHK(SimpleStoreArrayHelper, Js::SimpleJitHelpers::StoreArrayHelper, AttrCanNotBeReentrant)
  404. HELPERCALLCHK(SimpleStoreArraySegHelper, Js::SimpleJitHelpers::StoreArraySegHelper, AttrCanNotBeReentrant)
  405. HELPERCALLCHK(SimpleProfileParameters, Js::SimpleJitHelpers::ProfileParameters, AttrCanNotBeReentrant)
  406. HELPERCALLCHK(SimpleCleanImplicitCallFlags, Js::SimpleJitHelpers::CleanImplicitCallFlags, AttrCanNotBeReentrant)
  407. HELPERCALLCHK(SimpleGetScheduledEntryPoint, Js::SimpleJitHelpers::GetScheduledEntryPoint, AttrCanNotBeReentrant)
  408. HELPERCALLCHK(SimpleIsLoopCodeGenDone, Js::SimpleJitHelpers::IsLoopCodeGenDone, AttrCanNotBeReentrant)
  409. HELPERCALLCHK(SimpleRecordLoopImplicitCallFlags, Js::SimpleJitHelpers::RecordLoopImplicitCallFlags, AttrCanNotBeReentrant)
  410. HELPERCALLCHK(ScriptAbort, Js::JavascriptOperators::ScriptAbort, AttrCanThrow | AttrCanNotBeReentrant)
  411. HELPERCALLCHK(NoSaveRegistersBailOutForElidedYield, BailOutRecord::BailOutForElidedYield, AttrCanNotBeReentrant)
  412. // We don't want these functions to be valid iCall targets because they can be used to disclose stack addresses
  413. // which CFG cannot defend against. Instead, return these addresses in GetNonTableMethodAddress
  414. HELPERCALL(SaveAllRegistersAndBailOut, nullptr, AttrCanNotBeReentrant)
  415. HELPERCALL(SaveAllRegistersAndBranchBailOut, nullptr, AttrCanNotBeReentrant)
  416. #ifdef _M_IX86
  417. HELPERCALL(SaveAllRegistersNoSse2AndBailOut, nullptr, AttrCanNotBeReentrant)
  418. HELPERCALL(SaveAllRegistersNoSse2AndBranchBailOut, nullptr, AttrCanNotBeReentrant)
  419. #endif
  420. //Helpers for inlining built-ins
  421. HELPERCALLCHK(Array_At, Js::JavascriptArray::EntryAt, 0)
  422. HELPERCALLCHK(Array_Concat, Js::JavascriptArray::EntryConcat, 0)
  423. HELPERCALLCHK(Array_IndexOf, Js::JavascriptArray::EntryIndexOf, 0)
  424. HELPERCALLCHK(Array_Includes, Js::JavascriptArray::EntryIncludes, 0)
  425. HELPERCALLCHK(Array_Join, Js::JavascriptArray::EntryJoin, 0)
  426. HELPERCALLCHK(Array_LastIndexOf, Js::JavascriptArray::EntryLastIndexOf, 0)
  427. HELPERCALLCHK(Array_VarPush, Js::JavascriptArray::Push, 0)
  428. HELPERCALLCHK(Array_NativeIntPush, Js::JavascriptNativeIntArray::Push, 0)
  429. HELPERCALLCHK(Array_NativeFloatPush, Js::JavascriptNativeFloatArray::Push, 0)
  430. HELPERCALLCHK(Array_VarPop, Js::JavascriptArray::Pop, 0)
  431. HELPERCALLCHK(Array_NativePopWithNoDst, Js::JavascriptNativeArray::PopWithNoDst, AttrCanNotBeReentrant)
  432. HELPERCALLCHK(Array_NativeIntPop, Js::JavascriptNativeIntArray::Pop, AttrCanNotBeReentrant)
  433. HELPERCALLCHK(Array_NativeFloatPop, Js::JavascriptNativeFloatArray::Pop, AttrCanNotBeReentrant)
  434. HELPERCALLCHK(Array_Reverse, Js::JavascriptArray::EntryReverse, 0)
  435. HELPERCALLCHK(Array_Shift, Js::JavascriptArray::EntryShift, 0)
  436. HELPERCALLCHK(Array_Slice, Js::JavascriptArray::EntrySlice, 0)
  437. HELPERCALLCHK(Array_Splice, Js::JavascriptArray::EntrySplice, 0)
  438. HELPERCALLCHK(Array_Unshift, Js::JavascriptArray::EntryUnshift, 0)
  439. HELPERCALLCHK(Array_IsArray, Js::JavascriptArray::EntryIsArray, 0)
  440. HELPERCALL(String_At, Js::JavascriptString::EntryAt, 0)
  441. HELPERCALL(String_Concat, Js::JavascriptString::EntryConcat, 0)
  442. HELPERCALL(String_CharCodeAt, Js::JavascriptString::EntryCharCodeAt, 0)
  443. HELPERCALL(String_CharAt, Js::JavascriptString::EntryCharAt, 0)
  444. HELPERCALL(String_FromCharCode, Js::JavascriptString::EntryFromCharCode, 0)
  445. HELPERCALL(String_FromCodePoint, Js::JavascriptString::EntryFromCodePoint, 0)
  446. HELPERCALL(String_IndexOf, Js::JavascriptString::EntryIndexOf, 0)
  447. HELPERCALL(String_LastIndexOf, Js::JavascriptString::EntryLastIndexOf, 0)
  448. HELPERCALL(String_Link, Js::JavascriptString::EntryLink, 0)
  449. HELPERCALL(String_LocaleCompare, Js::JavascriptString::EntryLocaleCompare, 0)
  450. HELPERCALL(String_Match, Js::JavascriptString::EntryMatch, AttrTempObjectProducing)
  451. HELPERCALL(String_Replace, Js::JavascriptString::EntryReplace, AttrTempObjectProducing)
  452. HELPERCALL(String_Search, Js::JavascriptString::EntrySearch, 0)
  453. HELPERCALL(String_Slice, Js::JavascriptString::EntrySlice, 0)
  454. HELPERCALL(String_Split, Js::JavascriptString::EntrySplit, 0)
  455. HELPERCALL(String_Substr, Js::JavascriptString::EntrySubstr, 0)
  456. HELPERCALL(String_Substring, Js::JavascriptString::EntrySubstring, 0)
  457. HELPERCALL(String_ToLocaleLowerCase, Js::JavascriptString::EntryToLocaleLowerCase, 0)
  458. HELPERCALL(String_ToLocaleUpperCase, Js::JavascriptString::EntryToLocaleUpperCase, 0)
  459. HELPERCALL(String_ToLowerCase, Js::JavascriptString::EntryToLowerCase, 0)
  460. HELPERCALL(String_ToUpperCase, Js::JavascriptString::EntryToUpperCase, 0)
  461. HELPERCALL(String_Trim, Js::JavascriptString::EntryTrim, 0)
  462. HELPERCALL(String_TrimLeft, Js::JavascriptString::EntryTrimStart, 0)
  463. HELPERCALL(String_TrimRight, Js::JavascriptString::EntryTrimEnd, 0)
  464. HELPERCALL(String_GetSz, Js::JavascriptString::GetSzHelper, 0)
  465. HELPERCALL(String_PadStart, Js::JavascriptString::EntryPadStart, 0)
  466. HELPERCALL(String_PadEnd, Js::JavascriptString::EntryPadEnd, 0)
  467. HELPERCALLCHK(GlobalObject_ParseInt, Js::GlobalObject::EntryParseInt, 0)
  468. HELPERCALLCHK(Object_HasOwnProperty, Js::JavascriptObject::EntryHasOwnProperty, 0)
  469. HELPERCALL(RegExp_SplitResultUsed, Js::RegexHelper::RegexSplitResultUsed, 0)
  470. HELPERCALL(RegExp_SplitResultUsedAndMayBeTemp, Js::RegexHelper::RegexSplitResultUsedAndMayBeTemp, 0)
  471. HELPERCALL(RegExp_SplitResultNotUsed, Js::RegexHelper::RegexSplitResultNotUsed, 0)
  472. HELPERCALL(RegExp_MatchResultUsed, Js::RegexHelper::RegexMatchResultUsed, 0)
  473. HELPERCALL(RegExp_MatchResultUsedAndMayBeTemp, Js::RegexHelper::RegexMatchResultUsedAndMayBeTemp, 0)
  474. HELPERCALL(RegExp_MatchResultNotUsed, Js::RegexHelper::RegexMatchResultNotUsed, 0)
  475. HELPERCALL(RegExp_Exec, Js::JavascriptRegExp::EntryExec, AttrTempObjectProducing)
  476. HELPERCALL(RegExp_ExecResultUsed, Js::RegexHelper::RegexExecResultUsed, 0)
  477. HELPERCALL(RegExp_ExecResultUsedAndMayBeTemp, Js::RegexHelper::RegexExecResultUsedAndMayBeTemp, 0)
  478. HELPERCALL(RegExp_ExecResultNotUsed, Js::RegexHelper::RegexExecResultNotUsed, 0)
  479. HELPERCALL(RegExp_ReplaceStringResultUsed, Js::RegexHelper::RegexReplaceResultUsed, 0)
  480. HELPERCALL(RegExp_ReplaceStringResultNotUsed, Js::RegexHelper::RegexReplaceResultNotUsed, 0)
  481. HELPERCALL(RegExp_SymbolSearch, Js::JavascriptRegExp::EntrySymbolSearch, 0)
  482. HELPERCALL(Uint8ClampedArraySetItem, (BOOL (*)(Js::Uint8ClampedArray * arr, uint32 index, Js::Var value))&Js::Uint8ClampedArray::DirectSetItem, AttrCanNotBeReentrant)
  483. HELPERCALL(EnsureFunctionProxyDeferredPrototypeType, &Js::FunctionProxy::EnsureFunctionProxyDeferredPrototypeType, AttrCanNotBeReentrant)
  484. HELPERCALL(SpreadArrayLiteral, Js::JavascriptArray::SpreadArrayArgs, 0)
  485. HELPERCALL(SpreadCall, Js::JavascriptFunction::EntrySpreadCall, 0)
  486. HELPERCALL(SpreadObjectLiteral, Js::JavascriptObject::SpreadObjectLiteral, 0)
  487. HELPERCALL(Restify, Js::JavascriptObject::Restify, 0)
  488. HELPERCALL(NewPropIdArrForCompProps, Js::InterpreterStackFrame::OP_NewPropIdArrForCompProps, AttrCanNotBeReentrant)
  489. HELPERCALL(StPropIdArrFromVar, Js::InterpreterStackFrame::OP_StPropIdArrFromVar, 0)
  490. HELPERCALLCHK(LdHomeObj, Js::JavascriptOperators::OP_LdHomeObj, AttrCanNotBeReentrant)
  491. HELPERCALLCHK(LdFuncObj, Js::JavascriptOperators::OP_LdFuncObj, AttrCanNotBeReentrant)
  492. HELPERCALLCHK(SetHomeObj, Js::JavascriptOperators::OP_SetHomeObj, AttrCanNotBeReentrant)
  493. HELPERCALLCHK(LdHomeObjProto, Js::JavascriptOperators::OP_LdHomeObjProto, AttrCanNotBeReentrant)
  494. HELPERCALLCHK(LdFuncObjProto, Js::JavascriptOperators::OP_LdFuncObjProto, AttrCanNotBeReentrant)
  495. HELPERCALLCHK(ImportCall, Js::JavascriptOperators::OP_ImportCall, 0)
  496. HELPERCALLCHK(LdImportMeta, Js::JavascriptOperators::OP_LdImportMeta, 0)
  497. HELPERCALLCHK(NewAsyncFromSyncIterator, Js::JavascriptOperators::OP_NewAsyncFromSyncIterator, AttrCanNotBeReentrant)
  498. HELPERCALLCHK(NewAwaitObject, Js::JavascriptOperators::OP_NewAwaitObject, AttrCanNotBeReentrant)
  499. HELPERCALL(CreateInterpreterStackFrameForGenerator, Js::InterpreterStackFrame::CreateInterpreterStackFrameForGenerator, AttrCanNotBeReentrant)
  500. #ifdef ENABLE_DEBUG_CONFIG_OPTIONS
  501. HELPERCALL(OutputGeneratorBailInTrace, Js::JavascriptGenerator::OutputBailInTrace, AttrCanNotBeReentrant)
  502. #endif
  503. #if DBG
  504. HELPERCALL(IntRangeCheckFailure, Js::JavascriptNativeOperators::IntRangeCheckFailure, AttrCanNotBeReentrant)
  505. #endif
  506. #include "ExternalHelperMethodList.h"
  507. #if !FLOATVAR
  508. HELPERCALL(BoxStackNumber, Js::JavascriptNumber::BoxStackNumber, AttrCanNotBeReentrant)
  509. #endif
  510. HELPERCALL(GetNonzeroInt32Value_NoTaggedIntCheck, Js::JavascriptNumber::GetNonzeroInt32Value_NoTaggedIntCheck, AttrCanNotBeReentrant)
  511. HELPERCALL(IsNegZero, Js::JavascriptNumber::IsNegZero, AttrCanNotBeReentrant)
  512. HELPERCALL(DirectMath_PowIntInt, (double(*)(double, int32))Js::JavascriptNumber::DirectPowIntInt, AttrCanNotBeReentrant)
  513. HELPERCALL(DirectMath_PowDoubleInt, (double(*)(double, int32))Js::JavascriptNumber::DirectPowDoubleInt, AttrCanNotBeReentrant)
  514. HELPERCALL(DirectMath_Pow, (double(*)(double, double))Js::JavascriptNumber::DirectPow, AttrCanNotBeReentrant)
  515. HELPERCALL_MATH(DirectMath_Random, (double(*)(Js::ScriptContext*))Js::JavascriptMath::Random, AttrCanNotBeReentrant)
  516. //
  517. // Putting dllimport function ptr in JnHelperMethodAddresses will cause the table to be allocated in read-write memory
  518. // as dynamic initialization is require to load these addresses. Use nullptr instead and handle these function in GetNonTableMethodAddress().
  519. //
  520. HELPERCALLCRT(WMemCmp, AttrCanNotBeReentrant)
  521. HELPERCALLCRT(MemCpy, AttrCanNotBeReentrant)
  522. HELPERCALLCRT(DirectMath_FloorDb, AttrCanNotBeReentrant)
  523. HELPERCALLCRT(DirectMath_FloorFlt, AttrCanNotBeReentrant)
  524. HELPERCALLCRT(DirectMath_CeilDb, AttrCanNotBeReentrant)
  525. HELPERCALLCRT(DirectMath_CeilFlt, AttrCanNotBeReentrant)
  526. HELPERCALL(DirectMath_TruncDb, (double(*)(double)) Wasm::WasmMath::Trunc<double>, AttrCanNotBeReentrant)
  527. HELPERCALL(DirectMath_TruncFlt, (float(*)(float)) Wasm::WasmMath::Trunc<float>, AttrCanNotBeReentrant)
  528. HELPERCALL(DirectMath_NearestDb, (double(*)(double)) Wasm::WasmMath::Nearest<double>, AttrCanNotBeReentrant)
  529. HELPERCALL(DirectMath_NearestFlt, (float(*)(float)) Wasm::WasmMath::Nearest<float>, AttrCanNotBeReentrant)
  530. HELPERCALL(PopCnt32, Math::PopCnt32, AttrCanNotBeReentrant)
  531. HELPERCALL(PopCnt64, (int64(*)(int64)) Wasm::WasmMath::PopCnt<int64>, AttrCanNotBeReentrant)
  532. HELPERCALL(F32ToI64, (int64(*)(float, Js::ScriptContext*)) Wasm::WasmMath::F32ToI64<false /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  533. HELPERCALL(F32ToU64, (uint64(*)(float, Js::ScriptContext*)) Wasm::WasmMath::F32ToU64<false /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  534. HELPERCALL(F64ToI64, (int64(*)(double, Js::ScriptContext*)) Wasm::WasmMath::F64ToI64<false /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  535. HELPERCALL(F64ToU64, (uint64(*)(double, Js::ScriptContext*)) Wasm::WasmMath::F64ToU64<false /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  536. HELPERCALL(F32ToI64Sat, (int64(*)(float, Js::ScriptContext*)) Wasm::WasmMath::F32ToI64<true /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  537. HELPERCALL(F32ToU64Sat, (uint64(*)(float, Js::ScriptContext*)) Wasm::WasmMath::F32ToU64<true /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  538. HELPERCALL(F64ToI64Sat, (int64(*)(double, Js::ScriptContext*)) Wasm::WasmMath::F64ToI64<true /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  539. HELPERCALL(F64ToU64Sat, (uint64(*)(double, Js::ScriptContext*)) Wasm::WasmMath::F64ToU64<true /* saturating */>, AttrCanThrow|AttrCanNotBeReentrant)
  540. HELPERCALL(I64TOF64, Js::JavascriptConversion::LongToDouble, AttrCanNotBeReentrant)
  541. HELPERCALL(UI64TOF64, Js::JavascriptConversion::ULongToDouble, AttrCanNotBeReentrant)
  542. HELPERCALL(I64TOF32, Js::JavascriptConversion::LongToFloat, AttrCanNotBeReentrant)
  543. HELPERCALL(UI64TOF32, Js::JavascriptConversion::ULongToFloat, AttrCanNotBeReentrant)
  544. HELPERCALLCRT(DirectMath_Acos, AttrCanNotBeReentrant)
  545. HELPERCALLCRT(DirectMath_Asin, AttrCanNotBeReentrant)
  546. HELPERCALLCRT(DirectMath_Atan, AttrCanNotBeReentrant)
  547. HELPERCALLCRT(DirectMath_Atan2, AttrCanNotBeReentrant)
  548. HELPERCALLCRT(DirectMath_Cos, AttrCanNotBeReentrant)
  549. HELPERCALLCRT(DirectMath_Exp, AttrCanNotBeReentrant)
  550. HELPERCALLCRT(DirectMath_Log, AttrCanNotBeReentrant)
  551. HELPERCALLCRT(DirectMath_Sin, AttrCanNotBeReentrant)
  552. HELPERCALLCRT(DirectMath_Tan, AttrCanNotBeReentrant)
  553. #ifdef _M_IX86
  554. HELPERCALL(DirectMath_Int64DivS, ((int64(*)(int64, int64, Js::ScriptContext*)) Js::InterpreterStackFrame::OP_DivOverflow<int64, &Js::AsmJsMath::DivUnsafe<int64>>), AttrCanThrow | AttrCanNotBeReentrant)
  555. HELPERCALL(DirectMath_Int64DivU, ((uint64(*)(uint64, uint64, Js::ScriptContext*)) Js::InterpreterStackFrame::OP_UnsignedDivRemCheck<uint64, &Js::AsmJsMath::DivUnsafe<uint64>>), AttrCanThrow | AttrCanNotBeReentrant)
  556. HELPERCALL(DirectMath_Int64RemS, ((int64(*)(int64, int64, Js::ScriptContext*)) Js::InterpreterStackFrame::OP_RemOverflow<int64, &Js::AsmJsMath::RemUnsafe<int64>>), AttrCanThrow | AttrCanNotBeReentrant)
  557. HELPERCALL(DirectMath_Int64RemU, ((uint64(*)(uint64, uint64, Js::ScriptContext*)) Js::InterpreterStackFrame::OP_UnsignedDivRemCheck<uint64, &Js::AsmJsMath::RemUnsafe<uint64>>), AttrCanThrow | AttrCanNotBeReentrant)
  558. HELPERCALL(DirectMath_Int64Mul , (int64(*)(int64,int64)) Js::AsmJsMath::Mul<int64>, AttrCanNotBeReentrant)
  559. HELPERCALL(DirectMath_Int64Shl , (int64(*)(int64,int64)) Wasm::WasmMath::Shl<int64>, AttrCanNotBeReentrant)
  560. HELPERCALL(DirectMath_Int64Shr , (int64(*)(int64,int64)) Wasm::WasmMath::Shr<int64>, AttrCanNotBeReentrant)
  561. HELPERCALL(DirectMath_Int64ShrU, (int64(*)(int64,int64)) Wasm::WasmMath::ShrU<uint64>, AttrCanNotBeReentrant)
  562. HELPERCALL(DirectMath_Int64Rol , (int64(*)(int64,int64)) Wasm::WasmMath::Rol<int64>, AttrCanNotBeReentrant)
  563. HELPERCALL(DirectMath_Int64Ror , (int64(*)(int64,int64)) Wasm::WasmMath::Ror<int64>, AttrCanNotBeReentrant)
  564. HELPERCALL(DirectMath_Int64Clz , (int64(*)(int64)) Wasm::WasmMath::Clz<int64>, AttrCanNotBeReentrant)
  565. HELPERCALL(DirectMath_Int64Ctz , (int64(*)(int64)) Wasm::WasmMath::Ctz<int64>, AttrCanNotBeReentrant)
  566. HELPERCALL(AtomicStore64, nullptr, AttrCanNotBeReentrant)
  567. HELPERCALL(MemoryBarrier, nullptr, AttrCanNotBeReentrant)
  568. #endif
  569. #ifdef _CONTROL_FLOW_GUARD
  570. HELPERCALLCRT(GuardCheckCall, AttrCanNotBeReentrant)
  571. #endif
  572. // This is statically initialized.
  573. #ifdef _M_IX86
  574. HELPERCALL( CRT_chkstk, _chkstk, AttrCanNotBeReentrant)
  575. #else
  576. HELPERCALL(CRT_chkstk, __chkstk, AttrCanNotBeReentrant)
  577. #endif
  578. #undef HELPERCALL
  579. #undef HELPERCALL_MATH
  580. #undef HELPERCALL_FULL_OR_INPLACE_MATH
  581. #undef HELPERCALLCRT
  582. #undef HELPERCALLCHK
  583. #endif