Modify rename MemberCacheStore to ReflectsCacheStore

This commit is contained in:
2022-09-04 21:24:14 +08:00
parent 6d8d7bb86e
commit 5308a8a2ce
4 changed files with 16 additions and 16 deletions

View File

@@ -46,7 +46,7 @@ import com.highcapable.yukihookapi.hook.log.*
import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.param.type.HookEntryType import com.highcapable.yukihookapi.hook.param.type.HookEntryType
import com.highcapable.yukihookapi.hook.param.wrapper.PackageParamWrapper import com.highcapable.yukihookapi.hook.param.wrapper.PackageParamWrapper
import com.highcapable.yukihookapi.hook.store.MemberCacheStore import com.highcapable.yukihookapi.hook.store.ReflectsCacheStore
import com.highcapable.yukihookapi.hook.xposed.application.ModuleApplication import com.highcapable.yukihookapi.hook.xposed.application.ModuleApplication
import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
@@ -255,7 +255,7 @@ object YukiHookAPI {
* *
* 启用后会缓存已经找到的 [Class]、[Method]、[Constructor]、[Field] * 启用后会缓存已经找到的 [Class]、[Method]、[Constructor]、[Field]
* *
* 缓存的 [Member] 都将处于 [MemberCacheStore] 的全局静态实例中 * 缓存的 [Member] 都将处于 [ReflectsCacheStore] 的全局静态实例中
* *
* 推荐使用 [MethodFinder]、[ConstructorFinder]、[FieldFinder] 来获取 [Member] * 推荐使用 [MethodFinder]、[ConstructorFinder]、[FieldFinder] 来获取 [Member]
* *

View File

@@ -30,7 +30,7 @@ package com.highcapable.yukihookapi.hook.core.reflex.tools
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
import com.highcapable.yukihookapi.hook.core.finder.type.NameConditions import com.highcapable.yukihookapi.hook.core.finder.type.NameConditions
import com.highcapable.yukihookapi.hook.factory.hasExtends import com.highcapable.yukihookapi.hook.factory.hasExtends
import com.highcapable.yukihookapi.hook.store.MemberCacheStore import com.highcapable.yukihookapi.hook.store.ReflectsCacheStore
import com.highcapable.yukihookapi.hook.type.defined.UndefinedType import com.highcapable.yukihookapi.hook.type.defined.UndefinedType
import java.lang.reflect.Constructor import java.lang.reflect.Constructor
import java.lang.reflect.Field import java.lang.reflect.Field
@@ -74,7 +74,7 @@ internal object ReflectionTool {
if (orderIndex == null && matchIndex == null && name.isBlank() && modifiers == null && type == null) if (orderIndex == null && matchIndex == null && name.isBlank() && modifiers == null && type == null)
error("You must set a condition when finding a Field") error("You must set a condition when finding a Field")
val hashCode = ("[$orderIndex][$matchIndex][$name][$type][$modifiers][$classSet]").hashCode() val hashCode = ("[$orderIndex][$matchIndex][$name][$type][$modifiers][$classSet]").hashCode()
return MemberCacheStore.findFields(hashCode) ?: let { return ReflectsCacheStore.findFields(hashCode) ?: let {
val fields = HashSet<Field>() val fields = HashSet<Field>()
classSet?.declaredFields?.apply { classSet?.declaredFields?.apply {
var typeIndex = -1 var typeIndex = -1
@@ -135,7 +135,7 @@ internal object ReflectionTool {
if (conditions && isMatched) fields.add(it.apply { isAccessible = true }) if (conditions && isMatched) fields.add(it.apply { isAccessible = true })
} }
} ?: error("Can't find this Field [$name] because classSet is null") } ?: error("Can't find this Field [$name] because classSet is null")
fields.takeIf { it.isNotEmpty() }?.also { MemberCacheStore.putFields(hashCode, fields) } fields.takeIf { it.isNotEmpty() }?.also { ReflectsCacheStore.putFields(hashCode, fields) }
?: if (isFindInSuperClass && classSet.hasExtends) ?: if (isFindInSuperClass && classSet.hasExtends)
findFields( findFields(
classSet.superclass, classSet.superclass,
@@ -208,7 +208,7 @@ internal object ReflectionTool {
) error("You must set a condition when finding a Method") ) error("You must set a condition when finding a Method")
val hashCode = val hashCode =
("[$orderIndex][$matchIndex][$name][$paramCount][${paramTypes.typeOfString()}][$returnType][$modifiers][$classSet]").hashCode() ("[$orderIndex][$matchIndex][$name][$paramCount][${paramTypes.typeOfString()}][$returnType][$modifiers][$classSet]").hashCode()
return MemberCacheStore.findMethods(hashCode) ?: let { return ReflectsCacheStore.findMethods(hashCode) ?: let {
val methods = HashSet<Method>() val methods = HashSet<Method>()
classSet?.declaredMethods?.apply { classSet?.declaredMethods?.apply {
var returnTypeIndex = -1 var returnTypeIndex = -1
@@ -309,7 +309,7 @@ internal object ReflectionTool {
if (conditions && isMatched) methods.add(it.apply { isAccessible = true }) if (conditions && isMatched) methods.add(it.apply { isAccessible = true })
} }
} ?: error("Can't find this Method [$name] because classSet is null") } ?: error("Can't find this Method [$name] because classSet is null")
methods.takeIf { it.isNotEmpty() }?.also { MemberCacheStore.putMethods(hashCode, methods) } methods.takeIf { it.isNotEmpty() }?.also { ReflectsCacheStore.putMethods(hashCode, methods) }
?: if (isFindInSuperClass && classSet.hasExtends) ?: if (isFindInSuperClass && classSet.hasExtends)
findMethods( findMethods(
classSet.superclass, classSet.superclass,
@@ -377,7 +377,7 @@ internal object ReflectionTool {
paramCountRange.isEmpty() && paramTypes == null paramCountRange.isEmpty() && paramTypes == null
) error("You must set a condition when finding a Constructor") ) error("You must set a condition when finding a Constructor")
val hashCode = ("[$orderIndex][$matchIndex][$paramCount][${paramTypes.typeOfString()}][$modifiers][$classSet]").hashCode() val hashCode = ("[$orderIndex][$matchIndex][$paramCount][${paramTypes.typeOfString()}][$modifiers][$classSet]").hashCode()
return MemberCacheStore.findConstructors(hashCode) ?: let { return ReflectsCacheStore.findConstructors(hashCode) ?: let {
val constructors = HashSet<Constructor<*>>() val constructors = HashSet<Constructor<*>>()
classSet?.declaredConstructors?.apply { classSet?.declaredConstructors?.apply {
var paramTypeIndex = -1 var paramTypeIndex = -1
@@ -441,7 +441,7 @@ internal object ReflectionTool {
if (conditions && isMatched) constructors.add(it.apply { isAccessible = true }) if (conditions && isMatched) constructors.add(it.apply { isAccessible = true })
} }
} ?: error("Can't find this Constructor because classSet is null") } ?: error("Can't find this Constructor because classSet is null")
return constructors.takeIf { it.isNotEmpty() }?.also { MemberCacheStore.putConstructors(hashCode, constructors) } return constructors.takeIf { it.isNotEmpty() }?.also { ReflectsCacheStore.putConstructors(hashCode, constructors) }
?: if (isFindInSuperClass && classSet.hasExtends) ?: if (isFindInSuperClass && classSet.hasExtends)
findConstructors( findConstructors(
classSet.superclass, classSet.superclass,

View File

@@ -35,7 +35,7 @@ import com.highcapable.yukihookapi.hook.core.finder.members.ConstructorFinder
import com.highcapable.yukihookapi.hook.core.finder.members.FieldFinder import com.highcapable.yukihookapi.hook.core.finder.members.FieldFinder
import com.highcapable.yukihookapi.hook.core.finder.members.MethodFinder import com.highcapable.yukihookapi.hook.core.finder.members.MethodFinder
import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules import com.highcapable.yukihookapi.hook.core.finder.type.ModifierRules
import com.highcapable.yukihookapi.hook.store.MemberCacheStore import com.highcapable.yukihookapi.hook.store.ReflectsCacheStore
import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge import com.highcapable.yukihookapi.hook.xposed.bridge.YukiHookBridge
import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiHookHelper import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiHookHelper
import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus import com.highcapable.yukihookapi.hook.xposed.bridge.status.YukiHookModuleStatus
@@ -82,7 +82,7 @@ val Class<*>.hasExtends get() = superclass.name != "java.lang.Object"
*/ */
fun classOf(name: String, loader: ClassLoader? = null): Class<*> { fun classOf(name: String, loader: ClassLoader? = null): Class<*> {
val hashCode = ("[$name][$loader]").hashCode() val hashCode = ("[$name][$loader]").hashCode()
return MemberCacheStore.findClass(hashCode) ?: run { return ReflectsCacheStore.findClass(hashCode) ?: run {
when { when {
YukiHookBridge.hasXposedBridge -> YukiHookBridge.hasXposedBridge ->
runCatching { YukiHookHelper.findClass(name, loader) }.getOrNull() runCatching { YukiHookHelper.findClass(name, loader) }.getOrNull()
@@ -92,7 +92,7 @@ fun classOf(name: String, loader: ClassLoader? = null): Class<*> {
} }
loader == null -> Class.forName(name) loader == null -> Class.forName(name)
else -> loader.loadClass(name) else -> loader.loadClass(name)
}.also { MemberCacheStore.putClass(hashCode, it) } }.also { ReflectsCacheStore.putClass(hashCode, it) }
} }
} }

View File

@@ -34,13 +34,13 @@ import java.lang.reflect.Member
import java.lang.reflect.Method import java.lang.reflect.Method
/** /**
* 这是一个全局静态的 [Member] 缓存实例 * 这是一个全局静态的 [Class][Member] 缓存实例
* *
* 为防止 [Member] 复用过高造成的系统 GC 问题 * 为防止 [Class][Member] 复用过高造成的系统 GC 问题
* *
* 查询后的 [Member] [YukiHookAPI.Configs.isEnableMemberCache] 启用后自动进入缓存 * 查询后的 [Class][Member] [YukiHookAPI.Configs.isEnableMemberCache] 启用后自动进入缓存
*/ */
internal object MemberCacheStore { internal object ReflectsCacheStore {
/** 缓存的 [Class] */ /** 缓存的 [Class] */
private val classData = HashMap<Int, Class<*>?>() private val classData = HashMap<Int, Class<*>?>()