mirror of
https://gitee.com/openharmony/arkcompiler_ets_runtime
synced 2024-10-07 08:03:29 +00:00
Fix the bug of AOT-PGO trackfield
fix the bug of AOT-PGO trackfield Issue: https://gitee.com/open_harmony/dashboard?issue_id=I7WDU9 Signed-off-by: weng-xi <wengxi1@huawei.com> Change-Id: I3dba3bd4fd5c0803d8ff582fb5f45bfda517ee2c
This commit is contained in:
parent
2f63cdec27
commit
3c9f152c12
@ -53,6 +53,9 @@ void TSHClassGenerator::UpdateTSHClassFromPGO(const kungfu::GateType &type, cons
|
||||
if (!enableOptTrackField) {
|
||||
return;
|
||||
}
|
||||
if (tsManager_->IsInSkipTrackFieldSet(desc.GetClassType())) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<JSHClass *> superHClasses;
|
||||
kungfu::GateType current = type;
|
||||
|
@ -119,6 +119,10 @@ void PGOTypeInferHelper::CollectGateType(CollectedType &types, GateType tsType,
|
||||
for (uint32_t i = 0; i < pgoTypes.GetCount(); i++) {
|
||||
ClassType classType = pgoTypes.GetObjectInfo(i).GetClassType();
|
||||
GateType pgoType = tsManager_->GetGateTypeByPt(classType);
|
||||
if (pgoType.IsAnyType()) {
|
||||
tsManager_->AddToSkipTrackFieldSet(classType);
|
||||
continue;
|
||||
}
|
||||
if (tsManager_->IsClassTypeKind(pgoType) && !pgoTypes.GetObjectInfo(i).InConstructor()) {
|
||||
pgoType = GateType(tsManager_->CreateClassInstanceType(pgoType));
|
||||
}
|
||||
|
@ -890,6 +890,16 @@ public:
|
||||
return kungfu::GateType::AnyType();
|
||||
}
|
||||
|
||||
inline void AddToSkipTrackFieldSet(ClassType type)
|
||||
{
|
||||
skipTrackFieldSet_.insert(type);
|
||||
}
|
||||
|
||||
inline bool IsInSkipTrackFieldSet(ClassType type)
|
||||
{
|
||||
return skipTrackFieldSet_.find(type) != skipTrackFieldSet_.end();
|
||||
}
|
||||
|
||||
void PrintNumOfTypes() const;
|
||||
|
||||
void PrintTypeInfo(const JSPandaFile *jsPandaFile) const;
|
||||
@ -1020,6 +1030,7 @@ private:
|
||||
ObjectFactory *factory_ {nullptr};
|
||||
JSTaggedValue globalModuleTable_ {JSTaggedValue::Hole()};
|
||||
CMap<ClassType, const kungfu::GateType> ptToGtMap_ {};
|
||||
std::set<ClassType> skipTrackFieldSet_ {};
|
||||
std::map<GlobalTSTypeRef, IHClassData> gtIhcMap_ {};
|
||||
std::map<GlobalTSTypeRef, IHClassData> gtConstructorhcMap_ {};
|
||||
std::unordered_map<TypeLocation, GlobalTSTypeRef, HashTypeLocation> literalGTMap_ {};
|
||||
|
Loading…
Reference in New Issue
Block a user