diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-08-10 21:20:24 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-08-10 21:25:38 +1000 |
commit | 131402fd5fe8c064ef5cfffbe568507cbdf37990 (patch) | |
tree | ec3470addaf68356d7b5b8d6418de77ec753375a /src/library | |
parent | 498a2ce7397b909c0bebf36affeb1ee5a1c03d6a (diff) | |
download | scala-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.java | 6 | ||||
-rw-r--r-- | src/library/scala/runtime/LambdaDeserializer.scala | 25 |
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) - } - } } |