From bfdfc2f211b759b3161360a234ca5d8676d0d15f Mon Sep 17 00:00:00 2001 From: Graham Date: Mon, 23 Dec 2019 18:37:44 +0000 Subject: [PATCH] Simplify ClassPath::get with computeIfAbsent Unfortunately we can't do this in populateInherited{Field,Method} sets, as they are recursive. --- .../dev/openrs2/asm/classpath/ClassPath.kt | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/asm/src/main/java/dev/openrs2/asm/classpath/ClassPath.kt b/asm/src/main/java/dev/openrs2/asm/classpath/ClassPath.kt index 74b2446e..a06a99a3 100644 --- a/asm/src/main/java/dev/openrs2/asm/classpath/ClassPath.kt +++ b/asm/src/main/java/dev/openrs2/asm/classpath/ClassPath.kt @@ -26,27 +26,18 @@ class ClassPath( return classes } - operator fun get(name: String): ClassMetadata { - var metadata = cache[name] - if (metadata != null) { - return metadata - } - + operator fun get(name: String): ClassMetadata = cache.computeIfAbsent(name) { for (library in libraries) { val clazz = library[name] if (clazz != null) { - metadata = AsmClassMetadata(this, clazz, false) - cache[name] = metadata - return metadata + return@computeIfAbsent AsmClassMetadata(this, clazz, false) } } for (library in dependencies) { val clazz = library[name] if (clazz != null) { - metadata = AsmClassMetadata(this, clazz, true) - cache[name] = metadata - return metadata + return@computeIfAbsent AsmClassMetadata(this, clazz, true) } } @@ -58,9 +49,7 @@ class ClassPath( throw IllegalArgumentException("Unknown class $name") } - metadata = ReflectionClassMetadata(this, clazz) - cache[name] = metadata - return metadata + return@computeIfAbsent ReflectionClassMetadata(this, clazz) } fun getNode(name: String): ClassNode? {