Fix GarbageCollectCache got removed

Co-authored-by: JingMatrix <jingmatrix@gmail.com>
This commit is contained in:
LoveSy 2024-07-24 00:39:03 +08:00
parent 5121a21064
commit 0d9faca38d
No known key found for this signature in database

View File

@ -22,14 +22,23 @@ export class JitCodeCache {
}
}
void MoveObsoleteMethods() {
auto movements = GetJitMovements();
LOGD("Before jit cache collection, moving %zu hooked methods", movements.size());
for (auto [target, backup] : movements) {
MoveObsoleteMethod(this, target, backup);
}
}
CREATE_MEM_HOOK_STUB_ENTRY("_ZN3art3jit12JitCodeCache19GarbageCollectCacheEPNS_6ThreadE", void,
GarbageCollectCache, (JitCodeCache * thiz, Thread *self), {
auto movements = GetJitMovements();
LOGD("Before jit cache gc, moving %zu hooked methods",
movements.size());
for (auto [target, backup] : movements) {
MoveObsoleteMethod(thiz, target, backup);
}
thiz->MoveObsoleteMethods();
backup(thiz, self);
});
CREATE_MEM_HOOK_STUB_ENTRY("_ZN3art3jit12JitCodeCache12DoCollectionEPNS_6ThreadE", void,
DoCollection, (JitCodeCache * thiz, Thread *self), {
thiz->MoveObsoleteMethods();
backup(thiz, self);
});
@ -45,7 +54,7 @@ public:
}
}
if (sdk_int >= __ANDROID_API_N__) [[likely]] {
if (!HookSyms(handler, GarbageCollectCache)) [[unlikely]] {
if (!HookSyms(handler, GarbageCollectCache, DoCollection)) [[unlikely]] {
return false;
}
}