[JIT] export libark_jsruntime.so symbols for libark_jsoptimizer.so

ISSUE:https://gitee.com/openharmony/arkcompiler_ets_runtime/issues/I8UZN0

Change-Id: If5e76b9da12114f6b8717824427af4a6ceedea5c
Signed-off-by: xiaoweidong <xiaoweidong@huawei.com>
This commit is contained in:
xiaoweidong 2024-01-10 09:48:32 +08:00
parent 25a1ab932b
commit 0f4dd9fa1b
63 changed files with 471 additions and 203 deletions

View File

@ -29,6 +29,7 @@ group("ark_js_packages") {
is_ohos) {
deps += [
"ecmascript/compiler:ark_aot_compiler",
"ecmascript/compiler:libark_jsoptimizer",
"ecmascript/pgo_profiler/prof_dump:profdump",
]
}

View File

@ -20,6 +20,7 @@
#include <vector>
#include "libpandabase/utils/utf.h"
#include "ecmascript/common.h"
namespace panda::ecmascript::base::utf_helper {
static constexpr uint16_t DECODE_LEAD_LOW = 0xD800;
@ -82,8 +83,8 @@ Utf8Char ConvertUtf16ToUtf8(uint16_t d0, uint16_t d1, bool modify, bool isWriteB
size_t Utf16ToUtf8Size(const uint16_t *utf16, uint32_t length, bool modify = true);
size_t ConvertRegionUtf16ToUtf8(const uint16_t *utf16In, uint8_t *utf8Out, size_t utf16Len, size_t utf8Len,
size_t start, bool modify = true, bool isWriteBuffer = false);
size_t PUBLIC_API ConvertRegionUtf16ToUtf8(const uint16_t *utf16In, uint8_t *utf8Out, size_t utf16Len, size_t utf8Len,
size_t start, bool modify = true, bool isWriteBuffer = false);
std::pair<uint32_t, size_t> ConvertUtf8ToUtf16Pair(const uint8_t *data, bool combine = false);

View File

@ -24,7 +24,7 @@ public:
using FuncEntryIndexKey = std::pair<std::string, uint32_t>; // (compilefileName, MethodID)
AnFileInfo() = default;
~AnFileInfo() override = default;
void Save(const std::string &filename, Triple triple);
void PUBLIC_API Save(const std::string &filename, Triple triple);
void AddModuleDes(ModuleSectionDes &moduleDes)
{
des_.emplace_back(moduleDes);
@ -85,7 +85,7 @@ public:
return methodToEntryIndexMap_;
}
void GenerateMethodToEntryIndexMap();
void PUBLIC_API GenerateMethodToEntryIndexMap();
void Dump() const;

View File

@ -53,7 +53,7 @@ public:
void InitSnapshot(uint32_t compileFilesCount);
void StoreConstantPoolInfo(BytecodeInfoCollector *bcInfoCollector);
void PUBLIC_API StoreConstantPoolInfo(BytecodeInfoCollector *bcInfoCollector);
void ResolveSnapshotData(const CMap<std::pair<std::string, uint32_t>, uint32_t> &methodToEntryIndexMap)
{

View File

@ -85,7 +85,7 @@ protected:
};
#define DEFINE_INFO_CLASS(V, name) \
class name##Info final : public BaseSnapshotInfo { \
class PUBLIC_API name##Info final : public BaseSnapshotInfo { \
public: \
name##Info(EcmaVM *vm, \
const JSPandaFile *jsPandaFile, \
@ -111,8 +111,8 @@ public:
}
~SnapshotConstantPoolData() = default;
void Record(const BytecodeInstruction &bcIns, int32_t bcIndex,
const CString &recordName, const MethodLiteral *method);
void PUBLIC_API Record(const BytecodeInstruction &bcIns, int32_t bcIndex,
const CString &recordName, const MethodLiteral *method);
void StoreDataToGlobalData(SnapshotGlobalData &snapshotData, const std::set<uint32_t> &skippedMethods) const;

View File

@ -40,8 +40,8 @@ public:
data_.emplace_back(data);
}
void Resolve(JSThread *thread, const SnapshotGlobalData *globalData,
const CMap<std::pair<std::string, uint32_t>, uint32_t> &methodToEntryIndexMap);
void PUBLIC_API Resolve(JSThread *thread, const SnapshotGlobalData *globalData,
const CMap<std::pair<std::string, uint32_t>, uint32_t> &methodToEntryIndexMap);
protected:
JSHandle<ConstantPool> GetConstantPoolFromSnapshotData(JSThread *thread, const SnapshotGlobalData *globalData,

View File

@ -89,8 +89,8 @@ public:
uint32_t GetPGOExtendGTCount(const CString &recordName) const;
void Record(const BytecodeInstruction &bcIns, int32_t bcIndex,
const CString &recordName, const MethodLiteral *method);
void PUBLIC_API Record(const BytecodeInstruction &bcIns, int32_t bcIndex,
const CString &recordName, const MethodLiteral *method);
template <class Callback>
void IterateInfoAndType(uint32_t methodOffset, const Callback &cb) const

View File

@ -35,7 +35,7 @@ public:
return thread_;
}
void SetCurConstantPool(const JSPandaFile *jsPandaFile, uint32_t methodOffset);
void PUBLIC_API SetCurConstantPool(const JSPandaFile *jsPandaFile, uint32_t methodOffset);
JSHandle<JSTaggedValue> GetCurConstantPool() const
{
@ -43,7 +43,7 @@ public:
}
// snapshot
void InitAOTSnapshot(uint32_t compileFilesCount);
void PUBLIC_API InitAOTSnapshot(uint32_t compileFilesCount);
void GenArrayInfo();
void GenConstantIndexInfo();
@ -58,18 +58,18 @@ public:
}
// array
void RecordElements(panda_file::File::EntityId id, JSTaggedValue elements);
void PUBLIC_API RecordElements(panda_file::File::EntityId id, JSTaggedValue elements);
void RecordConstantIndex(uint32_t bcAbsoluteOffset, uint32_t index);
int GetElementsIndexByEntityId(panda_file::File::EntityId id);
int PUBLIC_API GetElementsIndexByEntityId(panda_file::File::EntityId id);
// hclass
void RecordHClass(ProfileType rootType, ProfileType childType, JSTaggedType hclass);
uint32_t GetHClassIndexByProfileType(ProfileTyper type) const;
uint32_t PUBLIC_API GetHClassIndexByProfileType(ProfileTyper type) const;
JSTaggedValue QueryHClass(ProfileType rootType, ProfileType childType) const;
JSTaggedValue PUBLIC_API QueryHClass(ProfileType rootType, ProfileType childType) const;
ElementsKind QueryElementKind(ProfileType rootType);
inline ProfileType GetRootIdByLocation(const PGOTypeLocation &loc)

View File

