All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.runtime.LambdaDeserialize Maven / Gradle / Ivy

There is a newer version: 2.13.16
Show newest version
package scala.runtime;


import java.lang.invoke.*;
import java.util.Arrays;
import java.util.HashMap;

public final class LambdaDeserialize {

    private MethodHandles.Lookup lookup;
    private final HashMap cache = new HashMap<>();
    private final LambdaDeserializer$ l = LambdaDeserializer$.MODULE$;

    private LambdaDeserialize(MethodHandles.Lookup lookup) {
        this.lookup = lookup;
    }

    public Object deserializeLambda(SerializedLambda serialized) {
        return l.deserializeLambda(lookup, cache, serialized);
    }

    public static CallSite bootstrap(MethodHandles.Lookup lookup, String invokedName,
                                     MethodType invokedType) throws Throwable {
        MethodType type = MethodType.fromMethodDescriptorString("(Ljava/lang/invoke/SerializedLambda;)Ljava/lang/Object;", lookup.getClass().getClassLoader());
        MethodHandle deserializeLambda = lookup.findVirtual(LambdaDeserialize.class, "deserializeLambda", type);
        MethodHandle exact = deserializeLambda.bindTo(new LambdaDeserialize(lookup)).asType(invokedType);
        return new ConstantCallSite(exact);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy