14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci#ifndef ECMASCRIPT_INTERPRETER_SLOW_RUNTIME_STUB_H 174514f5e3Sopenharmony_ci#define ECMASCRIPT_INTERPRETER_SLOW_RUNTIME_STUB_H 184514f5e3Sopenharmony_ci 194514f5e3Sopenharmony_ci#include "ecmascript/jspandafile/program_object.h" 204514f5e3Sopenharmony_ci#include "ecmascript/js_tagged_value.h" 214514f5e3Sopenharmony_ci#include "ecmascript/js_thread.h" 224514f5e3Sopenharmony_ci 234514f5e3Sopenharmony_cinamespace panda::ecmascript { 244514f5e3Sopenharmony_ciclass GlobalEnv; 254514f5e3Sopenharmony_ciclass JSArray; 264514f5e3Sopenharmony_ci 274514f5e3Sopenharmony_ciclass SlowRuntimeStub { 284514f5e3Sopenharmony_cipublic: 294514f5e3Sopenharmony_ci static JSTaggedValue CallSpread(JSThread *thread, JSTaggedValue func, JSTaggedValue obj, JSTaggedValue array); 304514f5e3Sopenharmony_ci static JSTaggedValue Neg(JSThread *thread, JSTaggedValue value); 314514f5e3Sopenharmony_ci static JSTaggedValue AsyncFunctionEnter(JSThread *thread); 324514f5e3Sopenharmony_ci static JSTaggedValue ToNumber(JSThread *thread, JSTaggedValue value); 334514f5e3Sopenharmony_ci static JSTaggedValue ToNumeric(JSThread *thread, JSTaggedValue value); 344514f5e3Sopenharmony_ci static JSTaggedValue Not(JSThread *thread, JSTaggedValue value); 354514f5e3Sopenharmony_ci static JSTaggedValue Inc(JSThread *thread, JSTaggedValue value); 364514f5e3Sopenharmony_ci static JSTaggedValue Dec(JSThread *thread, JSTaggedValue value); 374514f5e3Sopenharmony_ci static void Throw(JSThread *thread, JSTaggedValue value); 384514f5e3Sopenharmony_ci static JSTaggedValue GetPropIterator(JSThread *thread, JSTaggedValue value); 394514f5e3Sopenharmony_ci static void ThrowConstAssignment(JSThread *thread, JSTaggedValue value); 404514f5e3Sopenharmony_ci static JSTaggedValue Add2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 414514f5e3Sopenharmony_ci static JSTaggedValue Sub2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 424514f5e3Sopenharmony_ci static JSTaggedValue Mul2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 434514f5e3Sopenharmony_ci static JSTaggedValue Div2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 444514f5e3Sopenharmony_ci static JSTaggedValue Mod2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 454514f5e3Sopenharmony_ci static JSTaggedValue Eq(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 464514f5e3Sopenharmony_ci static JSTaggedValue NotEq(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 474514f5e3Sopenharmony_ci static JSTaggedValue Less(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 484514f5e3Sopenharmony_ci static JSTaggedValue LessEq(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 494514f5e3Sopenharmony_ci static JSTaggedValue Greater(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 504514f5e3Sopenharmony_ci static JSTaggedValue GreaterEq(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 514514f5e3Sopenharmony_ci static JSTaggedValue Shl2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 524514f5e3Sopenharmony_ci static JSTaggedValue Shr2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 534514f5e3Sopenharmony_ci static JSTaggedValue Ashr2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 544514f5e3Sopenharmony_ci static JSTaggedValue And2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 554514f5e3Sopenharmony_ci static JSTaggedValue Or2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 564514f5e3Sopenharmony_ci static JSTaggedValue Xor2(JSThread *thread, JSTaggedValue left, JSTaggedValue right); 574514f5e3Sopenharmony_ci 584514f5e3Sopenharmony_ci static JSTaggedValue ToJSTaggedValueWithInt32(JSThread *thread, JSTaggedValue value); 594514f5e3Sopenharmony_ci static JSTaggedValue ToJSTaggedValueWithUint32(JSThread *thread, JSTaggedValue value); 604514f5e3Sopenharmony_ci 614514f5e3Sopenharmony_ci static JSTaggedValue DelObjProp(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop); 624514f5e3Sopenharmony_ci static JSTaggedValue NewObjRange(JSThread *thread, JSTaggedValue func, JSTaggedValue newTarget, 634514f5e3Sopenharmony_ci uint16_t firstArgIdx, uint16_t length); 644514f5e3Sopenharmony_ci static JSTaggedValue CreateObjectWithExcludedKeys(JSThread *thread, uint16_t numKeys, JSTaggedValue objVal, 654514f5e3Sopenharmony_ci uint16_t firstArgRegIdx); 664514f5e3Sopenharmony_ci static JSTaggedValue Exp(JSThread *thread, JSTaggedValue base, JSTaggedValue exponent); 674514f5e3Sopenharmony_ci static JSTaggedValue IsIn(JSThread *thread, JSTaggedValue prop, JSTaggedValue obj); 684514f5e3Sopenharmony_ci static JSTaggedValue Instanceof(JSThread *thread, JSTaggedValue obj, JSTaggedValue target); 694514f5e3Sopenharmony_ci static JSTaggedValue InstanceofByHandler(JSThread *thread, JSTaggedValue target, JSTaggedValue object, 704514f5e3Sopenharmony_ci JSTaggedValue instOfHandler); 714514f5e3Sopenharmony_ci 724514f5e3Sopenharmony_ci static JSTaggedValue NewLexicalEnv(JSThread *thread, uint16_t numVars); 734514f5e3Sopenharmony_ci static JSTaggedValue NewSendableEnv(JSThread *thread, uint16_t numVars); 744514f5e3Sopenharmony_ci static JSTaggedValue NewLexicalEnvWithName(JSThread *thread, uint16_t numVars, uint16_t scopeId); 754514f5e3Sopenharmony_ci static JSTaggedValue CreateIterResultObj(JSThread *thread, JSTaggedValue value, JSTaggedValue flag); 764514f5e3Sopenharmony_ci 774514f5e3Sopenharmony_ci static JSTaggedValue CreateGeneratorObj(JSThread *thread, JSTaggedValue genFunc); 784514f5e3Sopenharmony_ci static JSTaggedValue SuspendGenerator(JSThread *thread, JSTaggedValue genObj, JSTaggedValue value); 794514f5e3Sopenharmony_ci static void SetGeneratorState(JSThread *thread, JSTaggedValue genObj, int32_t index); 804514f5e3Sopenharmony_ci static JSTaggedValue AsyncFunctionAwaitUncaught(JSThread *thread, JSTaggedValue asyncFuncObj, JSTaggedValue value); 814514f5e3Sopenharmony_ci static JSTaggedValue AsyncFunctionResolveOrReject(JSThread *thread, JSTaggedValue asyncFuncObj, JSTaggedValue value, 824514f5e3Sopenharmony_ci bool is_resolve); 834514f5e3Sopenharmony_ci 844514f5e3Sopenharmony_ci static JSTaggedValue NewObjApply(JSThread *thread, JSTaggedValue func, JSTaggedValue array); 854514f5e3Sopenharmony_ci static void ThrowUndefinedIfHole(JSThread *thread, JSTaggedValue obj); 864514f5e3Sopenharmony_ci static void ThrowIfNotObject(JSThread *thread); 874514f5e3Sopenharmony_ci static void ThrowThrowNotExists(JSThread *thread); 884514f5e3Sopenharmony_ci static void ThrowPatternNonCoercible(JSThread *thread); 894514f5e3Sopenharmony_ci static JSTaggedValue ThrowIfSuperNotCorrectCall(JSThread *thread, uint16_t index, JSTaggedValue thisValue); 904514f5e3Sopenharmony_ci static void ThrowDeleteSuperProperty(JSThread *thread); 914514f5e3Sopenharmony_ci 924514f5e3Sopenharmony_ci static JSTaggedValue StOwnByName(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, JSTaggedValue value); 934514f5e3Sopenharmony_ci static JSTaggedValue StOwnByNameWithNameSet(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, 944514f5e3Sopenharmony_ci JSTaggedValue value); 954514f5e3Sopenharmony_ci static JSTaggedValue StOwnByIndex(JSThread *thread, JSTaggedValue obj, uint32_t idx, JSTaggedValue value); 964514f5e3Sopenharmony_ci static JSTaggedValue StOwnByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue key, JSTaggedValue value); 974514f5e3Sopenharmony_ci static JSTaggedValue StOwnByValueWithNameSet(JSThread *thread, JSTaggedValue obj, JSTaggedValue key, 984514f5e3Sopenharmony_ci JSTaggedValue value); 994514f5e3Sopenharmony_ci static JSTaggedValue CreateEmptyArray(JSThread *thread, ObjectFactory *factory, JSHandle<GlobalEnv> globalEnv); 1004514f5e3Sopenharmony_ci static JSTaggedValue CreateEmptyObject(JSThread *thread, ObjectFactory *factory, JSHandle<GlobalEnv> globalEnv); 1014514f5e3Sopenharmony_ci static JSTaggedValue CreateObjectWithBuffer(JSThread *thread, ObjectFactory *factory, JSObject *literal); 1024514f5e3Sopenharmony_ci static JSTaggedValue CreateObjectHavingMethod(JSThread *thread, ObjectFactory *factory, JSObject *literal, 1034514f5e3Sopenharmony_ci JSTaggedValue env); 1044514f5e3Sopenharmony_ci static JSTaggedValue SetObjectWithProto(JSThread *thread, JSTaggedValue proto, JSTaggedValue obj); 1054514f5e3Sopenharmony_ci static JSTaggedValue CreateArrayWithBuffer(JSThread *thread, ObjectFactory *factory, JSArray *literal); 1064514f5e3Sopenharmony_ci 1074514f5e3Sopenharmony_ci static JSTaggedValue GetTemplateObject(JSThread *thread, JSTaggedValue literal); 1084514f5e3Sopenharmony_ci static JSTaggedValue GetNextPropName(JSThread *thread, JSTaggedValue iter); 1094514f5e3Sopenharmony_ci static JSTaggedValue CopyDataProperties(JSThread *thread, JSTaggedValue dst, JSTaggedValue src); 1104514f5e3Sopenharmony_ci 1114514f5e3Sopenharmony_ci static JSTaggedValue GetUnmapedArgs(JSThread *thread, JSTaggedType *sp, uint32_t actualNumArgs, uint32_t startIdx); 1124514f5e3Sopenharmony_ci static JSTaggedValue CopyRestArgs(JSThread *thread, JSTaggedType *sp, uint32_t restNumArgs, uint32_t startIdx); 1134514f5e3Sopenharmony_ci static JSTaggedValue GetIterator(JSThread *thread, JSTaggedValue obj); 1144514f5e3Sopenharmony_ci static JSTaggedValue GetAsyncIterator(JSThread *thread, JSTaggedValue obj); 1154514f5e3Sopenharmony_ci static JSTaggedValue IterNext(JSThread *thread, JSTaggedValue iter); 1164514f5e3Sopenharmony_ci static JSTaggedValue CloseIterator(JSThread *thread, JSTaggedValue iter); 1174514f5e3Sopenharmony_ci static void StModuleVar(JSThread *thread, JSTaggedValue key, JSTaggedValue value); 1184514f5e3Sopenharmony_ci static JSTaggedValue LdModuleVar(JSThread *thread, JSTaggedValue key, bool inner); 1194514f5e3Sopenharmony_ci static void StModuleVar(JSThread *thread, int32_t index, JSTaggedValue value); 1204514f5e3Sopenharmony_ci static JSTaggedValue LdLocalModuleVar(JSThread *thread, int32_t index); 1214514f5e3Sopenharmony_ci static JSTaggedValue LdExternalModuleVar(JSThread *thread, int32_t index); 1224514f5e3Sopenharmony_ci static JSTaggedValue LdSendableExternalModuleVar(JSThread *thread, int32_t index, JSTaggedValue thisFunc); 1234514f5e3Sopenharmony_ci static JSTaggedValue LdLazyExternalModuleVar(JSThread *thread, int32_t index, JSTaggedValue thisFunc); 1244514f5e3Sopenharmony_ci static JSTaggedValue LdLazySendableExternalModuleVar(JSThread *thread, int32_t index, JSTaggedValue thisFunc); 1254514f5e3Sopenharmony_ci static JSTaggedValue CreateRegExpWithLiteral(JSThread *thread, JSTaggedValue pattern, uint8_t flags); 1264514f5e3Sopenharmony_ci static JSTaggedValue GetIteratorNext(JSThread *thread, JSTaggedValue obj, JSTaggedValue method); 1274514f5e3Sopenharmony_ci 1284514f5e3Sopenharmony_ci static JSTaggedValue DefineGetterSetterByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, 1294514f5e3Sopenharmony_ci JSTaggedValue getter, JSTaggedValue setter, bool flag); 1304514f5e3Sopenharmony_ci 1314514f5e3Sopenharmony_ci static JSTaggedValue LdObjByIndex(JSThread *thread, JSTaggedValue obj, uint32_t idx, bool callGetter, 1324514f5e3Sopenharmony_ci JSTaggedValue receiver); 1334514f5e3Sopenharmony_ci static JSTaggedValue StObjByIndex(JSThread *thread, JSTaggedValue obj, uint32_t idx, JSTaggedValue value); 1344514f5e3Sopenharmony_ci static JSTaggedValue LdObjByName(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, bool callGetter, 1354514f5e3Sopenharmony_ci JSTaggedValue receiver); 1364514f5e3Sopenharmony_ci static JSTaggedValue StObjByName(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, JSTaggedValue value); 1374514f5e3Sopenharmony_ci static JSTaggedValue LdObjByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, bool callGetter, 1384514f5e3Sopenharmony_ci JSTaggedValue receiver); 1394514f5e3Sopenharmony_ci static JSTaggedValue StObjByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue prop, JSTaggedValue value); 1404514f5e3Sopenharmony_ci static JSTaggedValue TryLdGlobalByNameFromGlobalProto(JSThread *thread, JSTaggedValue global, JSTaggedValue prop); 1414514f5e3Sopenharmony_ci static JSTaggedValue TryStGlobalByName(JSThread *thread, JSTaggedValue prop); 1424514f5e3Sopenharmony_ci static JSTaggedValue LdGlobalVarFromGlobalProto(JSThread *thread, JSTaggedValue global, JSTaggedValue prop); 1434514f5e3Sopenharmony_ci static JSTaggedValue StGlobalVar(JSThread *thread, JSTaggedValue prop, JSTaggedValue value); 1444514f5e3Sopenharmony_ci static JSTaggedValue StGlobalRecord(JSThread *thread, JSTaggedValue prop, JSTaggedValue value, bool isConst); 1454514f5e3Sopenharmony_ci static JSTaggedValue LdGlobalRecord(JSThread *thread, JSTaggedValue key); 1464514f5e3Sopenharmony_ci static JSTaggedValue TryUpdateGlobalRecord(JSThread *thread, JSTaggedValue prop, JSTaggedValue value); 1474514f5e3Sopenharmony_ci static JSTaggedValue StArraySpread(JSThread *thread, JSTaggedValue dst, JSTaggedValue index, JSTaggedValue src); 1484514f5e3Sopenharmony_ci 1494514f5e3Sopenharmony_ci static JSTaggedValue DefineFunc(JSThread *thread, JSTaggedValue constPool, uint16_t methodId, 1504514f5e3Sopenharmony_ci JSTaggedValue module, uint16_t length, JSTaggedValue envHandle, 1514514f5e3Sopenharmony_ci JSTaggedValue homeObject); 1524514f5e3Sopenharmony_ci static JSTaggedValue GetSuperConstructor(JSThread *thread, JSTaggedValue ctor); 1534514f5e3Sopenharmony_ci static JSTaggedValue SuperCall(JSThread *thread, JSTaggedValue func, JSTaggedValue newTarget, uint16_t firstVRegIdx, 1544514f5e3Sopenharmony_ci uint16_t length); 1554514f5e3Sopenharmony_ci static JSTaggedValue SuperCallSpread(JSThread *thread, JSTaggedValue func, JSTaggedValue newTarget, 1564514f5e3Sopenharmony_ci JSTaggedValue array); 1574514f5e3Sopenharmony_ci static JSTaggedValue SuperCallForwardAllArgs(JSThread *thread, JSTaggedType *sp, JSTaggedValue func, 1584514f5e3Sopenharmony_ci JSTaggedValue newTarget, uint32_t restNumArgs, uint32_t startIdx); 1594514f5e3Sopenharmony_ci static JSTaggedValue DynamicImport(JSThread *thread, JSTaggedValue specifier, JSTaggedValue func); 1604514f5e3Sopenharmony_ci static JSTaggedValue DefineMethod(JSThread *thread, Method *method, JSTaggedValue homeObject, 1614514f5e3Sopenharmony_ci uint16_t length, JSTaggedValue env, JSTaggedValue module); 1624514f5e3Sopenharmony_ci static JSTaggedValue LdSendableClass(JSThread *thread, JSTaggedValue env, uint16_t level); 1634514f5e3Sopenharmony_ci static JSTaggedValue LdSuperByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue key, JSTaggedValue thisFunc); 1644514f5e3Sopenharmony_ci static JSTaggedValue StSuperByValue(JSThread *thread, JSTaggedValue obj, JSTaggedValue key, JSTaggedValue value, 1654514f5e3Sopenharmony_ci JSTaggedValue thisFunc); 1664514f5e3Sopenharmony_ci static JSTaggedValue NotifyInlineCache(JSThread *thread, JSFunction *function); 1674514f5e3Sopenharmony_ci static JSTaggedValue ThrowReferenceError(JSThread *thread, JSTaggedValue prop, const char *desc); 1684514f5e3Sopenharmony_ci 1694514f5e3Sopenharmony_ci static JSTaggedValue ResolveClass(JSThread *thread, JSTaggedValue ctor, TaggedArray *literal, JSTaggedValue base, 1704514f5e3Sopenharmony_ci JSTaggedValue lexenv); 1714514f5e3Sopenharmony_ci static JSTaggedValue CloneClassFromTemplate(JSThread *thread, JSTaggedValue ctor, JSTaggedValue base, 1724514f5e3Sopenharmony_ci JSTaggedValue lexenv); 1734514f5e3Sopenharmony_ci static JSTaggedValue CreateClassWithBuffer(JSThread *thread, JSTaggedValue base, 1744514f5e3Sopenharmony_ci JSTaggedValue lexenv, JSTaggedValue constpool, 1754514f5e3Sopenharmony_ci uint16_t methodId, uint16_t literalId, JSTaggedValue module, 1764514f5e3Sopenharmony_ci JSTaggedValue length); 1774514f5e3Sopenharmony_ci static JSTaggedValue CreateSharedClass(JSThread *thread, JSTaggedValue base, 1784514f5e3Sopenharmony_ci JSTaggedValue constpool, uint16_t methodId, uint16_t literalId, 1794514f5e3Sopenharmony_ci uint16_t length, JSTaggedValue module); 1804514f5e3Sopenharmony_ci static JSTaggedValue SetClassConstructorLength(JSThread *thread, JSTaggedValue ctor, JSTaggedValue length); 1814514f5e3Sopenharmony_ci static JSTaggedValue GetModuleNamespace(JSThread *thread, JSTaggedValue localName); 1824514f5e3Sopenharmony_ci static JSTaggedValue GetModuleNamespace(JSThread *thread, int32_t index); 1834514f5e3Sopenharmony_ci static JSTaggedValue LdBigInt(JSThread *thread, JSTaggedValue numberBigInt); 1844514f5e3Sopenharmony_ci static JSTaggedValue ThrowTypeError(JSThread *thread, const char *message); 1854514f5e3Sopenharmony_ci static JSTaggedValue SetClassInheritanceRelationship(JSThread *thread, JSTaggedValue ctor, JSTaggedValue base); 1864514f5e3Sopenharmony_ci 1874514f5e3Sopenharmony_ci static JSTaggedValue AsyncGeneratorResolve(JSThread *thread, JSTaggedValue asyncFuncObj, 1884514f5e3Sopenharmony_ci const JSTaggedValue value, JSTaggedValue flag); 1894514f5e3Sopenharmony_ci static JSTaggedValue AsyncGeneratorReject(JSThread *thread, JSTaggedValue asyncFuncObj, 1904514f5e3Sopenharmony_ci const JSTaggedValue value); 1914514f5e3Sopenharmony_ci static JSTaggedValue CreateAsyncGeneratorObj(JSThread *thread, JSTaggedValue genFunc); 1924514f5e3Sopenharmony_ci 1934514f5e3Sopenharmony_ci static JSTaggedValue LdPatchVar(JSThread *thread, uint32_t index); 1944514f5e3Sopenharmony_ci static JSTaggedValue StPatchVar(JSThread *thread, uint32_t index, JSTaggedValue value); 1954514f5e3Sopenharmony_ci 1964514f5e3Sopenharmony_ci static JSTaggedValue NotifyConcurrentResult(JSThread *thread, JSTaggedValue result, JSTaggedValue hint); 1974514f5e3Sopenharmony_ci static JSTaggedValue DefineField(JSThread *thread, JSTaggedValue obj, JSTaggedValue propKey, JSTaggedValue value); 1984514f5e3Sopenharmony_ci static JSTaggedValue CreatePrivateProperty(JSThread *thread, JSTaggedValue lexicalEnv, 1994514f5e3Sopenharmony_ci uint32_t count, JSTaggedValue constpool, uint32_t literalId, JSTaggedValue module); 2004514f5e3Sopenharmony_ci static JSTaggedValue DefinePrivateProperty(JSThread *thread, JSTaggedValue lexicalEnv, 2014514f5e3Sopenharmony_ci uint32_t levelIndex, uint32_t slotIndex, JSTaggedValue obj, JSTaggedValue value); 2024514f5e3Sopenharmony_ci static JSTaggedValue LdPrivateProperty(JSThread *thread, JSTaggedValue lexicalEnv, 2034514f5e3Sopenharmony_ci uint32_t levelIndex, uint32_t slotIndex, JSTaggedValue obj); 2044514f5e3Sopenharmony_ci static JSTaggedValue StPrivateProperty(JSThread *thread, JSTaggedValue lexicalEnv, 2054514f5e3Sopenharmony_ci uint32_t levelIndex, uint32_t slotIndex, JSTaggedValue obj, JSTaggedValue value); 2064514f5e3Sopenharmony_ci static JSTaggedValue TestIn(JSThread *thread, JSTaggedValue lexicalEnv, 2074514f5e3Sopenharmony_ci uint32_t levelIndex, uint32_t slotIndex, JSTaggedValue obj); 2084514f5e3Sopenharmony_ci static JSTaggedValue UpdateAOTHClass(JSThread *thread, JSTaggedValue jshclass, 2094514f5e3Sopenharmony_ci JSTaggedValue newjshclass, JSTaggedValue key); 2104514f5e3Sopenharmony_ci 2114514f5e3Sopenharmony_ciprivate: 2124514f5e3Sopenharmony_ci static JSTaggedValue ThrowSyntaxError(JSThread *thread, const char *message); 2134514f5e3Sopenharmony_ci static JSTaggedValue GetCallSpreadArgs(JSThread *thread, JSTaggedValue array); 2144514f5e3Sopenharmony_ci}; 2154514f5e3Sopenharmony_ci} // namespace panda::ecmascript 2164514f5e3Sopenharmony_ci#endif // ECMASCRIPT_INTERPRETER_SLOW_RUNTIME_STUB_H 217