@ -87,10 +87,10 @@ private:
class PGOTypeParser {
public:
explicit PGOTypeParser(const PGOProfilerDecoder &decoder, PGOTypeManager *ptManager);
explicit PUBLIC_API PGOTypeParser(const PGOProfilerDecoder &decoder, PGOTypeManager *ptManager);
~PGOTypeParser() = default;
void CreatePGOType(BytecodeInfoCollector &collector);
void PUBLIC_API CreatePGOType(BytecodeInfoCollector &collector);
private:
const PGOProfilerDecoder &decoder_;

View File

@ -29,14 +29,15 @@ using PGORWOpType = pgo::PGORWOpType;
class PGOTypeRecorder {
public:
explicit PGOTypeRecorder(const PGOProfilerDecoder &decoder);
PGOTypeRecorder(const PGOProfilerDecoder &decoder, const JSPandaFile *jsPandaFile, uint32_t methodOffset);
PUBLIC_API PGOTypeRecorder(const PGOProfilerDecoder &decoder,
const JSPandaFile *jsPandaFile, uint32_t methodOffset);
~PGOTypeRecorder() = default;
std::vector<ElementsKind> GetElementsKindsForUser(int32_t offset) const;
ElementsKind GetElementsKindForCreater(int32_t offset) const;
uint32_t GetElementsLength(int32_t offset) const;
std::vector<ElementsKind> PUBLIC_API GetElementsKindsForUser(int32_t offset) const;
ElementsKind PUBLIC_API GetElementsKindForCreater(int32_t offset) const;
uint32_t PUBLIC_API GetElementsLength(int32_t offset) const;
PGOTypeRef GetPGOType(int32_t offset) const;
PGOTypeRef PUBLIC_API GetPGOType(int32_t offset) const;
inline PGODefineOpType GetPGODefOpType(int32_t bcOffset) const
{

View File

@ -123,9 +123,9 @@ public:
void CollectDeoptBundleVec(std::vector<kungfu::ARKDeopt>& deoptBundle);
JSTaggedType ConstructAsmInterpretFrame();
void UpdateAndDumpDeoptInfo(kungfu::DeoptType type);
static std::string DisplayItems(kungfu::DeoptType type);
static int32_t EncodeDeoptVregIndex(int32_t index, size_t depth, size_t shift);
static size_t ComputeShift(size_t depth);
static PUBLIC_API std::string DisplayItems(kungfu::DeoptType type);
static PUBLIC_API int32_t EncodeDeoptVregIndex(int32_t index, size_t depth, size_t shift);
static PUBLIC_API size_t ComputeShift(size_t depth);
static int32_t DecodeVregIndex(OffsetType id, size_t shift);
static size_t DecodeDeoptDepth(OffsetType id, size_t shift);
JSThread *GetThread() const

View File

@ -142,7 +142,7 @@ public:
return ptManager_;
}
void SetTSManager(TSManager *set);
void PUBLIC_API SetTSManager(TSManager *set);
ARK_INLINE JSThread *GetJSThread() const
{
@ -257,9 +257,9 @@ public:
bool HasCachedConstpool(const JSPandaFile *jsPandaFile) const;
JSTaggedValue FindConstpool(const JSPandaFile *jsPandaFile, int32_t index);
JSTaggedValue PUBLIC_API FindConstpool(const JSPandaFile *jsPandaFile, int32_t index);
// For new version instruction.
JSTaggedValue FindConstpool(const JSPandaFile *jsPandaFile, panda_file::File::EntityId id);
JSTaggedValue PUBLIC_API FindConstpool(const JSPandaFile *jsPandaFile, panda_file::File::EntityId id);
JSTaggedValue FindConstpoolWithAOT(const JSPandaFile *jsPandaFile, int32_t index);
std::optional<std::reference_wrapper<CMap<int32_t, JSTaggedValue>>> FindConstpools(
const JSPandaFile *jsPandaFile);

View File

@ -354,9 +354,10 @@ private:
// Compares string1 + string2 by bytes, It doesn't check canonical unicode equivalence.
bool EqualToSplicedString(const EcmaString *str1, const EcmaString *str2);
// Compares strings by bytes, It doesn't check canonical unicode equivalence.
static bool StringsAreEqual(const EcmaVM *vm, const JSHandle<EcmaString> &str1, const JSHandle<EcmaString> &str2);
static PUBLIC_API bool StringsAreEqual(const EcmaVM *vm, const JSHandle<EcmaString> &str1,
const JSHandle<EcmaString> &str2);
// Compares strings by bytes, It doesn't check canonical unicode equivalence.
static bool StringsAreEqual(EcmaString *str1, EcmaString *str2);
static PUBLIC_API bool StringsAreEqual(EcmaString *str1, EcmaString *str2);
// Two strings have the same type of utf encoding format.
static bool StringsAreEqualDiffUtfEncoding(EcmaString *str1, EcmaString *str2);
static bool StringsAreEqualDiffUtfEncoding(const FlatStringInfo &str1, const FlatStringInfo &str2);
@ -601,13 +602,13 @@ private:
static bool CanBeCompressed(const uint16_t *utf16Data, uint32_t utf16Len);
static bool CanBeCompressed(const EcmaString *string);
bool ToElementIndex(uint32_t *index);
bool PUBLIC_API ToElementIndex(uint32_t *index);
bool ToInt(int32_t *index, bool *negative);
bool ToUInt64FromLoopStart(uint64_t *index, uint32_t loopStart, const uint8_t *data);
bool ToTypedArrayIndex(uint32_t *index);
bool PUBLIC_API ToTypedArrayIndex(uint32_t *index);
template<bool isLower>
static EcmaString *ConvertCase(const EcmaVM *vm, const JSHandle<EcmaString> &src);
@ -697,9 +698,9 @@ private:
template <typename Char>
static void WriteToFlat(EcmaString *src, Char *buf, uint32_t maxLength);
static const uint8_t *GetUtf8DataFlat(const EcmaString *src, CVector<uint8_t> &buf);
static const uint8_t *PUBLIC_API GetUtf8DataFlat(const EcmaString *src, CVector<uint8_t> &buf);
static const uint16_t *GetUtf16DataFlat(const EcmaString *src, CVector<uint16_t> &buf);
static const uint16_t *PUBLIC_API GetUtf16DataFlat(const EcmaString *src, CVector<uint16_t> &buf);
// string must be not flat
static EcmaString *SlowFlatten(const EcmaVM *vm, const JSHandle<EcmaString> &string, MemSpaceType type);
@ -1379,7 +1380,7 @@ public:
// not change string data structure.
// if string is not flat, this func has low efficiency.
bool ToTypedArrayIndex(uint32_t *index)
bool PUBLIC_API ToTypedArrayIndex(uint32_t *index)
{
return string_->ToTypedArrayIndex(index);
}

View File

@ -134,8 +134,8 @@ public:
void InitializePGOProfiler();
void ResetPGOProfiler();
bool IsEnablePGOProfiler() const;
bool IsEnableElementsKind() const;
bool PUBLIC_API IsEnablePGOProfiler() const;
bool PUBLIC_API IsEnableElementsKind() const;
bool Initialize();
@ -159,7 +159,7 @@ public:
return ecmaParamConfiguration_;
}
JSHandle<GlobalEnv> GetGlobalEnv() const;
JSHandle<GlobalEnv> PUBLIC_API GetGlobalEnv() const;
static EcmaVM *ConstCast(const EcmaVM *vm)
{

View File

@ -25,7 +25,7 @@ namespace ecmascript {
// ElementAccessor intends to replace all .GetElements and share the common following methods.
class ElementAccessor {
public:
static JSTaggedValue Get(JSHandle<JSObject> receiver, uint32_t idx);
static JSTaggedValue PUBLIC_API Get(JSHandle<JSObject> receiver, uint32_t idx);
static JSTaggedValue Get(JSObject *receiver, uint32_t idx);
template<typename T>
@ -43,7 +43,7 @@ public:
static uint32_t GetElementsLength(JSObject *receiver);
static JSTaggedValue GetTaggedValueWithElementsKind(JSTaggedType rawValue, ElementsKind kind);
static JSTaggedType ConvertTaggedValueWithElementsKind(JSTaggedValue rawValue, ElementsKind kind);
static JSTaggedType PUBLIC_API ConvertTaggedValueWithElementsKind(JSTaggedValue rawValue, ElementsKind kind);
private:
};
} // namespace ecmascript

View File

@ -38,7 +38,7 @@ enum class ElementsKind : uint8_t {
DICTIONARY = HOLE_TAGGED,
};
class Elements {
class PUBLIC_API Elements {
public:
static CMap<ElementsKind, ConstantIndex> InitializeHClassMap();

View File

@ -64,7 +64,7 @@ public:
static JSTaggedValue GetIteratorObj(JSThread *thread, const JSHandle<JSAPIArrayList> &obj);
JSTaggedValue Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
JSTaggedValue PUBLIC_API Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
JSTaggedValue Get(JSThread *thread, const uint32_t index);
bool Has(const JSTaggedValue value) const;

View File

@ -67,7 +67,7 @@ public:
JSTaggedValue Get(const uint32_t index);
JSTaggedValue Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
JSTaggedValue PUBLIC_API Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
uint32_t GetSize() const;

View File

@ -35,8 +35,8 @@ public:
static void AddFirst(JSThread *thread, const JSHandle<JSAPILinkedList> &list, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue Insert(JSThread *thread, const JSHandle<JSAPILinkedList> &list,
const JSHandle<JSTaggedValue> &value, const int index);
static JSTaggedValue Set(JSThread *thread, const JSHandle<JSAPILinkedList> &list,
const int index, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue PUBLIC_API Set(JSThread *thread, const JSHandle<JSAPILinkedList> &list,
const int index, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue ConvertToArray(const JSThread *thread, const JSHandle<JSAPILinkedList> &list);
static JSHandle<TaggedArray> OwnKeys(JSThread *thread, const JSHandle<JSAPILinkedList> &list);
static bool GetOwnProperty(JSThread *thread, const JSHandle<JSAPILinkedList> &list,

View File

@ -33,8 +33,8 @@ public:
static void Add(JSThread *thread, const JSHandle<JSAPIList> &list, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue Insert(JSThread *thread, const JSHandle<JSAPIList> &list,
const JSHandle<JSTaggedValue> &value, const int index);
static JSTaggedValue Set(JSThread *thread, const JSHandle<JSAPIList> &list,
const int index, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue PUBLIC_API Set(JSThread *thread, const JSHandle<JSAPIList> &list,
const int index, const JSHandle<JSTaggedValue> &value);
static JSTaggedValue ReplaceAllElements(JSThread *thread, const JSHandle<JSTaggedValue> &thisHandle,
const JSHandle<JSTaggedValue> &callbackFn,
const JSHandle<JSTaggedValue> &thisArg);

View File

@ -44,8 +44,8 @@ public:
static bool SetProperty(JSThread *thread, const JSHandle<JSAPIPlainArray> &obj,
const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value);
static JSTaggedValue Set(JSThread *thread, const JSHandle<JSAPIPlainArray> &obj,
const uint32_t index, JSTaggedValue value);
static JSTaggedValue PUBLIC_API Set(JSThread *thread, const JSHandle<JSAPIPlainArray> &obj,
const uint32_t index, JSTaggedValue value);
JSTaggedValue RemoveAt(JSThread *thread, JSTaggedValue index);
JSTaggedValue GetIndexOfKey(int32_t key);
JSTaggedValue GetIndexOfValue(JSTaggedValue value);

View File

@ -35,7 +35,7 @@ public:
static void ForEach(JSThread *thread, const JSHandle<JSAPIQueue> &queue, const JSHandle<JSTaggedValue> &value);
JSTaggedValue Get(JSThread *thread, const uint32_t index);
JSTaggedValue Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
JSTaggedValue PUBLIC_API Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
bool Has(JSTaggedValue value) const;
static JSHandle<TaggedArray> OwnKeys(JSThread *thread, const JSHandle<JSAPIQueue> &obj);

View File

@ -59,7 +59,7 @@ public:
JSTaggedValue Get(const uint32_t index);
JSTaggedValue Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
JSTaggedValue PUBLIC_API Set(JSThread *thread, const uint32_t index, JSTaggedValue value);
static constexpr size_t TOP_OFFSET = JSObject::SIZE;
ACCESSORS_PRIMITIVE_FIELD(Top, int, TOP_OFFSET, LAST_OFFSET)

View File

@ -78,7 +78,7 @@ public:
static JSTaggedValue Get(JSThread *thread, const JSHandle<JSAPIVector> &vector, int32_t index);
JSTaggedValue Set(JSThread *thread, int32_t index, const JSTaggedValue &value);
JSTaggedValue PUBLIC_API Set(JSThread *thread, int32_t index, const JSTaggedValue &value);
bool Has(const JSTaggedValue &value) const;

View File

@ -30,8 +30,8 @@ public:
CAST_CHECK(JSArray, IsJSArray);
static JSHandle<JSTaggedValue> ArrayCreate(JSThread *thread, JSTaggedNumber length,
ArrayMode mode = ArrayMode::UNDEFINED);
static PUBLIC_API JSHandle<JSTaggedValue> ArrayCreate(JSThread *thread, JSTaggedNumber length,
ArrayMode mode = ArrayMode::UNDEFINED);
static JSHandle<JSTaggedValue> ArrayCreate(JSThread *thread, JSTaggedNumber length,
const JSHandle<JSTaggedValue> &newTarget,
ArrayMode mode = ArrayMode::UNDEFINED);
@ -105,7 +105,7 @@ public:
static bool IncludeInSortedValue(JSThread *thread, const JSHandle<JSTaggedValue> &obj,
const JSHandle<JSTaggedValue> &value);
static JSHandle<TaggedArray> ToTaggedArray(JSThread *thread, const JSHandle<JSTaggedValue> &obj);
static void CheckAndCopyArray(const JSThread *thread, JSHandle<JSArray> obj);
static void PUBLIC_API CheckAndCopyArray(const JSThread *thread, JSHandle<JSArray> obj);
static void SetCapacity(JSThread *thread, const JSHandle<JSObject> &array, uint32_t oldLen, uint32_t newLen,
bool isNew = false);
static void SortElements(JSThread *thread, const JSHandle<TaggedArray> &elements,

View File

@ -47,7 +47,7 @@ public:
static JSHandle<BigInt> CreateBigint(JSThread *thread, uint32_t size);
static bool Equal(const JSTaggedValue &x, const JSTaggedValue &y);
static bool SameValue(const JSTaggedValue &x, const JSTaggedValue &y);
static PUBLIC_API bool SameValue(const JSTaggedValue &x, const JSTaggedValue &y);
static bool SameValueZero(const JSTaggedValue &x, const JSTaggedValue &y);
static JSHandle<BigInt> BitwiseOp(JSThread *thread, Operate op, JSHandle<BigInt> x, JSHandle<BigInt> y);

View File

@ -247,7 +247,7 @@ public:
static void InitializeJSFunction(JSThread *thread, const JSHandle<JSFunction> &func,
FunctionKind kind = FunctionKind::NORMAL_FUNCTION);
static JSHClass *GetOrCreateInitialJSHClass(JSThread *thread, const JSHandle<JSFunction> &fun);
static JSHClass *PUBLIC_API GetOrCreateInitialJSHClass(JSThread *thread, const JSHandle<JSFunction> &fun);
static JSHandle<JSHClass> GetInstanceJSHClass(JSThread *thread, JSHandle<JSFunction> constructor,
JSHandle<JSTaggedValue> newTarget);

View File

@ -402,8 +402,8 @@ public:
static JSHandle<JSHClass> SetPropertyOfObjHClass(const JSThread *thread, JSHandle<JSHClass> &jshclass,
const JSHandle<JSTaggedValue> &key,
const PropertyAttributes &attr);
static void AddProperty(const JSThread *thread, const JSHandle<JSObject> &obj, const JSHandle<JSTaggedValue> &key,
const PropertyAttributes &attr);
static void PUBLIC_API AddProperty(const JSThread *thread, const JSHandle<JSObject> &obj,
const JSHandle<JSTaggedValue> &key, const PropertyAttributes &attr);
static void TryRestoreElementsKind(const JSThread *thread, JSHandle<JSHClass> newJsHClass,
const JSHandle<JSObject> &obj);
@ -421,11 +421,12 @@ public:
static void TransitionForElementsKindChange(const JSThread *thread, const JSHandle<JSObject> &receiver,
const ElementsKind newKind);
static JSHClass* GetInitialArrayHClassWithElementsKind(const JSThread *thread, const ElementsKind kind);
static void TransitToElementsKind(const JSThread *thread, const JSHandle<JSArray> &array,
ElementsKind newKind = ElementsKind::NONE);
static bool TransitToElementsKind(const JSThread *thread, const JSHandle<JSObject> &object,
const JSHandle<JSTaggedValue> &value, ElementsKind kind = ElementsKind::NONE);
static std::tuple<bool, bool, JSTaggedValue> ConvertOrTransitionWithRep(const JSThread *thread,
static void PUBLIC_API TransitToElementsKind(const JSThread *thread, const JSHandle<JSArray> &array,
ElementsKind newKind = ElementsKind::NONE);
static bool PUBLIC_API TransitToElementsKind(const JSThread *thread, const JSHandle<JSObject> &object,
const JSHandle<JSTaggedValue> &value,
ElementsKind kind = ElementsKind::NONE);
static std::tuple<bool, bool, JSTaggedValue> PUBLIC_API ConvertOrTransitionWithRep(const JSThread *thread,
const JSHandle<JSObject> &receiver, const JSHandle<JSTaggedValue> &key, const JSHandle<JSTaggedValue> &value,
PropertyAttributes &attr);
@ -461,7 +462,7 @@ public:
void InitTSInheritInfo(const JSThread *thread);
bool HasTSSubtyping() const;
bool PUBLIC_API HasTSSubtyping() const;
bool IsTSIHCWithInheritInfo() const;
@ -1788,12 +1789,14 @@ public:
inline static int FindPropertyEntry(const JSThread *thread, JSHClass *hclass, JSTaggedValue key);
static PropertyLookupResult LookupPropertyInAotHClass(const JSThread *thread, JSHClass *hclass, JSTaggedValue key);
static PropertyLookupResult LookupPropertyInPGOHClass(const JSThread *thread, JSHClass *hclass, JSTaggedValue key);
static PropertyLookupResult LookupPropertyInBuiltinPrototypeHClass(const JSThread *thread, JSHClass *hclass,
JSTaggedValue key);
static PropertyLookupResult LookupPropertyInBuiltinHClass(const JSThread *thread, JSHClass *hclass,
JSTaggedValue key);
static PUBLIC_API PropertyLookupResult LookupPropertyInAotHClass(const JSThread *thread, JSHClass *hclass,
JSTaggedValue key);
static PUBLIC_API PropertyLookupResult LookupPropertyInPGOHClass(const JSThread *thread, JSHClass *hclass,
JSTaggedValue key);
static PUBLIC_API PropertyLookupResult LookupPropertyInBuiltinPrototypeHClass(const JSThread *thread,
JSHClass *hclass, JSTaggedValue key);
static PUBLIC_API PropertyLookupResult LookupPropertyInBuiltinHClass(const JSThread *thread, JSHClass *hclass,
JSTaggedValue key);
static constexpr size_t PROTOTYPE_OFFSET = TaggedObjectSize();
ACCESSORS(Proto, PROTOTYPE_OFFSET, LAYOUT_OFFSET);
@ -1810,7 +1813,7 @@ public:
DEFINE_ALIGN_SIZE(LAST_OFFSET);
void SetPrototype(const JSThread *thread, JSTaggedValue proto);
void SetPrototype(const JSThread *thread, const JSHandle<JSTaggedValue> &proto);
void PUBLIC_API SetPrototype(const JSThread *thread, const JSHandle<JSTaggedValue> &proto);
void ShouldUpdateProtoClass(const JSThread *thread, const JSHandle<JSTaggedValue> &proto);
inline JSTaggedValue GetPrototype() const
{

View File

@ -445,7 +445,7 @@ public:
static bool CreateDataPropertyOrThrow(JSThread *thread, const JSHandle<JSObject> &obj, uint32_t index,
const JSHandle<JSTaggedValue> &value);
static JSHandle<TaggedArray> EnumerableOwnNames(JSThread *thread, const JSHandle<JSObject> &obj);
static JSHandle<TaggedArray> PUBLIC_API EnumerableOwnNames(JSThread *thread, const JSHandle<JSObject> &obj);
// 7.3.23 EnumerableOwnPropertyNames ( O, kind )
static JSHandle<TaggedArray> EnumerableOwnPropertyNames(JSThread *thread, const JSHandle<JSObject> &obj,
@ -511,8 +511,8 @@ public:
const PropertyDescriptor &current,
SCheckMode sCheckMode = SCheckMode::CHECK);
static OperationResult GetProperty(JSThread *thread, const JSHandle<JSObject> &obj,
const JSHandle<JSTaggedValue> &key);
static OperationResult PUBLIC_API GetProperty(JSThread *thread, const JSHandle<JSObject> &obj,
const JSHandle<JSTaggedValue> &key);
static OperationResult GetProperty(JSThread *thread, const JSHandle<JSTaggedValue> &obj,
const JSHandle<JSTaggedValue> &key, const JSHandle<JSTaggedValue> &receiver);
@ -580,8 +580,9 @@ public:
static JSTaggedValue CallGetter(JSThread *thread, const AccessorData *accessor,
const JSHandle<JSTaggedValue> &receiver);
static bool CallSetter(JSThread *thread, const AccessorData &accessor, const JSHandle<JSTaggedValue> &receiver,
const JSHandle<JSTaggedValue> &value, bool mayThrow = false);
static bool PUBLIC_API CallSetter(JSThread *thread, const AccessorData &accessor,
const JSHandle<JSTaggedValue> &receiver,
const JSHandle<JSTaggedValue> &value, bool mayThrow = false);
void FillElementsWithHoles(const JSThread *thread, uint32_t start, uint32_t end);
@ -621,15 +622,16 @@ public:
bool IsPropertiesDict() const;
bool IsTypedArray() const;
static void DefinePropertyByLiteral(JSThread *thread, const JSHandle<JSObject> &obj,
const JSHandle<JSTaggedValue> &key, const JSHandle<JSTaggedValue> &value,
bool useForClass = false);
static PUBLIC_API void DefinePropertyByLiteral(JSThread *thread, const JSHandle<JSObject> &obj,
const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value,
bool useForClass = false);
static void DefineSetter(JSThread *thread, const JSHandle<JSTaggedValue> &obj, const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value);
static void DefineGetter(JSThread *thread, const JSHandle<JSTaggedValue> &obj, const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value);
static JSHandle<JSObject> CreateObjectFromProperties(const JSThread *thread,
const JSHandle<TaggedArray> &properties,
static PUBLIC_API JSHandle<JSObject> CreateObjectFromProperties(const JSThread *thread,
const JSHandle<TaggedArray> &properties,
JSTaggedValue ihc = JSTaggedValue::Undefined());
static JSHandle<JSObject> CreateObjectFromProperties(const JSThread *thread,
const JSHandle<TaggedArray> &properties,
@ -687,7 +689,8 @@ public:
DECL_DUMP()
static const CString ExtractConstructorAndRecordName(JSThread *thread, TaggedObject *obj);
static JSHandle<NameDictionary> TransitionToDictionary(const JSThread *thread, const JSHandle<JSObject> &receiver);
static JSHandle<NameDictionary> PUBLIC_API TransitionToDictionary(const JSThread *thread,
const JSHandle<JSObject> &receiver);
static inline std::pair<bool, JSTaggedValue> ConvertValueWithRep(PropertyAttributes attr, JSTaggedValue value);
@ -743,7 +746,7 @@ private:
friend class RuntimeStubs;
PropertyBox* GetGlobalPropertyBox(JSTaggedValue key);
static bool AddElementInternal(
static bool PUBLIC_API AddElementInternal(
JSThread *thread, const JSHandle<JSObject> &receiver, uint32_t index, const JSHandle<JSTaggedValue> &value,
PropertyAttributes attr = PropertyAttributes(PropertyAttributes::GetDefaultAttributes()));

View File

@ -86,7 +86,7 @@ public:
// ES6 9.5.14 [[Construct]] ( argumentsList, newTarget)
static JSTaggedValue ConstructInternal(EcmaRuntimeCallInfo *info);
bool IsArray(JSThread *thread) const;
bool PUBLIC_API IsArray(JSThread *thread) const;
static constexpr size_t TARGET_OFFSET = ECMAObject::SIZE;
ACCESSORS(Target, TARGET_OFFSET, HANDLER_OFFSET)

View File

@ -363,7 +363,7 @@ public:
static int8_t ToInt8(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static uint8_t ToUint8(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static uint8_t ToUint8Clamp(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static JSHandle<EcmaString> ToString(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static JSHandle<EcmaString> PUBLIC_API ToString(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static JSHandle<EcmaString> ToString(JSThread *thread, JSTaggedValue val);
static JSHandle<JSObject> ToObject(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
static JSHandle<JSTaggedValue> ToPropertyKey(JSThread *thread, const JSHandle<JSTaggedValue> &tagged);
@ -415,8 +415,9 @@ public:
static bool SetProperty(JSThread *thread, const JSHandle<JSTaggedValue> &obj, uint32_t key,
const JSHandle<JSTaggedValue> &value, bool mayThrow = false);
static bool SetProperty(JSThread *thread, const JSHandle<JSTaggedValue> &obj, const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value, bool mayThrow = false);
static bool PUBLIC_API SetProperty(JSThread *thread, const JSHandle<JSTaggedValue> &obj,
const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value, bool mayThrow = false);
static bool SetProperty(JSThread *thread, const JSHandle<JSTaggedValue> &obj, const JSHandle<JSTaggedValue> &key,
const JSHandle<JSTaggedValue> &value, const JSHandle<JSTaggedValue> &receiver,
@ -484,7 +485,7 @@ public:
bool IsCOWArray() const;
bool IsMutantTaggedArray() const;
bool IsJSArray() const;
bool IsJSCOWArray() const;
bool PUBLIC_API IsJSCOWArray() const;
bool IsStableJSArray(JSThread *thread) const;
bool IsStableJSArguments(JSThread *thread) const;
bool HasStableElements(JSThread *thread) const;

View File

@ -193,7 +193,7 @@ public:
return &weakNodeNativeFinalizeCallbacks_;
}
void SetException(JSTaggedValue exception);
void PUBLIC_API SetException(JSTaggedValue exception);
JSTaggedValue GetException() const
{
@ -245,7 +245,7 @@ public:
JSHClass *GetBuiltinHClass(BuiltinTypeId type) const;
JSHClass *GetBuiltinPrototypeHClass(BuiltinTypeId type) const;
PUBLIC_API JSHClass *GetBuiltinPrototypeHClass(BuiltinTypeId type) const;
static size_t GetBuiltinHClassOffset(BuiltinTypeId, bool isArch32);
@ -331,7 +331,7 @@ public:
void IterateWeakEcmaGlobalStorage(const WeakRootVisitor &visitor);
PropertiesCache *GetPropertiesCache() const;
PUBLIC_API PropertiesCache *GetPropertiesCache() const;
MarkStatus GetMarkStatus() const
{

View File

@ -93,8 +93,8 @@ public:
static bool IsValidIntegerIndex(const JSHandle<JSTaggedValue> &typedArray, JSTaggedValue index);
static JSTaggedValue FastGetPropertyByIndex(JSThread *thread, const JSTaggedValue typedarray, uint32_t index,
JSType jsType);
static JSTaggedValue FastSetPropertyByIndex(JSThread *thread, const JSTaggedValue typedarray, uint32_t index,
JSTaggedValue value, JSType jsType);
static JSTaggedValue PUBLIC_API FastSetPropertyByIndex(JSThread *thread, const JSTaggedValue typedarray,
uint32_t index, JSTaggedValue value, JSType jsType);
// only use in TypeArray fast set property
static JSTaggedNumber NonEcmaObjectToNumber(JSThread *thread, const JSTaggedValue tagged);
static JSTaggedValue GetOffHeapBuffer(JSThread *thread, JSHandle<JSTypedArray> &typedArray);

View File

@ -113,7 +113,7 @@ public:
const JSHandle<JSTaggedValue> &ihclass,
const JSHandle<JSHClass> &constructorHClass);
static bool MatchTrackType(TrackType trackType, JSTaggedValue value);
static bool PUBLIC_API MatchTrackType(TrackType trackType, JSTaggedValue value);
private:
static JSHandle<NameDictionary> BuildDictionaryProperties(JSThread *thread, const JSHandle<JSObject> &object,
JSHandle<TaggedArray> &keys,

View File

@ -92,7 +92,7 @@ public:
return desc_;
}
CString GetNormalizedFileDesc() const;
CString PUBLIC_API GetNormalizedFileDesc() const;
void SetHapPath(const CString &hapPath)
{

View File

@ -35,16 +35,17 @@ public:
static void ExtractObjectDatas(JSThread *thread, const JSPandaFile *jsPandaFile, size_t index,
JSMutableHandle<TaggedArray> elements, JSMutableHandle<TaggedArray> properties,
JSHandle<ConstantPool> constpool, const CString &entryPoint = "");
static void ExtractObjectDatas(JSThread *thread, const JSPandaFile *jsPandaFile, EntityId id,
JSMutableHandle<TaggedArray> elements, JSMutableHandle<TaggedArray> properties,
JSHandle<ConstantPool> constpool, const CString &entryPoint = "",
bool isLoadedAOT = false,
JSHandle<AOTLiteralInfo> entryIndexes = JSHandle<AOTLiteralInfo>());
static PUBLIC_API void ExtractObjectDatas(JSThread *thread, const JSPandaFile *jsPandaFile, EntityId id,
JSMutableHandle<TaggedArray> elements,
JSMutableHandle<TaggedArray> properties,
JSHandle<ConstantPool> constpool, const CString &entryPoint = "",
bool isLoadedAOT = false,
JSHandle<AOTLiteralInfo> entryIndexes = JSHandle<AOTLiteralInfo>());
static JSHandle<TaggedArray> GetDatasIgnoreType(JSThread *thread, const JSPandaFile *jsPandaFile, size_t index,
JSHandle<ConstantPool> constpool, const CString &entryPoint = "");
static JSHandle<TaggedArray> GetDatasIgnoreType(JSThread *thread, const JSPandaFile *jsPandaFile, EntityId id,
JSHandle<ConstantPool> constpool, const CString &entryPoint = "",
static PUBLIC_API JSHandle<TaggedArray> GetDatasIgnoreType(JSThread *thread, const JSPandaFile *jsPandaFile,
EntityId id, JSHandle<ConstantPool> constpool, const CString &entryPoint = "",
bool isLoadedAOT = false, JSHandle<AOTLiteralInfo> entryIndexes = JSHandle<AOTLiteralInfo>(),
ElementsKind *newKind = nullptr, ClassKind classKind = ClassKind::NON_SENDABLE);
static JSHandle<TaggedArray> GetDatasIgnoreTypeForClass(JSThread *thread, const JSPandaFile *jsPandaFile,

View File

@ -38,7 +38,7 @@ public:
static constexpr uint8_t INVALID_IC_SLOT = 0xFFU;
static constexpr uint16_t MAX_SLOT_SIZE = 0xFFFFU;
explicit MethodLiteral(EntityId methodId);
PUBLIC_API explicit MethodLiteral(EntityId methodId);
MethodLiteral() = delete;
~MethodLiteral() = default;
@ -72,7 +72,7 @@ public:
callField_ = IsAotCodeBit::Update(callField_, isCompiled);
}
void Initialize(const JSPandaFile *jsPandaFile);
void PUBLIC_API Initialize(const JSPandaFile *jsPandaFile);
bool HaveThisWithCallField() const
{
@ -320,8 +320,8 @@ public:
static std::string PUBLIC_API ParseFunctionName(const JSPandaFile *jsPandaFile, EntityId methodId);
static CString PUBLIC_API ParseFunctionNameToCString(const JSPandaFile *jsPandaFile, EntityId methodId);
static uint32_t GetCodeSize(const JSPandaFile *jsPandaFile, EntityId methodId);
static CString GetRecordName(const JSPandaFile *jsPandaFile, EntityId methodId);
static uint32_t PUBLIC_API GetCodeSize(const JSPandaFile *jsPandaFile, EntityId methodId);
static CString PUBLIC_API GetRecordName(const JSPandaFile *jsPandaFile, EntityId methodId);
static const char PUBLIC_API *GetRecordNameWithSymbol(const JSPandaFile *jsPandaFile, EntityId methodId);
const uint8_t *GetBytecodeArray() const

View File

@ -23,7 +23,7 @@ class TypeLiteralExtractor {
using TypeLiteralValue = std::variant<uint32_t, CString>;
public:
explicit TypeLiteralExtractor(const JSPandaFile *jsPandaFile, const uint32_t typeOffset);
explicit PUBLIC_API TypeLiteralExtractor(const JSPandaFile *jsPandaFile, const uint32_t typeOffset);
~TypeLiteralExtractor() = default;
NO_COPY_SEMANTIC(TypeLiteralExtractor);
NO_MOVE_SEMANTIC(TypeLiteralExtractor);
@ -166,7 +166,7 @@ class TypeAnnotationExtractor {
using LiteralTag = panda_file::LiteralTag;
public:
explicit TypeAnnotationExtractor(const JSPandaFile *jsPandaFile, const uint32_t methodOffset);
explicit PUBLIC_API TypeAnnotationExtractor(const JSPandaFile *jsPandaFile, const uint32_t methodOffset);
~TypeAnnotationExtractor() = default;
NO_COPY_SEMANTIC(TypeAnnotationExtractor);
NO_MOVE_SEMANTIC(TypeAnnotationExtractor);
@ -191,7 +191,7 @@ public:
return isNamespace_;
}
void Print() const;
void PUBLIC_API Print() const;
private:
static constexpr const char *TYPE_ANNO_ELEMENT_NAME = "_TypeOfInstruction";

View File

@ -53,10 +53,11 @@ float CStringToF(const CString &str);
double CStringToD(const CString &str);
CString ConvertToString(const std::string &str);
std::string ConvertToStdString(const CString &str);
std::string PUBLIC_API ConvertToStdString(const CString &str);
// '\u0000' is skip according to holdZero
CString ConvertToString(const ecmascript::EcmaString *s, StringConvertedUsage usage = StringConvertedUsage::PRINT);
CString PUBLIC_API ConvertToString(const ecmascript::EcmaString *s,
StringConvertedUsage usage = StringConvertedUsage::PRINT);
CString ConvertToString(ecmascript::JSTaggedValue key);
template<class T>

View File

@ -42,11 +42,11 @@ public:
int Insert(uint32_t position, size_t len);
int Emit(const uint8_t *data, size_t len);
int PUBLIC_API Emit(const uint8_t *data, size_t len);
int EmitSelf(size_t offset, size_t len);
int EmitChar(uint8_t c);
int PUBLIC_API EmitChar(uint8_t c);
int EmitStr(const char *str);

View File

@ -93,7 +93,7 @@ public:
BUILTINS_STUB_START = Message_StringCharCodeAt,
BUILTINS_STUB_LAST = Message_ArrayConstructor,
};
static const std::string& GetMessageString(int id);
static const std::string& PUBLIC_API GetMessageString(int id);
static bool IsBuiltinsStubMessageString(int id)
{

View File

@ -410,7 +410,7 @@ public:
const JSPandaFile *PUBLIC_API GetJSPandaFile() const;
uint32_t GetCodeSize() const;
MethodLiteral *GetMethodLiteral() const;
MethodLiteral *PUBLIC_API GetMethodLiteral() const;
const char *PUBLIC_API GetMethodName() const;
const char *PUBLIC_API GetMethodName(const JSPandaFile *file) const;

View File

@ -52,7 +52,7 @@ public:
JSTaggedValue GetModuleNamespaceInternal(JSTaggedValue localName, JSTaggedValue currentModule);
// deprecated end
JSHandle<SourceTextModule> HostGetImportedModule(const CString &referencingModule);
JSHandle<SourceTextModule> PUBLIC_API HostGetImportedModule(const CString &referencingModule);
JSHandle<SourceTextModule> HostGetImportedModule(JSTaggedValue referencing);
JSTaggedValue HostGetImportedModule(void *src);
bool IsImportedModuleLoaded(JSTaggedValue referencing);
@ -89,7 +89,7 @@ public:
isExecuteBuffer_ = mode;
}
static CString GetRecordName(JSTaggedValue module);
static CString PUBLIC_API GetRecordName(JSTaggedValue module);
static int GetExportObjectIndex(EcmaVM *vm, JSHandle<SourceTextModule> ecmaModule, const std::string &key);
uint32_t NextModuleAsyncEvaluatingOrdinal()

View File

@ -198,7 +198,7 @@ public:
const void *buffer = nullptr, size_t size = 0, bool excuteFromJob = false);
// 15.2.1.16.4 Instantiate()
static int Instantiate(JSThread *thread, const JSHandle<JSTaggedValue> &moduleHdl,
static int PUBLIC_API Instantiate(JSThread *thread, const JSHandle<JSTaggedValue> &moduleHdl,
bool excuteFromJob = false);
static void InstantiateCJS(JSThread *thread, const JSHandle<SourceTextModule> &currentModule,
const JSHandle<SourceTextModule> &requiredModule);

View File

@ -97,8 +97,8 @@ public:
static constexpr size_t APP_PREFIX_SIZE = 5;
static constexpr size_t BUNDLE_INSTALL_PATH_LEN = 25;
static CString ConcatFileNameWithMerge(JSThread *thread, const JSPandaFile *jsPandaFile,
CString &baseFileName, CString recordName, CString requestName);
static CString PUBLIC_API ConcatFileNameWithMerge(JSThread *thread, const JSPandaFile *jsPandaFile,
CString &baseFileName, CString recordName, CString requestName);
static void ParseOhmUrl(EcmaVM *vm, const CString &inputFileName,
CString &outBaseFileName, CString &outEntryPoint);
static CString ParseUrl(EcmaVM *vm, const CString &recordName);

View File

@ -205,7 +205,8 @@ public:
JSHandle<ConstantPool> NewConstantPool(uint32_t capacity);
JSHandle<Program> NewProgram();
JSHandle<JSObject> GetJSError(const ErrorType &errorType, const char *data = nullptr, bool needCheckStack = true);
JSHandle<JSObject> PUBLIC_API GetJSError(const ErrorType &errorType, const char *data = nullptr,
bool needCheckStack = true);
JSHandle<JSObject> NewJSError(const ErrorType &errorType, const JSHandle<EcmaString> &message,
bool needCheckStack = true);
@ -322,9 +323,9 @@ public:
JSHandle<job::PendingJob> NewPendingJob(const JSHandle<JSFunction> &func, const JSHandle<TaggedArray> &argv);
JSHandle<JSArray> NewJSArray();
JSHandle<JSArray> NewJSArray(size_t length, JSHandle<JSHClass> &hclass);
JSHandle<TaggedArray> NewJsonFixedArray(size_t start, size_t length,
const std::vector<JSHandle<JSTaggedValue>> &vec);
JSHandle<JSArray> PUBLIC_API NewJSArray(size_t length, JSHandle<JSHClass> &hclass);
JSHandle<TaggedArray> PUBLIC_API NewJsonFixedArray(size_t start, size_t length,
const std::vector<JSHandle<JSTaggedValue>> &vec);
JSHandle<JSProxy> NewJSProxy(const JSHandle<JSTaggedValue> &target, const JSHandle<JSTaggedValue> &handler);
JSHandle<JSRealm> NewJSRealm();
@ -360,14 +361,14 @@ public:
JSHandle<MutantTaggedArray> NewAndCopyMutantTaggedArrayByObject(JSHandle<JSObject> thisObjHandle,
uint32_t newLength, uint32_t oldLength,
uint32_t k = 0);
JSHandle<TaggedArray> NewTaggedArray(uint32_t length, JSTaggedValue initVal = JSTaggedValue::Hole());
JSHandle<TaggedArray> PUBLIC_API NewTaggedArray(uint32_t length, JSTaggedValue initVal = JSTaggedValue::Hole());
JSHandle<TaggedArray> NewTaggedArray(uint32_t length, JSTaggedValue initVal, bool nonMovable);
JSHandle<TaggedArray> NewTaggedArray(uint32_t length, JSTaggedValue initVal, MemSpaceType spaceType);
// Copy on write array is allocated in nonmovable space by default.
JSHandle<COWTaggedArray> NewCOWTaggedArray(uint32_t length, JSTaggedValue initVal = JSTaggedValue::Hole());
JSHandle<COWMutantTaggedArray> NewCOWMutantTaggedArray(uint32_t length, JSTaggedType initVal = base::SPECIAL_HOLE);
JSHandle<MutantTaggedArray> NewMutantTaggedArray(uint32_t length, JSTaggedType initVal = base::SPECIAL_HOLE);
JSHandle<TaggedArray> NewDictionaryArray(uint32_t length);
JSHandle<TaggedArray> PUBLIC_API NewDictionaryArray(uint32_t length);
JSHandle<JSForInIterator> NewJSForinIterator(const JSHandle<JSTaggedValue> &obj,
const JSHandle<JSTaggedValue> keys,
const JSHandle<JSTaggedValue> cachedHclass);
@ -389,17 +390,17 @@ public:
MemSpaceType type = MemSpaceType::SEMI_SPACE,
ElementsKind kind = ElementsKind::GENERIC);
JSHandle<TaggedArray> CopyPartArray(const JSHandle<TaggedArray> &old, uint32_t start, uint32_t end);
JSHandle<TaggedArray> CopyArray(const JSHandle<TaggedArray> &old, uint32_t oldLength, uint32_t newLength,
JSTaggedValue initVal = JSTaggedValue::Hole(),
MemSpaceType type = MemSpaceType::SEMI_SPACE,
ElementsKind kind = ElementsKind::GENERIC);
JSHandle<TaggedArray> PUBLIC_API CopyArray(const JSHandle<TaggedArray> &old, uint32_t oldLength, uint32_t newLength,
JSTaggedValue initVal = JSTaggedValue::Hole(),
MemSpaceType type = MemSpaceType::SEMI_SPACE,
ElementsKind kind = ElementsKind::GENERIC);
JSHandle<TaggedArray> CopyFromEnumCache(const JSHandle<TaggedArray> &old);
JSHandle<TaggedArray> CloneProperties(const JSHandle<TaggedArray> &old);
JSHandle<TaggedArray> CloneProperties(const JSHandle<TaggedArray> &old, const JSHandle<JSTaggedValue> &env,
const JSHandle<JSObject> &obj);
JSHandle<LayoutInfo> CreateLayoutInfo(int properties, MemSpaceType type = MemSpaceType::SEMI_SPACE,
GrowMode mode = GrowMode::GROW);
JSHandle<LayoutInfo> PUBLIC_API CreateLayoutInfo(int properties, MemSpaceType type = MemSpaceType::SEMI_SPACE,
GrowMode mode = GrowMode::GROW);
JSHandle<LayoutInfo> ExtendLayoutInfo(const JSHandle<LayoutInfo> &old, int properties);
@ -499,7 +500,7 @@ public:
template<typename T, typename S>
inline void NewJSIntlIcuData(const JSHandle<T> &obj, const S &icu, const DeleteEntryPoint &callback);
EcmaString *InternString(const JSHandle<JSTaggedValue> &key);
EcmaString *PUBLIC_API InternString(const JSHandle<JSTaggedValue> &key);
inline JSHandle<JSNativePointer> NewJSNativePointer(void *externalPointer,
const DeleteEntryPoint &callBack = nullptr,
@ -553,25 +554,25 @@ public:
JSHandle<TSNamespaceType> NewTSNamespaceType();
// ----------------------------------- new string ----------------------------------------
JSHandle<EcmaString> NewFromASCII(std::string_view data);
JSHandle<EcmaString> NewFromUtf8(std::string_view data);
JSHandle<EcmaString> PUBLIC_API NewFromASCII(std::string_view data);
JSHandle<EcmaString> PUBLIC_API NewFromUtf8(std::string_view data);
JSHandle<EcmaString> NewFromUtf16(std::u16string_view data);
JSHandle<EcmaString> NewFromStdString(const std::string &data);
JSHandle<EcmaString> NewFromUtf8(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> NewFromUtf16(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> PUBLIC_API NewFromUtf16(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> NewFromUtf16Compress(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> NewFromUtf16NotCompress(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> NewFromUtf8Literal(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> NewFromUtf8LiteralCompress(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> NewCompressedUtf8(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> PUBLIC_API NewFromUtf8LiteralCompress(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> PUBLIC_API NewCompressedUtf8(const uint8_t *utf8Data, uint32_t utf8Len);
JSHandle<EcmaString> NewFromUtf16Literal(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> NewFromUtf16LiteralCompress(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> NewFromUtf16LiteralNotCompress(const uint16_t *utf16Data, uint32_t utf16Len);
JSHandle<EcmaString> PUBLIC_API NewFromUtf16LiteralNotCompress(const uint16_t *utf16Data, uint32_t utf16Len);
inline EcmaString *AllocLineStringObject(size_t size);
inline EcmaString *AllocOldSpaceLineStringObject(size_t size);
@ -584,7 +585,7 @@ public:
const JSHandle<EcmaString> &secondString);
// used for creating Function
JSHandle<JSObject> NewJSObject(const JSHandle<JSHClass> &jshclass);
JSHandle<JSObject> PUBLIC_API NewJSObject(const JSHandle<JSHClass> &jshclass);
// used for creating jshclass in Builtins, Function, Class_Linker
JSHandle<JSHClass> NewEcmaHClass(uint32_t size, JSType type, const JSHandle<JSTaggedValue> &prototype);
@ -592,8 +593,8 @@ public:
const JSHandle<JSTaggedValue> &prototype);
// used for creating jshclass in Builtins, Function, Class_Linker
JSHandle<JSHClass> NewEcmaHClass(uint32_t size, JSType type,
uint32_t inlinedProps = JSHClass::DEFAULT_CAPACITY_OF_IN_OBJECTS);
JSHandle<JSHClass> PUBLIC_API NewEcmaHClass(uint32_t size, JSType type,
uint32_t inlinedProps = JSHClass::DEFAULT_CAPACITY_OF_IN_OBJECTS);
// It is used to provide iterators for non ECMA standard jsapi containers.
JSHandle<JSAPIPlainArray> NewJSAPIPlainArray(uint32_t capacity);

View File

@ -61,7 +61,7 @@ public:
const JSHandle<JSTaggedValue> &value, const PropertyAttributes &attr);
void UpdateDetector();
static void UpdateDetector(const JSThread *thread, JSTaggedValue receiver, JSTaggedValue key);
static void PUBLIC_API UpdateDetector(const JSThread *thread, JSTaggedValue receiver, JSTaggedValue key);
static void UpdateDetectorOnSetPrototype(const JSThread *thread, JSTaggedValue receiver);
static bool IsDetectorName(JSHandle<GlobalEnv> env, JSTaggedValue key);

View File

@ -14,6 +14,7 @@
*/
#ifndef ECMASCRIPT_COMPILER_APP_CRYPTO_H
#define ECMASCRIPT_COMPILER_APP_CRYPTO_H
#include "ecmascript/common.h"
namespace panda::ecmascript::ohos {
// After referencing the kernel header file, need to remove it
@ -35,9 +36,9 @@ struct code_decrypto_arg {
void *arg2;
};
#if defined(CODE_ENCRYPTION_ENABLE)
int DecryptSetKey(int fd, int srcAppId);
int DecrypRemoveKey(int fd, int srcAppId);
int DecryptAssociateKey(int fd, int dstAppId, int srcAppId);
int PUBLIC_API DecryptSetKey(int fd, int srcAppId);
int PUBLIC_API DecrypRemoveKey(int fd, int srcAppId);
int PUBLIC_API DecryptAssociateKey(int fd, int dstAppId, int srcAppId);
int DecrypRemoveAssociateKey(int fd, int dstAppId, int srcAppId);
#endif
} // namespace panda::ecmascript::kungfu

View File

@ -56,7 +56,7 @@ public:
virtual ~PGOProfiler();
static ProfileType CreateRecordProfileType(ApEntityId abcId, ApEntityId classId);
void ProfileCreateObject(JSTaggedType object, ApEntityId abcId, int32_t traceId);
void PUBLIC_API ProfileCreateObject(JSTaggedType object, ApEntityId abcId, int32_t traceId);
void ProfileDefineClass(JSTaggedType ctor);
void ProfileDefineGetterSetter(
JSHClass *receverHClass, JSHClass *holderHClass, const JSHandle<JSTaggedValue> &func, int32_t pcOffset);

View File

@ -124,15 +124,15 @@ public:
recordSimpleInfos_->MatchAndMarkMethod(GetNormalizedFileDesc(jsPandaFile), recordName, methodName, methodId);
}
void GetMismatchResult(const JSPandaFile *jsPandaFile, uint32_t &totalMethodCount, uint32_t &mismatchMethodCount,
std::set<std::pair<std::string, CString>> &mismatchMethodSet) const;
void PUBLIC_API GetMismatchResult(const JSPandaFile *jsPandaFile, uint32_t &totalMethodCount,
uint32_t &mismatchMethodCount, std::set<std::pair<std::string, CString>> &mismatchMethodSet) const;
bool IsMethodMatchEnabled() const
{
return header_->SupportMethodChecksum();
}
bool GetHClassTreeDesc(PGOSampleType profileType, PGOHClassTreeDesc **desc) const;
bool PUBLIC_API GetHClassTreeDesc(PGOSampleType profileType, PGOHClassTreeDesc **desc) const;
template <typename Callback>
bool IterateHClassTreeDesc(Callback callback) const
@ -200,7 +200,7 @@ private:
bool LoadAPBinaryFile(int prot = PAGE_PROT_READ);
void UnLoadAPBinaryFile();
CString GetNormalizedFileDesc(const JSPandaFile *jsPandaFile) const;
CString PUBLIC_API GetNormalizedFileDesc(const JSPandaFile *jsPandaFile) const;
void LoadAbcIdPool(const std::shared_ptr<PGOAbcFilePool> &externalAbcFilePool, PGOContext &context,
void *addr);

View File

@ -65,7 +65,7 @@ public:
}
void SamplePandaFileInfo(uint32_t checksum, const CString &abcName);
bool GetPandaFileId(const CString &abcName, ApEntityId &entryId);
bool PUBLIC_API GetPandaFileId(const CString &abcName, ApEntityId &entryId);
bool GetPandaFileDesc(ApEntityId abcId, CString &desc);
void Merge(const PGORecordDetailInfos &recordInfos);
void Merge(const PGOPandaFileInfos &pandaFileInfos);

View File

@ -129,7 +129,7 @@ public:
*(&methodName_ + len) = '\0';
}
static uint32_t CalcChecksum(const char *name, const uint8_t *byteCodeArray, uint32_t byteCodeLength);
static uint32_t PUBLIC_API CalcChecksum(const char *name, const uint8_t *byteCodeArray, uint32_t byteCodeLength);
static uint32_t CalcOpCodeChecksum(const uint8_t *byteCodeArray, uint32_t byteCodeLength);

View File

@ -29,7 +29,7 @@ namespace panda::ecmascript::pgo {
class PGOProfilerManager {
public:
using ApGenMode = PGOProfilerEncoder::ApGenMode;
static PGOProfilerManager *GetInstance();
static PGOProfilerManager *PUBLIC_API GetInstance();
static void SavingSignalHandler(int signo);
@ -232,9 +232,9 @@ public:
return ret;
}
static bool MergeApFiles(const std::string &inFiles, const std::string &outPath, uint32_t hotnessThreshold,
ApGenMode mode);
static bool MergeApFiles(uint32_t checksum, PGOProfilerDecoder &merger);
static bool PUBLIC_API MergeApFiles(const std::string &inFiles, const std::string &outPath,
uint32_t hotnessThreshold, ApGenMode mode);
static bool PUBLIC_API MergeApFiles(uint32_t checksum, PGOProfilerDecoder &merger);
private:
bool InitializeData()

View File

@ -20,6 +20,7 @@
#include "mem/mem.h"
#include "libpandafile/file.h"
#include "ecmascript/common.h"
namespace panda::ecmascript::pgo {
static constexpr Alignment ALIGN_SIZE = Alignment::LOG_ALIGN_4;
@ -48,9 +49,9 @@ public:
static const std::string RUNTIME_AP_PREFIX;
static const std::string MERGED_AP_PREFIX;
static const std::string DEFAULT_AP_NAME;
static std::string GetRuntimeApName(const std::string &ohosModuleName);
static std::string GetMergedApName(const std::string &ohosModuleName);
static std::string GetOhosPkgApName(const std::string &ohosModuleName);
static std::string PUBLIC_API GetRuntimeApName(const std::string &ohosModuleName);
static std::string PUBLIC_API GetMergedApName(const std::string &ohosModuleName);
static std::string PUBLIC_API GetOhosPkgApName(const std::string &ohosModuleName);
private:
static std::string GetBriefApName(const std::string &ohosModuleName);

View File

@ -17,10 +17,11 @@
#define ECMASCRIPT_PLATFORM_DIRECTORY_H
#include <string>
#include "ecmascript/common.h"
namespace panda::ecmascript {
bool ForceCreateDirectory(const std::string &path);
bool SetDirModeAsDefault(const std::string &path);
bool SetFileModeAsDefault(const std::string &filename);
bool PUBLIC_API ForceCreateDirectory(const std::string &path);
bool PUBLIC_API SetDirModeAsDefault(const std::string &path);
bool PUBLIC_API SetFileModeAsDefault(const std::string &filename);
} // namespace panda::ecmascript
#endif // ECMASCRIPT_PLATFORM_DIRECTORY_H

View File

@ -63,20 +63,20 @@ using fd_t = int;
#define FILE_SUCCESS 1
#define FILE_FAILED 0
std::string GetFileDelimiter();
std::string GetPathSeparator();
bool RealPath(const std::string &path, std::string &realPath, bool readOnly = true);
std::string PUBLIC_API GetFileDelimiter();
std::string PUBLIC_API GetPathSeparator();
bool PUBLIC_API RealPath(const std::string &path, std::string &realPath, bool readOnly = true);
void DPrintf(fd_t fd, const std::string &buffer);
void Close(fd_t fd);
void FSync(fd_t fd);
MemMap FileMap(const char *fileName, int flag, int prot, int64_t offset = 0);
MemMap FileMapForAlignAddress(const char *fileName, int flag, int prot,
int64_t offset, uint32_t offStart);
int FileUnMap(MemMap addr);
MemMap PUBLIC_API FileMapForAlignAddress(const char *fileName, int flag, int prot,
int64_t offset, uint32_t offStart);
int PUBLIC_API FileUnMap(MemMap addr);
JSHandle<EcmaString> ResolveFilenameFromNative(JSThread *thread, JSTaggedValue dirname,
JSTaggedValue request);
bool FileExist(const char *filename);
int Unlink(const char *filename);
bool PUBLIC_API FileExist(const char *filename);
int PUBLIC_API Unlink(const char *filename);
bool TryToRemoveSO(JSThread *thread, JSHandle<SourceTextModule> module);
void *LoadLib(const std::string &libname);
void *FindSymbol(void *handle, const char *symbol);

View File

@ -67,12 +67,12 @@ public:
~ArkStackMapBuilder() = default;
std::pair<std::shared_ptr<uint8_t>, uint32_t> PUBLIC_API Run(std::unique_ptr<uint8_t []> stackMapAddr,
uintptr_t hostCodeSectionAddr, Triple triple);
std::pair<std::shared_ptr<uint8_t>, uint32_t> GenerateArkStackMap(
std::pair<std::shared_ptr<uint8_t>, uint32_t> PUBLIC_API GenerateArkStackMap(
CGStackMapInfo &stackMapInfo, Triple triple);
void Collect(std::unique_ptr<uint8_t []> stackMapAddr,
uintptr_t hostCodeSectionAddr,
uintptr_t hostCodeSectionOffset,
CGStackMapInfo &stackMapInfo);
void PUBLIC_API Collect(std::unique_ptr<uint8_t []> stackMapAddr,
uintptr_t hostCodeSectionAddr,
uintptr_t hostCodeSectionOffset,
CGStackMapInfo &stackMapInfo);
void SetTraceStackMap(bool flag)
{
traceStackMap_ = flag;

View File

@ -23,14 +23,14 @@ class SubtypingOperator {
public:
static constexpr uint32_t DEFAULT_SUPERS_CAPACITY = 4;
static bool CheckBaseClass(const JSThread *thread, const JSHandle<TSClassType> &classType);
PUBLIC_API static bool CheckBaseClass(const JSThread *thread, const JSHandle<TSClassType> &classType);
static bool CheckSubtyping(const JSThread *thread, const JSHandle<TSClassType> &classType);
PUBLIC_API static bool CheckSubtyping(const JSThread *thread, const JSHandle<TSClassType> &classType);
static void MergeClassField(const JSThread *thread, const JSHandle<TSClassType> &classType);
PUBLIC_API static void MergeClassField(const JSThread *thread, const JSHandle<TSClassType> &classType);
static void FillTSInheritInfo(JSThread *thread, const JSHandle<TSClassType> &classType,
const JSHandle<JSHClass> &ihcHandle);
PUBLIC_API static void FillTSInheritInfo(JSThread *thread, const JSHandle<TSClassType> &classType,
const JSHandle<JSHClass> &ihcHandle);
static void GenVTable(const JSThread *thread, const JSHandle<JSHClass> &ihcHandle,
const JSHandle<JSHClass> &phcHandle, const JSHandle<JSHClass> &eIhcHandle);

View File

@ -40,22 +40,22 @@ public:
{
return ENTRY_SIZE;
}
static int Hash(const JSTaggedValue &key);
static int PUBLIC_API Hash(const JSTaggedValue &key);
static int Hash(const uint8_t* str, int strSize);
static bool IsMatch(const JSTaggedValue &key, const JSTaggedValue &other);
static bool PUBLIC_API IsMatch(const JSTaggedValue &key, const JSTaggedValue &other);
static bool IsMatch(const uint8_t* str, int size, const JSTaggedValue &other);
static JSHandle<NameDictionary> Create(const JSThread *thread,
int numberOfElements = OrderHashTableT::DEFAULT_ELEMENTS_NUMBER);
// Returns the property metaData for the property at entry.
PropertyAttributes GetAttributes(int entry) const;
void SetAttributes(const JSThread *thread, int entry, const PropertyAttributes &metaData);
void SetEntry(const JSThread *thread, int entry, const JSTaggedValue &key, const JSTaggedValue &value,
const PropertyAttributes &metaData);
PropertyAttributes PUBLIC_API GetAttributes(int entry) const;
void PUBLIC_API SetAttributes(const JSThread *thread, int entry, const PropertyAttributes &metaData);
void PUBLIC_API SetEntry(const JSThread *thread, int entry, const JSTaggedValue &key, const JSTaggedValue &value,
const PropertyAttributes &metaData);
void UpdateValueAndAttributes(const JSThread *thread, int entry, const JSTaggedValue &value,
const PropertyAttributes &metaData);
void UpdateValue(const JSThread *thread, int entry, const JSTaggedValue &value);
void PUBLIC_API UpdateValue(const JSThread *thread, int entry, const JSTaggedValue &value);
void UpdateAttributes(int entry, const PropertyAttributes &metaData);
void ClearEntry(const JSThread *thread, int entry);
void GetAllKeys(const JSThread *thread, int offset, TaggedArray *keyArray) const;
@ -107,18 +107,18 @@ public:
{
return ENTRY_SIZE;
}
static int Hash(const JSTaggedValue &key);
static bool IsMatch(const JSTaggedValue &key, const JSTaggedValue &other);
static int PUBLIC_API Hash(const JSTaggedValue &key);
static bool PUBLIC_API IsMatch(const JSTaggedValue &key, const JSTaggedValue &other);
static JSHandle<NumberDictionary> Create(const JSThread *thread,
int numberOfElements = OrderHashTableT::DEFAULT_ELEMENTS_NUMBER);
// Returns the property metaData for the property at entry.
PropertyAttributes GetAttributes(int entry) const;
PropertyAttributes PUBLIC_API GetAttributes(int entry) const;
void SetAttributes(const JSThread *thread, int entry, const PropertyAttributes &metaData);
void SetEntry([[maybe_unused]] const JSThread *thread, int entry, const JSTaggedValue &key,
const JSTaggedValue &value, const PropertyAttributes &metaData);
void UpdateValueAndAttributes(const JSThread *thread, int entry, const JSTaggedValue &value,
const PropertyAttributes &metaData);
void UpdateValue(const JSThread *thread, int entry, const JSTaggedValue &value);
void PUBLIC_API UpdateValue(const JSThread *thread, int entry, const JSTaggedValue &value);
void UpdateAttributes(int entry, const PropertyAttributes &metaData);
void ClearEntry(const JSThread *thread, int entry);

View File

@ -113,7 +113,7 @@ public:
}
};
class TSManager {
class PUBLIC_API TSManager {
public:
explicit TSManager(EcmaVM *vm);
~TSManager() = default;

View File

@ -102,7 +102,7 @@ public:
bool Find(JSTaggedValue key) const;
int GetElementIndexByKey(JSTaggedValue key) const;
int PUBLIC_API GetElementIndexByKey(JSTaggedValue key) const;
void GetAccessorIndexByKey(JSTaggedValue key, std::vector<int> &vec);
JSTaggedValue TryGetTypeByIndexSign(const uint32_t typeId);

View File

@ -45,7 +45,7 @@ public:
bool enableOptTrackField;
};
explicit TSTypeParser(TSManager *tsManager);
explicit PUBLIC_API TSTypeParser(TSManager *tsManager);
~TSTypeParser() = default;
GlobalTSTypeRef PUBLIC_API CreateGT(const JSPandaFile *jsPandaFile, const CString &recordName, uint32_t typeId);

View File

@ -3,9 +3,17 @@
extern "C++" {
vtable?for?Initializer;
vtable?for?panda::LocalScope;
vtable?for?panda::ecmascript::AOTFileInfo;
vtable?for?panda::ecmascript::AnFileInfo;
vtable?for?panda::ecmascript::kungfu::ArrayLiteralSnapshotInfo;
vtable?for?panda::ecmascript::kungfu::ClassLiteralSnapshotInfo;
vtable?for?panda::ecmascript::kungfu::MethodSnapshotInfo;
vtable?for?panda::ecmascript::kungfu::ObjectLiteralSnapshotInfo;
vtable?for?panda::ecmascript::kungfu::StringSnapshotInfo;
panda::ecmascript::COMMON_HELP_HEAD_MSG;
panda::ecmascript::HELP_OPTION_MSG;
panda::ecmascript::COMMON_HELP_HEAD_MSG*;
panda::ecmascript::HELP_OPTION_MSG*;
panda::ecmascript::COMPILER_HELP_HEAD_MSG*;
panda::ArrayBufferRef::*;
panda::BufferRef::*;
@ -73,8 +81,8 @@
panda::ecmascript::JSThread::*;
panda::ecmascript::Chunk::*;
panda::ecmascript::WorkSpaceChunk::*;
panda::ecmascript::PGOProfilerDecoder::*;
panda::ecmascript::PGOProfilerEncoder::*;
panda::ecmascript::pgo::PGOProfilerDecoder::*;
panda::ecmascript::pgo::PGOProfilerEncoder::*;
panda::ecmascript::NativeAreaAllocator::*;
panda::os::thread::*;
@ -89,6 +97,249 @@
panda::ecmascript::LockHolder::*;
panda::ecmascript::ReadLockHolder::*;
panda::ecmascript::WriteLockHolder::*;
panda::Logger::Message::~Message*;
panda::Logger::logger*;
panda::ecmascript::AnFileInfo::GenerateMethodToEntryIndexMap*;
panda::ecmascript::AnFileInfo::Save*;
panda::ecmascript::Barriers::Update*;
panda::ecmascript::BigInt::SameValue*;
panda::ecmascript::ClassHelper::MatchTrackType*;
panda::ecmascript::ConvertToStdString*;
panda::ecmascript::ConvertToString*;
panda::ecmascript::Deoptimizier::ComputeShift*;
panda::ecmascript::Deoptimizier::DisplayItems*;
panda::ecmascript::Deoptimizier::EncodeDeoptVregIndex*;
panda::ecmascript::DynChunk::Emit*;
panda::ecmascript::DynChunk::EmitChar*;
panda::ecmascript::EcmaContext::FindConstpool*;
panda::ecmascript::EcmaContext::FindOrCreateConstPool*;
panda::ecmascript::EcmaContext::SetTSManager*;
panda::ecmascript::EcmaString::ComputeHashcode*;
panda::ecmascript::EcmaString::GetUtf16DataFlat*;
panda::ecmascript::EcmaString::GetUtf8DataFlat*;
panda::ecmascript::EcmaString::StringsAreEqual*;
panda::ecmascript::EcmaString::ToElementIndex*;
panda::ecmascript::EcmaString::ToTypedArrayIndex*;
panda::ecmascript::EcmaStringAccessor::EcmaStringAccessor*;
panda::ecmascript::EcmaStringAccessor::ToStdString*;
panda::ecmascript::EcmaVM::GetGlobalEnv*;
panda::ecmascript::EcmaVM::IsEnableElementsKind*;
panda::ecmascript::EcmaVM::IsEnablePGOProfiler*;
panda::ecmascript::ElementAccessor::ConvertTaggedValueWithElementsKind*;
panda::ecmascript::ElementAccessor::Get*;
panda::ecmascript::Elements::FixElementsKind*;
panda::ecmascript::Elements::IsHole*;
panda::ecmascript::Elements::IsInt*;
panda::ecmascript::Elements::IsNumber*;
panda::ecmascript::Elements::IsObject*;
panda::ecmascript::Elements::IsTagged*;
panda::ecmascript::Elements::MergeElementsKind*;
panda::ecmascript::Elements::MigrateArrayWithKind*;
panda::ecmascript::FileExist*;
panda::ecmascript::FileMapForAlignAddress*;
panda::ecmascript::FileUnMap*;
panda::ecmascript::ForceCreateDirectory*;
panda::ecmascript::GetFileDelimiter*;
panda::ecmascript::GetPathSeparator*;
panda::ecmascript::JSAPIArrayList::Set*;
panda::ecmascript::JSAPIDeque::Set*;
panda::ecmascript::JSAPILinkedList::Set*;
panda::ecmascript::JSAPIList::Set*;
panda::ecmascript::JSAPIPlainArray::Set*;
panda::ecmascript::JSAPIQueue::Set*;
panda::ecmascript::JSAPIStack::Set*;
panda::ecmascript::JSAPIVector::Set*;
panda::ecmascript::JSArray::ArrayCreate*;
panda::ecmascript::JSArray::CheckAndCopyArray*;
panda::ecmascript::JSFunction::GetOrCreateInitialJSHClass*;
panda::ecmascript::JSObject::AddElementInternal*;
panda::ecmascript::JSObject::CallSetter*;
panda::ecmascript::JSObject::CreateObjectFromProperties*;
panda::ecmascript::JSObject::DefinePropertyByLiteral*;
panda::ecmascript::JSObject::EnumerableOwnNames*;
panda::ecmascript::JSObject::GetProperty*;
panda::ecmascript::JSObject::TransitionToDictionary*;
panda::ecmascript::JSPandaFile::FindMethodLiteral*;
panda::ecmascript::JSPandaFile::GetFunctionKind*;
panda::ecmascript::JSPandaFile::GetNormalizedFileDesc*;
panda::ecmascript::JSProxy::IsArray*;
panda::ecmascript::JSTaggedValue::IsJSCOWArray*;
panda::ecmascript::JSTaggedValue::SetProperty*;
panda::ecmascript::JSTaggedValue::ToString*;
panda::ecmascript::JSTypedArray::FastSetPropertyByIndex*;
panda::ecmascript::LiteralDataExtractor::ExtractObjectDatas*;
panda::ecmascript::LiteralDataExtractor::GetDatasIgnoreType*;
panda::ecmascript::LiteralDataExtractor::GetMethodOffsets*;
panda::ecmascript::MessageString::GetMessageString*;
panda::ecmascript::MethodLiteral::GetCodeSize*;
panda::ecmascript::MethodLiteral::GetMethodName*;
panda::ecmascript::MethodLiteral::GetRecordName*;
panda::ecmascript::MethodLiteral::Initialize*;
panda::ecmascript::MethodLiteral::MethodLiteral*;
panda::ecmascript::MethodLiteral::ParseFunctionName*;
panda::ecmascript::ModuleManager::GetRecordName*;
panda::ecmascript::ModuleManager::HostGetImportedModule*;
panda::ecmascript::ModuleManager::HostResolveImportedModuleWithMerge*;
panda::ecmascript::ModulePathHelper::ConcatFileNameWithMerge*;
panda::ecmascript::NativeAreaAllocator::AllocateBuffer*;
panda::ecmascript::NativeAreaAllocator::FreeeBuffer*;
panda::ecmascript::NativeAreaAllocator::FreeeArea*;
panda::ecmascript::NameDictionary::GetAttributes*;
panda::ecmascript::NameDictionary::Hash*;
panda::ecmascript::NameDictionary::IsMatch*;
panda::ecmascript::NameDictionary::SetAttributes*;
panda::ecmascript::NameDictionary::SetEntry*;
panda::ecmascript::NameDictionary::UpdateValue*;
panda::ecmascript::NumberDictionary::GetAttributes*;
panda::ecmascript::NumberDictionary::Hash*;
panda::ecmascript::NumberDictionary::IsMatch*;
panda::ecmascript::NumberDictionary::UpdateValue*;
panda::ecmascript::ObjectFactory::CopyArray*;
panda::ecmascript::ObjectFactory::CreateLayoutInfo*;
panda::ecmascript::ObjectFactory::GetJSError*;
panda::ecmascript::ObjectFactory::InternString*;
panda::ecmascript::ObjectFactory::NewCompressedUtf8*;
panda::ecmascript::ObjectFactory::NewDictionaryArray*;
panda::ecmascript::ObjectFactory::NewEcmaHClass*;
panda::ecmascript::ObjectFactory::NewFromASCII*;
panda::ecmascript::ObjectFactory::NewFromUtf16*;
panda::ecmascript::ObjectFactory::NewFromUtf8*;
panda::ecmascript::ObjectFactory::NewFromUtf8LiteralCompress*;
panda::ecmascript::ObjectFactory::NewJSArray*;
panda::ecmascript::ObjectFactory::NewJSObject*;
panda::ecmascript::ObjectFactory::NewJsonFixedArray*;
panda::ecmascript::ObjectFactory::NewTaggedArray*;
panda::ecmascript::ObjectOperator::UpdateDetector*;
panda::ecmascript::PageMap*;
panda::ecmascript::PageUnmap*;
panda::ecmascript::RealPath*;
panda::ecmascript::SetDirModeAsDefault*;
panda::ecmascript::SetFileModeAsDefault*;
panda::ecmascript::Snapshot::Serialize*;
panda::ecmascript::SourceTextModule::Instantiate*;
panda::ecmascript::StubFileInfo::Save*;
panda::ecmascript::SubtypingOperator::CheckBaseClass*;
panda::ecmascript::SubtypingOperator::CheckSubtyping*;
panda::ecmascript::SubtypingOperator::FillTSInheritInfo*;
panda::ecmascript::SubtypingOperator::MergeClassField*;
panda::ecmascript::TSManager::AddConstructorTSHClass*;
panda::ecmascript::TSManager::AddInstanceTSHClass*;
panda::ecmascript::TSManager::AddNamespacePropType*;
panda::ecmascript::TSManager::CanFastCall*;
panda::ecmascript::TSManager::CreateArrayType*;
panda::ecmascript::TSManager::CreateClassInstanceType*;
panda::ecmascript::TSManager::CreateNamespaceType*;
panda::ecmascript::TSManager::FastCallFlagIsVaild*;
panda::ecmascript::TSManager::GetAOTHClassInfoByIndex*;
panda::ecmascript::TSManager::GetArrayParameterTypeGT*;
panda::ecmascript::TSManager::GetBuiltinsGateTypeByPt*;
panda::ecmascript::TSManager::GetClassType*;
panda::ecmascript::TSManager::GetConstantPool*;
panda::ecmascript::TSManager::GetConstantPoolIDByMethodOffset*;
panda::ecmascript::TSManager::GetConstantPoolId*;
panda::ecmascript::TSManager::GetConstructorHClassIndexByClassGateType*;
panda::ecmascript::TSManager::GetExportTableFromLiteral*;
panda::ecmascript::TSManager::GetExtendedClassType*;
panda::ecmascript::TSManager::GetFuncMethodOffset*;
panda::ecmascript::TSManager::GetFuncName*;
panda::ecmascript::TSManager::GetFuncParameterTypeGT*;
panda::ecmascript::TSManager::GetFuncReturnValueTypeGT*;
panda::ecmascript::TSManager::GetFuncThisGT*;
panda::ecmascript::TSManager::GetFunctionTypeLength*;
panda::ecmascript::TSManager::GetHClassIndex*;
panda::ecmascript::TSManager::GetHClassIndexByInstanceGateType*;
panda::ecmascript::TSManager::GetHClassIndexByObjectType*;
panda::ecmascript::TSManager::GetIndexSignType*;
panda::ecmascript::TSManager::GetIteratorInstanceElementGt*;
panda::ecmascript::TSManager::GetMethodIndex*;
panda::ecmascript::TSManager::GetOrCreateTSIteratorInstanceType*;
panda::ecmascript::TSManager::GetOrCreateUnionType*;
panda::ecmascript::TSManager::GetPropType*;
panda::ecmascript::TSManager::GetStringFromConstantPool*;
panda::ecmascript::TSManager::GetSuperGateType*;
panda::ecmascript::TSManager::GetSuperPropType*;
panda::ecmascript::TSManager::GetTSHClass*;
panda::ecmascript::TSManager::GetTSType*;
panda::ecmascript::TSManager::GetTypeKind*;
panda::ecmascript::TSManager::GetTypeStr*;
panda::ecmascript::TSManager::GetTypedArrayBuiltinId*;
panda::ecmascript::TSManager::HasTSHClass*;
panda::ecmascript::TSManager::Initialize*;
panda::ecmascript::TSManager::IsAbstractMethod*;
panda::ecmascript::TSManager::IsBuiltinClassType*;
panda::ecmascript::TSManager::IsBuiltinConstructor*;
panda::ecmascript::TSManager::IsBuiltinInstanceType*;
panda::ecmascript::TSManager::IsBuiltinObjectMethod*;
panda::ecmascript::TSManager::IsDoubleTypedArrayType*;
panda::ecmascript::TSManager::IsGetterSetterFunc*;
panda::ecmascript::TSManager::IsHotnessFunc*;
panda::ecmascript::TSManager::IsIntTypedArrayType*;
panda::ecmascript::TSManager::IsMethodSignature*;
panda::ecmascript::TSManager::IsNoGC*;
panda::ecmascript::TSManager::IsStaticFunc*;
panda::ecmascript::TSManager::IsTypedArrayType*;
panda::ecmascript::TSManager::IsValidTypedArrayType*;
panda::ecmascript::TSManager::MethodOffsetIsVaild*;
panda::ecmascript::TSManager::PrintTypeInfo*;
panda::ecmascript::TSManager::SetCurConstantPool*;
panda::ecmascript::TSManager::SetHotnessFunc*;
panda::ecmascript::TSManager::TSManager*;
panda::ecmascript::TSManager::TryNarrowUnionType*;
panda::ecmascript::TSObjLayoutInfo::GetElementIndexByKey*;
panda::ecmascript::TSTypeAccessor::GetAccessorGT*;
panda::ecmascript::TSTypeAccessor::GetClassTypeName*;
panda::ecmascript::TSTypeAccessor::GetFunctionName*;
panda::ecmascript::TSTypeAccessor::GetInitializedProperties*;
panda::ecmascript::TSTypeAccessor::MarkPropertyInitialized*;
panda::ecmascript::TSTypeAccessor::UpdateForEachCBPara*;
panda::ecmascript::TSTypeAccessor::UpdateNonStaticProp*;
panda::ecmascript::TSTypeAccessor::UpdateStaticProp*;
panda::ecmascript::TSTypeParser::CreateGT*;
panda::ecmascript::TSTypeParser::CreatePGOGT*;
panda::ecmascript::TSTypeParser::TSTypeParser*;
panda::ecmascript::TypeAnnotationExtractor::Print*;
panda::ecmascript::TypeAnnotationExtractor::TypeAnnotationExtractor*;
panda::ecmascript::TypeLiteralExtractor::TypeLiteralExtractor*;
panda::ecmascript::Unlink*;
panda::ecmascript::base::utf_helper::ConvertRegionUtf16ToUtf8*;
panda::ecmascript::kungfu::AOTSnapshot::StoreConstantPoolInfo*;
panda::ecmascript::kungfu::ArkStackMapBuilder::Collect*;
panda::ecmascript::kungfu::ArkStackMapBuilder::GenerateArkStackMap*;
panda::ecmascript::kungfu::ArkStackMapBuilder::Run*;
panda::ecmascript::kungfu::PGOBCInfo::Record*;
panda::ecmascript::kungfu::PGOTypeManager::GetElementsIndexByEntityId*;
panda::ecmascript::kungfu::PGOTypeManager::GetHClassIndexByProfileType*;
panda::ecmascript::kungfu::PGOTypeManager::InitAOTSnapshot*;
panda::ecmascript::kungfu::PGOTypeManager::QueryHClass*;
panda::ecmascript::kungfu::PGOTypeManager::RecordElements*;
panda::ecmascript::kungfu::PGOTypeManager::SetCurConstantPool*;
panda::ecmascript::kungfu::PGOTypeParser::CreatePGOType*;
panda::ecmascript::kungfu::PGOTypeParser::PGOTypeParser*;
panda::ecmascript::kungfu::PGOTypeRecorder::GetElementsKindForCreater*;
panda::ecmascript::kungfu::PGOTypeRecorder::GetElementsKindsForUser*;
panda::ecmascript::kungfu::PGOTypeRecorder::GetElementsLength*;
panda::ecmascript::kungfu::PGOTypeRecorder::GetPGOType*;
panda::ecmascript::kungfu::PGOTypeRecorder::PGOTypeRecorder*;
panda::ecmascript::kungfu::ReviseData::Resolve*;
panda::ecmascript::kungfu::SnapshotConstantPoolData::Record*;
panda::ecmascript::ohos::DecrypRemoveKey*;
panda::ecmascript::ohos::DecryptAssociateKey*;
panda::ecmascript::ohos::DecryptSetKey*;
panda::ecmascript::pgo::ApNameUtils::GetMergedApName*;
panda::ecmascript::pgo::ApNameUtils::GetOhosPkgApName*;
panda::ecmascript::pgo::ApNameUtils::GetRuntimeApName*;
panda::ecmascript::pgo::PGOMethodInfo::CalcChecksum*;
panda::ecmascript::pgo::PGOProfiler::ProfileCreateObject*;
panda::ecmascript::pgo::PGOProfilerManager::GetInstance*;
panda::ecmascript::pgo::PGOProfilerManager::MergeApFiles*;
panda::panda_file::ClassDataAccessor::ClassDataAccessor*;
panda::panda_file::CodeDataAccessor::CatchBlock::CatchBlock*;
panda::panda_file::CodeDataAccessor::CodeDataAccessor*;
panda::panda_file::CodeDataAccessor::TryBlock::TryBlock*;
panda::panda_file::FieldDataAccessor::FieldDataAccessor*;
panda::panda_file::FieldDataAccessor::GetValueInternal*;
panda::panda_file::MethodDataAccessor::MethodDataAccessor*;
};
extern "C" {
get_ark_js_heap_crash_info;