Class ContinuationGenerators
java.lang.Object
com.offbynull.coroutines.instrumenter.ContinuationGenerators
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Methodprivate static final Constructor<MethodState> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic org.objectweb.asm.tree.InsnListentryPointLoader(MethodAttributes attrs) private static StringgetLogPrefix(MethodAttributes attrs) private static org.objectweb.asm.tree.InsnListpopMethodResult(org.objectweb.asm.tree.AbstractInsnNode invokeInsnNode) Generates instructions to pop the result of the method off the stack.static org.objectweb.asm.tree.InsnListrestoreState(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListrestoreStateFromInvocationWithinTryCatch(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListrestoreStateFromNormalInvocation(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListrestoreStateFromSuspend(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListreturnDummy(org.objectweb.asm.Type returnType) Generates instructions that returns a dummy value.static org.objectweb.asm.tree.InsnListsaveState(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListsaveStateFromInvocationWithinTryCatch(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListsaveStateFromNormalInvocation(MethodAttributes attrs, int idx) private static org.objectweb.asm.tree.InsnListsaveStateFromSuspend(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 isnullIllegalArgumentException- 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 typeMethodInsnNodeorInvokeDynamicInsnNode-- 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- ifinvokeInsnNodeisn't of typeMethodInsnNodeorInvokeDynamicInsnNodeNullPointerException- if any argument isnull
-
getLogPrefix
-