Class ContinuationGenerators
java.lang.Object
com.offbynull.coroutines.instrumenter.ContinuationGenerators
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Method
private static final Method
private static final Method
private static final Method
private static final Method
private static final Method
private static final Method
private static final Method
private static final Method
private static final Constructor
<MethodState> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic org.objectweb.asm.tree.InsnList
entryPointLoader
(MethodAttributes attrs) private static String
getLogPrefix
(MethodAttributes attrs) 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.static org.objectweb.asm.tree.InsnList
restoreState
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
restoreStateFromInvocationWithinTryCatch
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
restoreStateFromNormalInvocation
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
restoreStateFromSuspend
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
returnDummy
(org.objectweb.asm.Type returnType) Generates instructions that returns a dummy value.static org.objectweb.asm.tree.InsnList
saveState
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
saveStateFromInvocationWithinTryCatch
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
saveStateFromNormalInvocation
(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnList
saveStateFromSuspend
(MethodAttributes attrs, int idx)
-
Field Details
-
CONTINUATION_GETMODE_METHOD
-
CONTINUATION_SETMODE_METHOD
-
CONTINUATION_LOADNEXTMETHODSTATE_METHOD
-
CONTINUATION_UNLOADCURRENTMETHODSTATE_METHOD
-
CONTINUATION_UNLOADMETHODSTATETOBEFORE_METHOD
-
CONTINUATION_PUSHNEWMETHODSTATE_METHOD
-
METHODSTATE_INIT_METHOD
-
METHODSTATE_GETCONTINUATIONPOINT_METHOD
-
METHODSTATE_GETDATA_METHOD
-
METHODSTATE_GETLOCKSTATE_METHOD
-
-
Constructor Details
-
ContinuationGenerators
private ContinuationGenerators()
-
-
Method Details
-
entryPointLoader
-
restoreState
-
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
-
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:
NullPointerException
- if any argument isnull
IllegalArgumentException
- ifreturnType
's sort is ofType.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 typeMethodInsnNode
orInvokeDynamicInsnNode
-- 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:
IllegalArgumentException
- ifinvokeInsnNode
isn't of typeMethodInsnNode
orInvokeDynamicInsnNode
NullPointerException
- if any argument isnull
-
getLogPrefix
-