summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-08-10 21:20:24 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-08-10 21:25:38 +1000
commit131402fd5fe8c064ef5cfffbe568507cbdf37990 (patch)
treeec3470addaf68356d7b5b8d6418de77ec753375a /src/library
parent498a2ce7397b909c0bebf36affeb1ee5a1c03d6a (diff)
downloadscala-131402fd5fe8c064ef5cfffbe568507cbdf37990.tar.gz
scala-131402fd5fe8c064ef5cfffbe568507cbdf37990.tar.bz2
scala-131402fd5fe8c064ef5cfffbe568507cbdf37990.zip
Cleanups after code review
- Remove unused references to "addTargetMethods" - Require that `targetMethodMap` is provided
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/runtime/LambdaDeserialize.java6
-rw-r--r--src/library/scala/runtime/LambdaDeserializer.scala25
2 files changed, 5 insertions, 26 deletions
diff --git a/src/library/scala/runtime/LambdaDeserialize.java b/src/library/scala/runtime/LambdaDeserialize.java
index a3df868517..4c5198cc48 100644
--- a/src/library/scala/runtime/LambdaDeserialize.java
+++ b/src/library/scala/runtime/LambdaDeserialize.java
@@ -2,14 +2,10 @@ package scala.runtime;
import java.lang.invoke.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
public final class LambdaDeserialize {
public static final MethodType DESERIALIZE_LAMBDA_MT = MethodType.fromMethodDescriptorString("(Ljava/lang/invoke/SerializedLambda;)Ljava/lang/Object;", LambdaDeserialize.class.getClassLoader());
- public static final MethodType ADD_TARGET_METHODS_MT = MethodType.fromMethodDescriptorString("([Ljava/lang/invoke/MethodHandle;)V", LambdaDeserialize.class.getClassLoader());
private MethodHandles.Lookup lookup;
private final HashMap<String, MethodHandle> cache = new HashMap<>();
@@ -37,6 +33,6 @@ public final class LambdaDeserialize {
return new ConstantCallSite(exact);
}
public static String nameAndDescriptorKey(String name, String descriptor) {
- return name + " " + descriptor;
+ return name + descriptor;
}
}
diff --git a/src/library/scala/runtime/LambdaDeserializer.scala b/src/library/scala/runtime/LambdaDeserializer.scala
index eb168fe445..e120f0e308 100644
--- a/src/library/scala/runtime/LambdaDeserializer.scala
+++ b/src/library/scala/runtime/LambdaDeserializer.scala
@@ -33,6 +33,7 @@ object LambdaDeserializer {
*/
def deserializeLambda(lookup: MethodHandles.Lookup, cache: java.util.Map[String, MethodHandle],
targetMethodMap: java.util.Map[String, MethodHandle], serialized: SerializedLambda): AnyRef = {
+ assert(targetMethodMap != null)
def slashDot(name: String) = name.replaceAll("/", ".")
val loader = lookup.lookupClass().getClassLoader
val implClass = loader.loadClass(slashDot(serialized.getImplClass))
@@ -71,14 +72,10 @@ object LambdaDeserializer {
// Lookup the implementation method
val implMethod: MethodHandle = try {
- if (targetMethodMap != null) {
- if (targetMethodMap.containsKey(key)) {
- targetMethodMap.get(key)
- } else {
- throw new IllegalArgumentException("Illegal lambda deserialization")
- }
+ if (targetMethodMap.containsKey(key)) {
+ targetMethodMap.get(key)
} else {
- findMember(lookup, getImplMethodKind, implClass, getImplMethodName, implMethodSig)
+ throw new IllegalArgumentException("Illegal lambda deserialization")
}
} catch {
case e: ReflectiveOperationException => throw new IllegalArgumentException("Illegal lambda deserialization", e)
@@ -124,18 +121,4 @@ object LambdaDeserializer {
// is cleaner if we uniformly add a single marker, so I'm leaving it in place.
"java.io.Serializable"
}
-
- private def findMember(lookup: MethodHandles.Lookup, kind: Int, owner: Class[_],
- name: String, signature: MethodType): MethodHandle = {
- kind match {
- case MethodHandleInfo.REF_invokeStatic =>
- lookup.findStatic(owner, name, signature)
- case MethodHandleInfo.REF_newInvokeSpecial =>
- lookup.findConstructor(owner, signature)
- case MethodHandleInfo.REF_invokeVirtual | MethodHandleInfo.REF_invokeInterface =>
- lookup.findVirtual(owner, name, signature)
- case MethodHandleInfo.REF_invokeSpecial =>
- lookup.findSpecial(owner, name, signature, owner)
- }
- }
}