Convert createIntConstant to an extension method on Int

Signed-off-by: Graham <gpe@openrs2.dev>
pull/105/head
Graham 4 years ago
parent 2471418d4a
commit cf3474c016
  1. 8
      asm/src/main/java/dev/openrs2/asm/InsnNodeUtils.kt
  2. 4
      bundler/src/main/java/dev/openrs2/bundler/transform/BufferSizeTransformer.kt
  3. 6
      bundler/src/main/java/dev/openrs2/bundler/transform/PlatformDetectionTransformer.kt
  4. 30
      bundler/src/main/java/dev/openrs2/bundler/transform/ResourceTransformer.kt
  5. 4
      deob/src/main/java/dev/openrs2/deob/transform/BitShiftTransformer.kt
  6. 4
      deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.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 {

@ -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++
}
}

@ -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))

@ -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<List<Resource>>,
messages: List<String>
) {
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<String>,
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))
}

@ -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++
}
}

@ -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++
}

Loading…
Cancel
Save