Convert stackMetadata to an extension property

It feels much more like a property than a function.

Signed-off-by: Graham <gpe@openrs2.dev>
bzip2
Graham 5 years ago
parent b6f7576864
commit 47d1bc0bd2
  1. 2
      asm/src/main/java/dev/openrs2/asm/InsnListUtils.kt
  2. 5
      asm/src/main/java/dev/openrs2/asm/StackMetadata.kt
  3. 2
      deob/src/main/java/dev/openrs2/deob/transform/ConstantArgTransformer.kt

@ -14,7 +14,7 @@ fun getExpression(
var height = 0
var insn: AbstractInsnNode? = last
do {
val (pops, pushes) = insn!!.stackMetadata()
val (pops, pushes) = insn!!.stackMetadata
if (insn !== last) {
expr.add(insn)
height -= pushes

@ -181,7 +181,8 @@ private val SIMPLE_OPCODES = mapOf(
Opcodes.IFNONNULL to POP1
)
fun AbstractInsnNode.stackMetadata(): StackMetadata = when (this) {
val AbstractInsnNode.stackMetadata
get() = when (this) {
is LdcInsnNode -> if (cst is Double || cst is Long) {
PUSH2
} else {
@ -213,4 +214,4 @@ fun AbstractInsnNode.stackMetadata(): StackMetadata = when (this) {
is InvokeDynamicInsnNode -> throw UnsupportedOperationException()
is MultiANewArrayInsnNode -> StackMetadata(dims, 1)
else -> SIMPLE_OPCODES[opcode] ?: throw IllegalArgumentException()
}
}

@ -262,7 +262,7 @@ class ConstantArgTransformer : Transformer() {
} else if (!insn.pure) {
// can't replace instructions with a side effect
continue
} else if (insn.stackMetadata().pushes != 1) {
} else if (insn.stackMetadata.pushes != 1) {
// can't replace instructions pushing more than one result
continue
}

Loading…
Cancel
Save