From cf3474c016afc9daa9937ecc223a2f5d9f3fbe29 Mon Sep 17 00:00:00 2001 From: Graham Date: Sat, 2 May 2020 23:51:09 +0100 Subject: [PATCH] Convert createIntConstant to an extension method on Int Signed-off-by: Graham --- .../java/dev/openrs2/asm/InsnNodeUtils.kt | 8 ++--- .../transform/BufferSizeTransformer.kt | 4 +-- .../transform/PlatformDetectionTransformer.kt | 6 ++-- .../bundler/transform/ResourceTransformer.kt | 30 +++++++++---------- .../deob/transform/BitShiftTransformer.kt | 4 +-- .../deob/transform/ConstantArgTransformer.kt | 4 +-- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.kt b/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.kt index 3d9135b7..0b6c0fe8 100644 --- a/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.kt +++ b/asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.kt @@ -281,7 +281,7 @@ val AbstractInsnNode.isPure: Boolean else -> throw IllegalArgumentException() } -fun createIntConstant(value: Int): AbstractInsnNode = when (value) { +fun Int.toAbstractInsnNode(): AbstractInsnNode = when (this) { -1 -> InsnNode(Opcodes.ICONST_M1) 0 -> InsnNode(Opcodes.ICONST_0) 1 -> InsnNode(Opcodes.ICONST_1) @@ -289,9 +289,9 @@ fun createIntConstant(value: Int): AbstractInsnNode = when (value) { 3 -> InsnNode(Opcodes.ICONST_3) 4 -> InsnNode(Opcodes.ICONST_4) 5 -> InsnNode(Opcodes.ICONST_5) - in Byte.MIN_VALUE..Byte.MAX_VALUE -> IntInsnNode(Opcodes.BIPUSH, value) - in Short.MIN_VALUE..Short.MAX_VALUE -> IntInsnNode(Opcodes.SIPUSH, value) - else -> LdcInsnNode(value) + in Byte.MIN_VALUE..Byte.MAX_VALUE -> IntInsnNode(Opcodes.BIPUSH, this) + in Short.MIN_VALUE..Short.MAX_VALUE -> IntInsnNode(Opcodes.SIPUSH, this) + else -> LdcInsnNode(this) } fun AbstractInsnNode.toPrettyString(): String { diff --git a/bundler/src/main/java/dev/openrs2/bundler/transform/BufferSizeTransformer.kt b/bundler/src/main/java/dev/openrs2/bundler/transform/BufferSizeTransformer.kt index 0b3cab7d..5696fa4b 100644 --- a/bundler/src/main/java/dev/openrs2/bundler/transform/BufferSizeTransformer.kt +++ b/bundler/src/main/java/dev/openrs2/bundler/transform/BufferSizeTransformer.kt @@ -5,8 +5,8 @@ import dev.openrs2.asm.InsnMatcher import dev.openrs2.asm.MemberRef import dev.openrs2.asm.classpath.ClassPath import dev.openrs2.asm.classpath.Library -import dev.openrs2.asm.createIntConstant import dev.openrs2.asm.hasCode +import dev.openrs2.asm.toAbstractInsnNode import dev.openrs2.asm.transform.Transformer import org.objectweb.asm.tree.ClassNode import org.objectweb.asm.tree.FieldInsnNode @@ -46,7 +46,7 @@ class BufferSizeTransformer : Transformer() { for (match in NEW_BUFFER_MATCHER.match(method)) { val putstatic = match[4] as FieldInsnNode if (MemberRef(putstatic) == buffer!!) { - method.instructions[match[2]] = createIntConstant(65536) + method.instructions[match[2]] = 65536.toAbstractInsnNode() buffersResized++ } } diff --git a/bundler/src/main/java/dev/openrs2/bundler/transform/PlatformDetectionTransformer.kt b/bundler/src/main/java/dev/openrs2/bundler/transform/PlatformDetectionTransformer.kt index 3686eb0a..97400a38 100644 --- a/bundler/src/main/java/dev/openrs2/bundler/transform/PlatformDetectionTransformer.kt +++ b/bundler/src/main/java/dev/openrs2/bundler/transform/PlatformDetectionTransformer.kt @@ -5,8 +5,8 @@ import dev.openrs2.asm.InsnMatcher import dev.openrs2.asm.MemberRef import dev.openrs2.asm.classpath.ClassPath import dev.openrs2.asm.classpath.Library -import dev.openrs2.asm.createIntConstant import dev.openrs2.asm.intConstant +import dev.openrs2.asm.toAbstractInsnNode import dev.openrs2.asm.transform.Transformer import org.objectweb.asm.Opcodes import org.objectweb.asm.tree.AbstractInsnNode @@ -93,12 +93,12 @@ class PlatformDetectionTransformer : Transformer() { list.add(JumpInsnNode(Opcodes.IFEQ, i386)) list.add(amd64) - list.add(createIntConstant(index * 2 + 1)) + list.add((index * 2 + 1).toAbstractInsnNode()) list.add(VarInsnNode(Opcodes.ISTORE, platformVar)) list.add(JumpInsnNode(Opcodes.GOTO, end)) list.add(i386) - list.add(createIntConstant(index * 2)) + list.add((index * 2).toAbstractInsnNode()) list.add(VarInsnNode(Opcodes.ISTORE, platformVar)) list.add(JumpInsnNode(Opcodes.GOTO, end)) diff --git a/bundler/src/main/java/dev/openrs2/bundler/transform/ResourceTransformer.kt b/bundler/src/main/java/dev/openrs2/bundler/transform/ResourceTransformer.kt index 5b80a192..da3fec9d 100644 --- a/bundler/src/main/java/dev/openrs2/bundler/transform/ResourceTransformer.kt +++ b/bundler/src/main/java/dev/openrs2/bundler/transform/ResourceTransformer.kt @@ -4,7 +4,7 @@ import com.github.michaelbull.logging.InlineLogger import dev.openrs2.asm.InsnMatcher import dev.openrs2.asm.classpath.ClassPath import dev.openrs2.asm.classpath.Library -import dev.openrs2.asm.createIntConstant +import dev.openrs2.asm.toAbstractInsnNode import dev.openrs2.asm.transform.Transformer import dev.openrs2.bundler.Resource import org.objectweb.asm.Opcodes @@ -44,12 +44,12 @@ class ResourceTransformer( source.cst = resource.sourceWithCrc // update file sizes - method.instructions.set(match[22], createIntConstant(resource.uncompressedSize)) - method.instructions.set(match[23], createIntConstant(resource.compressedSize)) + method.instructions.set(match[22], resource.uncompressedSize.toAbstractInsnNode()) + method.instructions.set(match[23], resource.compressedSize.toAbstractInsnNode()) // update digest for ((j, byte) in resource.digest.withIndex()) { - method.instructions.set(match[28 + 4 * j], createIntConstant(byte.toInt())) + method.instructions.set(match[28 + 4 * j], byte.toInt().toAbstractInsnNode()) } } } @@ -105,12 +105,12 @@ class ResourceTransformer( resources: List>, messages: List ) { - list.add(createIntConstant(resources.size)) + list.add(resources.size.toAbstractInsnNode()) list.add(TypeInsnNode(Opcodes.ANEWARRAY, "[L$type;")) for ((i, innerResources) in resources.withIndex()) { list.add(InsnNode(Opcodes.DUP)) - list.add(createIntConstant(i)) + list.add(i.toAbstractInsnNode()) createResourceArray(list, type, innerResources, messages, progressSufix = true) @@ -125,19 +125,19 @@ class ResourceTransformer( messages: List, progressSufix: Boolean = false ) { - list.add(createIntConstant(resources.size)) + list.add(resources.size.toAbstractInsnNode()) list.add(TypeInsnNode(Opcodes.ANEWARRAY, type)) for ((i, resource) in resources.withIndex()) { list.add(InsnNode(Opcodes.DUP)) - list.add(createIntConstant(i)) + list.add(i.toAbstractInsnNode()) list.add(TypeInsnNode(Opcodes.NEW, type)) list.add(InsnNode(Opcodes.DUP)) list.add(LdcInsnNode(resource.destination)) list.add(LdcInsnNode(resource.sourceWithCrc)) - list.add(createIntConstant(messages.size)) + list.add(messages.size.toAbstractInsnNode()) list.add(TypeInsnNode(Opcodes.ANEWARRAY, "java/lang/String")) for ((j, message) in messages.withIndex()) { @@ -148,21 +148,21 @@ class ResourceTransformer( } list.add(InsnNode(Opcodes.DUP)) - list.add(createIntConstant(j)) + list.add(j.toAbstractInsnNode()) list.add(LdcInsnNode(messageWithSuffix)) list.add(InsnNode(Opcodes.AASTORE)) } - list.add(createIntConstant(resource.uncompressedSize)) - list.add(createIntConstant(resource.compressedSize)) + list.add(resource.uncompressedSize.toAbstractInsnNode()) + list.add(resource.compressedSize.toAbstractInsnNode()) - list.add(createIntConstant(resource.digest.size)) + list.add(resource.digest.size.toAbstractInsnNode()) list.add(IntInsnNode(Opcodes.NEWARRAY, Opcodes.T_INT)) for ((j, byte) in resource.digest.withIndex()) { list.add(InsnNode(Opcodes.DUP)) - list.add(createIntConstant(j)) - list.add(createIntConstant(byte.toInt())) + list.add(j.toAbstractInsnNode()) + list.add(byte.toInt().toAbstractInsnNode()) list.add(InsnNode(Opcodes.IASTORE)) } diff --git a/deob/src/main/java/dev/openrs2/deob/transform/BitShiftTransformer.kt b/deob/src/main/java/dev/openrs2/deob/transform/BitShiftTransformer.kt index 6b0b8e87..b0d937d5 100644 --- a/deob/src/main/java/dev/openrs2/deob/transform/BitShiftTransformer.kt +++ b/deob/src/main/java/dev/openrs2/deob/transform/BitShiftTransformer.kt @@ -4,8 +4,8 @@ import com.github.michaelbull.logging.InlineLogger import dev.openrs2.asm.InsnMatcher import dev.openrs2.asm.classpath.ClassPath import dev.openrs2.asm.classpath.Library -import dev.openrs2.asm.createIntConstant import dev.openrs2.asm.intConstant +import dev.openrs2.asm.toAbstractInsnNode import dev.openrs2.asm.transform.Transformer import org.objectweb.asm.Opcodes import org.objectweb.asm.tree.ClassNode @@ -36,7 +36,7 @@ class BitShiftTransformer : Transformer() { val simplifiedBits = bits and mask if (bits != simplifiedBits) { - method.instructions[push] = createIntConstant(simplifiedBits) + method.instructions[push] = simplifiedBits.toAbstractInsnNode() simplified++ } } diff --git a/deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.kt b/deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.kt index 6d0ff2c0..4fd29c92 100644 --- a/deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.kt +++ b/deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.kt @@ -5,7 +5,6 @@ import dev.openrs2.asm.MemberRef import dev.openrs2.asm.classpath.ClassPath import dev.openrs2.asm.classpath.Library import dev.openrs2.asm.copy -import dev.openrs2.asm.createIntConstant import dev.openrs2.asm.deleteExpression import dev.openrs2.asm.hasCode import dev.openrs2.asm.intConstant @@ -13,6 +12,7 @@ import dev.openrs2.asm.isPure import dev.openrs2.asm.nextReal import dev.openrs2.asm.replaceExpression import dev.openrs2.asm.stackMetadata +import dev.openrs2.asm.toAbstractInsnNode import dev.openrs2.asm.transform.Transformer import dev.openrs2.deob.ArgRef import dev.openrs2.deob.analysis.IntBranch @@ -286,7 +286,7 @@ class ConstantArgTransformer : Transformer() { continue } - val replacement = createIntConstant(value) + val replacement = value.toAbstractInsnNode() if (method.instructions.replaceExpression(insn, replacement, AbstractInsnNode::isPure)) { inlined++ }