Skip to content

Commit 5628204

Browse files
refactor
1 parent d1d5557 commit 5628204

File tree

2 files changed

+20
-55
lines changed

2 files changed

+20
-55
lines changed

api/revanced-patcher.api

+11-17
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,16 @@ public final class app/revanced/patcher/InstructionFilterKt {
9797
public static synthetic fun fieldAccess$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/FieldAccessFilter;
9898
public static synthetic fun fieldAccess$default (Ljava/lang/String;Ljava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/FieldAccessFilter;
9999
public static synthetic fun fieldAccess$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Ljava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/FieldAccessFilter;
100-
public static final fun literal (DLjava/util/List;I)Lapp/revanced/patcher/LiteralWideFilter;
101-
public static final fun literal (FLjava/util/List;I)Lapp/revanced/patcher/LiteralNarrowFilter;
102-
public static final fun literal (ILjava/util/List;I)Lapp/revanced/patcher/LiteralNarrowFilter;
103-
public static final fun literal (JLjava/util/List;I)Lapp/revanced/patcher/LiteralWideFilter;
104-
public static final fun literal (Lkotlin/jvm/functions/Function1;Ljava/util/List;I)Lapp/revanced/patcher/LiteralWideFilter;
105-
public static synthetic fun literal$default (DLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralWideFilter;
106-
public static synthetic fun literal$default (FLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralNarrowFilter;
107-
public static synthetic fun literal$default (ILjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralNarrowFilter;
108-
public static synthetic fun literal$default (JLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralWideFilter;
109-
public static synthetic fun literal$default (Lkotlin/jvm/functions/Function1;Ljava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralWideFilter;
100+
public static final fun literal (DLjava/util/List;I)Lapp/revanced/patcher/LiteralFilter;
101+
public static final fun literal (FLjava/util/List;I)Lapp/revanced/patcher/LiteralFilter;
102+
public static final fun literal (ILjava/util/List;I)Lapp/revanced/patcher/LiteralFilter;
103+
public static final fun literal (JLjava/util/List;I)Lapp/revanced/patcher/LiteralFilter;
104+
public static final fun literal (Lkotlin/jvm/functions/Function1;Ljava/util/List;I)Lapp/revanced/patcher/LiteralFilter;
105+
public static synthetic fun literal$default (DLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
106+
public static synthetic fun literal$default (FLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
107+
public static synthetic fun literal$default (ILjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
108+
public static synthetic fun literal$default (JLjava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
109+
public static synthetic fun literal$default (Lkotlin/jvm/functions/Function1;Ljava/util/List;IILjava/lang/Object;)Lapp/revanced/patcher/LiteralFilter;
110110
public static final fun methodCall (Ljava/lang/String;Lcom/android/tools/smali/dexlib2/Opcode;I)Lapp/revanced/patcher/MethodCallFilter;
111111
public static final fun methodCall (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lcom/android/tools/smali/dexlib2/Opcode;I)Lapp/revanced/patcher/MethodCallFilter;
112112
public static final fun methodCall (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/util/List;I)Lapp/revanced/patcher/MethodCallFilter;
@@ -132,13 +132,7 @@ public final class app/revanced/patcher/InstructionFilterKt {
132132
public abstract interface annotation class app/revanced/patcher/InternalApi : java/lang/annotation/Annotation {
133133
}
134134

135-
public final class app/revanced/patcher/LiteralNarrowFilter : app/revanced/patcher/OpcodesFilter {
136-
public final fun getLiteral ()Lkotlin/jvm/functions/Function1;
137-
public fun matches (Lapp/revanced/patcher/patch/BytecodePatchContext;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;)Z
138-
public final fun setLiteral (Lkotlin/jvm/functions/Function1;)V
139-
}
140-
141-
public final class app/revanced/patcher/LiteralWideFilter : app/revanced/patcher/OpcodesFilter {
135+
public final class app/revanced/patcher/LiteralFilter : app/revanced/patcher/OpcodesFilter {
142136
public final fun getLiteral ()Lkotlin/jvm/functions/Function1;
143137
public fun matches (Lapp/revanced/patcher/patch/BytecodePatchContext;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;)Z
144138
public final fun setLiteral (Lkotlin/jvm/functions/Function1;)V

src/main/kotlin/app/revanced/patcher/InstructionFilter.kt

+9-38
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import app.revanced.patcher.patch.BytecodePatchContext
77
import com.android.tools.smali.dexlib2.Opcode
88
import com.android.tools.smali.dexlib2.iface.Method
99
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
10-
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
1110
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
1211
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
1312
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
@@ -175,7 +174,7 @@ open class OpcodesFilter private constructor(
175174

176175

177176

178-
class LiteralWideFilter internal constructor(
177+
class LiteralFilter internal constructor(
179178
var literal: (BytecodePatchContext) -> Long,
180179
opcodes: List<Opcode>? = null,
181180
maxAfter: Int,
@@ -202,34 +201,6 @@ class LiteralWideFilter internal constructor(
202201
}
203202
}
204203

205-
class LiteralNarrowFilter internal constructor(
206-
var literal: (BytecodePatchContext) -> Int,
207-
opcodes: List<Opcode>? = null,
208-
maxAfter: Int,
209-
) : OpcodesFilter(opcodes, maxAfter) {
210-
211-
private var literalValue: Int? = null
212-
213-
override fun matches(
214-
context: BytecodePatchContext,
215-
enclosingMethod: Method,
216-
instruction: Instruction
217-
): Boolean {
218-
if (!super.matches(context, enclosingMethod, instruction)) {
219-
return false
220-
}
221-
222-
if (instruction !is NarrowLiteralInstruction) return false
223-
224-
if (literalValue == null) {
225-
literalValue = literal(context)
226-
}
227-
228-
return instruction.narrowLiteral == literalValue
229-
}
230-
}
231-
232-
233204
/**
234205
* Literal value, such as:
235206
* `const v1, 0x7f080318`
@@ -243,7 +214,7 @@ fun literal(
243214
literal: (BytecodePatchContext) -> Long,
244215
opcodes: List<Opcode>? = null,
245216
maxAfter: Int = METHOD_MAX_INSTRUCTIONS,
246-
) = LiteralWideFilter(literal, opcodes, maxAfter)
217+
) = LiteralFilter(literal, opcodes, maxAfter)
247218

248219
/**
249220
* Literal value, such as:
@@ -258,7 +229,7 @@ fun literal(
258229
literal: Long,
259230
opcodes: List<Opcode>? = null,
260231
maxAfter: Int = METHOD_MAX_INSTRUCTIONS,
261-
) = LiteralWideFilter({ literal }, opcodes, maxAfter)
232+
) = LiteralFilter({ literal }, opcodes, maxAfter)
262233

263234
/**
264235
* Integer point literal.
@@ -267,28 +238,28 @@ fun literal(
267238
literal: Int,
268239
opcodes: List<Opcode>? = null,
269240
maxAfter: Int = METHOD_MAX_INSTRUCTIONS,
270-
) = LiteralNarrowFilter({ literal }, opcodes, maxAfter)
241+
) = LiteralFilter({ literal.toLong() }, opcodes, maxAfter)
271242

272243
/**
273244
* Double point literal.
245+
*
246+
* Note: because float and double values are stored as a literal long value,
247+
* using this for a float literal will fail. Instead use the float literal declaration.
274248
*/
275249
fun literal(
276250
literal: Double,
277251
opcodes: List<Opcode>? = null,
278252
maxAfter: Int = METHOD_MAX_INSTRUCTIONS,
279-
) = LiteralWideFilter({ literal.toRawBits() }, opcodes, maxAfter)
253+
) = LiteralFilter({ literal.toRawBits() }, opcodes, maxAfter)
280254

281255
/**
282256
* Floating point literal.
283-
*
284-
* Note: because float and double values are stored as a literal long value,
285-
* using this for a float literal will fail. Instead use the float literal type.
286257
*/
287258
fun literal(
288259
literal: Float,
289260
opcodes: List<Opcode>? = null,
290261
maxAfter: Int = METHOD_MAX_INSTRUCTIONS,
291-
) = LiteralNarrowFilter({ literal.toRawBits() }, opcodes, maxAfter)
262+
) = LiteralFilter({ literal.toRawBits().toLong() }, opcodes, maxAfter)
292263

293264

294265

0 commit comments

Comments
 (0)