public class Java8
extends java.lang.Object
Constructor and Description |
---|
Java8() |
Modifier and Type | Method and Description |
---|---|
static java.lang.invoke.CallSite |
callLambdaMetaFactory(java.lang.Object[] bsmArgs,
java.lang.Object lookup,
java.lang.String indyNameAndDescriptor,
java.lang.Class<?> executorClass) |
static java.lang.Object |
emulateInvokeDynamic(java.lang.Class<?> executorClass,
org.objectweb.asm.Handle handle,
java.lang.Object[] bsmArgs,
java.lang.Object lookup,
java.lang.String indyNameAndDescriptor,
java.lang.Object[] indyParams)
Programmatic emulation of INVOKEDYNAMIC so initialize the callsite via use of the bootstrap method then
invoke the result.
|
static byte[] |
enhanceInnerClassLambdaMetaFactory(byte[] bytes)
The metafactory we are enhancing is responsible for generating the anonymous classes that will call the lambda methods in our type
|
public static java.lang.Object emulateInvokeDynamic(java.lang.Class<?> executorClass, org.objectweb.asm.Handle handle, java.lang.Object[] bsmArgs, java.lang.Object lookup, java.lang.String indyNameAndDescriptor, java.lang.Object[] indyParams)
executorClass
- the executor that will contain the lambda function, null if not yet reloadedhandle
- bootstrap method handlebsmArgs
- bootstrap method argumentslookup
- The MethodHandles.Lookup object that can be used to find typesindyNameAndDescriptor
- Method name and descriptor at invokedynamic siteindyParams
- parameters when the invokedynamic call is madepublic static java.lang.invoke.CallSite callLambdaMetaFactory(java.lang.Object[] bsmArgs, java.lang.Object lookup, java.lang.String indyNameAndDescriptor, java.lang.Class<?> executorClass) throws java.lang.Exception
java.lang.Exception
public static byte[] enhanceInnerClassLambdaMetaFactory(byte[] bytes)
bytes
- the class bytes for the InnerClassLambdaMetaFactory that is going to be modified