Class ContinuationGenerators


  • final class ContinuationGenerators
    extends java.lang.Object
    • Field Detail

      • CONTINUATION_GETMODE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_GETMODE_METHOD
      • CONTINUATION_SETMODE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_SETMODE_METHOD
      • CONTINUATION_LOADNEXTMETHODSTATE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_LOADNEXTMETHODSTATE_METHOD
      • CONTINUATION_UNLOADCURRENTMETHODSTATE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_UNLOADCURRENTMETHODSTATE_METHOD
      • CONTINUATION_UNLOADMETHODSTATETOBEFORE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_UNLOADMETHODSTATETOBEFORE_METHOD
      • CONTINUATION_PUSHNEWMETHODSTATE_METHOD

        private static final java.lang.reflect.Method CONTINUATION_PUSHNEWMETHODSTATE_METHOD
      • METHODSTATE_INIT_METHOD

        private static final java.lang.reflect.Constructor<MethodState> METHODSTATE_INIT_METHOD
      • METHODSTATE_GETCONTINUATIONPOINT_METHOD

        private static final java.lang.reflect.Method METHODSTATE_GETCONTINUATIONPOINT_METHOD
      • METHODSTATE_GETDATA_METHOD

        private static final java.lang.reflect.Method METHODSTATE_GETDATA_METHOD
      • METHODSTATE_GETLOCKSTATE_METHOD

        private static final java.lang.reflect.Method METHODSTATE_GETLOCKSTATE_METHOD
    • Constructor Detail

      • ContinuationGenerators

        private ContinuationGenerators()
    • Method Detail

      • entryPointLoader

        public static org.objectweb.asm.tree.InsnList entryPointLoader​(MethodAttributes attrs)
      • restoreState

        public static org.objectweb.asm.tree.InsnList restoreState​(MethodAttributes attrs,
                                                                   int idx)
      • restoreStateFromSuspend

        private static org.objectweb.asm.tree.InsnList restoreStateFromSuspend​(MethodAttributes attrs,
                                                                               int idx)
      • restoreStateFromNormalInvocation

        private static org.objectweb.asm.tree.InsnList restoreStateFromNormalInvocation​(MethodAttributes attrs,
                                                                                        int idx)
      • restoreStateFromInvocationWithinTryCatch

        private static org.objectweb.asm.tree.InsnList restoreStateFromInvocationWithinTryCatch​(MethodAttributes attrs,
                                                                                                int idx)
      • saveState

        public static org.objectweb.asm.tree.InsnList saveState​(MethodAttributes attrs,
                                                                int idx)
      • saveStateFromSuspend

        private static org.objectweb.asm.tree.InsnList saveStateFromSuspend​(MethodAttributes attrs,
                                                                            int idx)
      • saveStateFromNormalInvocation

        private static org.objectweb.asm.tree.InsnList saveStateFromNormalInvocation​(MethodAttributes attrs,
                                                                                     int idx)
      • saveStateFromInvocationWithinTryCatch

        private static org.objectweb.asm.tree.InsnList saveStateFromInvocationWithinTryCatch​(MethodAttributes attrs,
                                                                                             int idx)
      • returnDummy

        private static org.objectweb.asm.tree.InsnList returnDummy​(org.objectweb.asm.Type returnType)
        Generates instructions that returns a dummy value. Return values are as follows:
        • void -> no value
        • boolean -> false
        • byte/short/char/int -> 0
        • long -> 0L
        • float -> 0.0f
        • double -> 0.0
        • Object -> null
        Parameters:
        returnType - return type of the method this generated bytecode is for
        Returns:
        instructions to return a dummy value
        Throws:
        java.lang.NullPointerException - if any argument is null
        java.lang.IllegalArgumentException - if returnType's sort is of Type.METHOD
      • popMethodResult

        private static org.objectweb.asm.tree.InsnList popMethodResult​(org.objectweb.asm.tree.AbstractInsnNode invokeInsnNode)
        Generates instructions to pop the result of the method off the stack. This will only generate instructions if the method being invoked generates a return value.
        Parameters:
        invokeInsnNode - instruction for the method that was invoked (can either be of type MethodInsnNode or InvokeDynamicInsnNode -- this is used to determine how many items to pop off the stack
        Returns:
        instructions for a pop (only if the method being invoked generates a return value)
        Throws:
        java.lang.IllegalArgumentException - if invokeInsnNode isn't of type MethodInsnNode or InvokeDynamicInsnNode
        java.lang.NullPointerException - if any argument is null
      • getLogPrefix

        private static java.lang.String getLogPrefix​(MethodAttributes attrs)