aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2018-02-09 16:36:51 -0800
committerBen Gruver <bgruv@google.com>2018-05-23 13:34:16 -0700
commit858d264db97c7b1db20fdef77ea136a12cd6904d (patch)
treedda3ed4d3f6720e10b987cff38efbd02dad7862d
parent9ccda3a1bf35a61dff0b34ff3658f3cbbabfd907 (diff)
downloadsmali-858d264db97c7b1db20fdef77ea136a12cd6904d.tar.gz
Change the name of the invoke method handle types
Change the names to match the name used in the smali grammar
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java41
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java4
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java2
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java4
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java4
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java4
-rw-r--r--dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java4
-rw-r--r--dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java4
8 files changed, 44 insertions, 23 deletions
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java b/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java
index beca8ee3..91bd7231 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java
@@ -31,37 +31,58 @@
package org.jf.dexlib2;
+import com.google.common.collect.Maps;
import org.jf.util.ExceptionWithContext;
import javax.annotation.Nonnull;
+import java.util.Map;
public class MethodHandleType {
public static final int STATIC_PUT = 0;
public static final int STATIC_GET = 1;
public static final int INSTANCE_PUT = 2;
public static final int INSTANCE_GET = 3;
- public static final int INVOKE_STATIC = 4;
- public static final int INVOKE_INSTANCE = 5;
+ public static final int STATIC_INVOKE = 4;
+ public static final int INSTANCE_INVOKE = 5;
+
+ private static final Map<String, Integer> methodHandleTypeNames = Maps.newHashMap();
+
+ static {
+ methodHandleTypeNames.put("static-put", STATIC_PUT);
+ methodHandleTypeNames.put("static-get", STATIC_GET);
+ methodHandleTypeNames.put("instance-put", INSTANCE_PUT);
+ methodHandleTypeNames.put("instance-get", INSTANCE_GET);
+ methodHandleTypeNames.put("static-invoke", STATIC_INVOKE);
+ methodHandleTypeNames.put("instance-invoke", INSTANCE_INVOKE);
+ }
@Nonnull public static String toString(int methodHandleType) {
switch (methodHandleType) {
case STATIC_PUT:
- return "static_put";
+ return "static-put";
case STATIC_GET:
- return "static_get";
+ return "static-get";
case INSTANCE_PUT:
- return "instance_put";
+ return "instance-put";
case INSTANCE_GET:
- return "instance_get";
- case INVOKE_STATIC:
- return "invoke_static";
- case INVOKE_INSTANCE:
- return "invoke_instance";
+ return "instance-get";
+ case STATIC_INVOKE:
+ return "static-invoke";
+ case INSTANCE_INVOKE:
+ return "instance-invoke";
default:
throw new InvalidMethodHandleTypeException(methodHandleType);
}
}
+ public static int getMethodHandleType(String methodHandleType) {
+ Integer ret = methodHandleTypeNames.get(methodHandleType);
+ if (ret == null) {
+ throw new ExceptionWithContext("Invalid method handle type: %s", methodHandleType);
+ }
+ return ret;
+ }
+
public static class InvalidMethodHandleTypeException extends ExceptionWithContext {
private final int methodHandleType;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java
index 12a6f1ee..0e535e9a 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java
@@ -66,8 +66,8 @@ public class DexBackedMethodHandleReference extends BaseMethodHandleReference {
case MethodHandleType.STATIC_GET:
case MethodHandleType.STATIC_PUT:
return new DexBackedFieldReference(dexFile, memberIndex);
- case MethodHandleType.INVOKE_INSTANCE:
- case MethodHandleType.INVOKE_STATIC:
+ case MethodHandleType.INSTANCE_INVOKE:
+ case MethodHandleType.STATIC_INVOKE:
return new DexBackedMethodReference(dexFile, memberIndex);
default:
throw new ExceptionWithContext("Invalid method handle type: %d", getMethodHandleType());
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java
index c034ee3f..a7578f53 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java
@@ -48,7 +48,7 @@ public interface MethodHandleReference extends Reference, Comparable<MethodHandl
/**
* Gets the member that is being referenced by this method handle.
*
- * For INVOKE_STATIC and INVOKE_INSTANCE method handle types, this should be a MethodReference.
+ * For STATIC_INVOKE and INSTANCE_INVOKE method handle types, this should be a MethodReference.
* For the other method handle types, this should be a FieldReference.
*
* @return A MethodReference or FieldReference, depending on the method handle type
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java
index 733dd541..cbabc5f6 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java
@@ -71,8 +71,8 @@ public class ImmutableMethodHandleReference extends BaseMethodHandleReference im
memberReference = ImmutableFieldReference.of(
(FieldReference) methodHandleReference.getMemberReference());
break;
- case MethodHandleType.INVOKE_INSTANCE:
- case MethodHandleType.INVOKE_STATIC:
+ case MethodHandleType.INSTANCE_INVOKE:
+ case MethodHandleType.STATIC_INVOKE:
memberReference = ImmutableMethodReference.of(
(MethodReference) methodHandleReference.getMemberReference());
break;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
index 84f57f2d..ceebd66e 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
@@ -588,8 +588,8 @@ public abstract class DexWriter<
memberIndex = fieldSection.getItemIndex(
methodHandleSection.getFieldReference(methodHandleReference));
break;
- case MethodHandleType.INVOKE_INSTANCE:
- case MethodHandleType.INVOKE_STATIC:
+ case MethodHandleType.INSTANCE_INVOKE:
+ case MethodHandleType.STATIC_INVOKE:
memberIndex = methodSection.getItemIndex(
methodHandleSection.getMethodReference(methodHandleReference));
break;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java
index 17f6c01e..99e9511f 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java
@@ -68,8 +68,8 @@ public class BuilderMethodHandlePool extends BaseBuilderPool
memberReference = dexBuilder.internFieldReference(
(FieldReference) methodHandleReference.getMemberReference());
break;
- case MethodHandleType.INVOKE_INSTANCE:
- case MethodHandleType.INVOKE_STATIC:
+ case MethodHandleType.INSTANCE_INVOKE:
+ case MethodHandleType.STATIC_INVOKE:
memberReference = dexBuilder.internMethodReference(
(MethodReference) methodHandleReference.getMemberReference());
break;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java
index 443ec29f..ce265861 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java
@@ -56,8 +56,8 @@ public class MethodHandlePool extends BaseIndexPool<MethodHandleReference>
case MethodHandleType.STATIC_PUT:
dexPool.fieldSection.intern((FieldReference) methodHandleReference.getMemberReference());
break;
- case MethodHandleType.INVOKE_INSTANCE:
- case MethodHandleType.INVOKE_STATIC:
+ case MethodHandleType.INSTANCE_INVOKE:
+ case MethodHandleType.STATIC_INVOKE:
dexPool.methodSection.intern((MethodReference) methodHandleReference.getMemberReference());
break;
default:
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java
index c909fb28..5769e0f4 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java
@@ -74,7 +74,7 @@ public class CallSiteTest {
new ImmutableMethodImplementation(10, ImmutableList.of(
new ImmutableInstruction35c(Opcode.INVOKE_CUSTOM, 0, 0, 0, 0, 0, 0,
new ImmutableCallSiteReference("call_site_1",
- new ImmutableMethodHandleReference(MethodHandleType.INVOKE_STATIC,
+ new ImmutableMethodHandleReference(MethodHandleType.STATIC_INVOKE,
new ImmutableMethodReference("Lcls1", "loader",
ImmutableList.of("Ljava/lang/invoke/Lookup;",
"Ljava/lang/String;",
@@ -96,7 +96,7 @@ public class CallSiteTest {
BuilderCallSiteReference callSite = dexBuilder.internCallSite(new ImmutableCallSiteReference("call_site_1",
new ImmutableMethodHandleReference(
- MethodHandleType.INVOKE_STATIC,
+ MethodHandleType.STATIC_INVOKE,
new ImmutableMethodReference("Lcls1", "loader", ImmutableList.of("Ljava/lang/invoke/Lookup;",
"Ljava/lang/String;",
"Ljava/lang/invoke/MethodType;"),