org.jetbrains.kotlin.cfg
Interface ControlFlowBuilder
- All Known Implementing Classes:
- ControlFlowBuilderAdapter, ControlFlowInstructionsGenerator
public interface ControlFlowBuilder
Method Summary |
void |
bindLabel(Label label)
|
void |
bindValue(PseudoValue value,
KtElement element)
|
CallInstruction |
call(KtElement valueElement,
ResolvedCall<?> resolvedCall,
java.util.Map<PseudoValue,ReceiverValue> receiverValues,
java.util.Map<PseudoValue,ValueParameterDescriptor> arguments)
|
InstructionWithValue |
createAnonymousObject(KtObjectLiteralExpression expression)
|
InstructionWithValue |
createLambda(KtFunction expression)
|
Label |
createUnboundLabel()
|
Label |
createUnboundLabel(java.lang.String name)
|
void |
declareFunction(KtElement subroutine,
Pseudocode pseudocode)
|
void |
declareParameter(KtParameter parameter)
|
void |
declareVariable(KtVariableDeclaration property)
|
void |
enterLexicalScope(KtElement element)
|
LoopInfo |
enterLoop(KtLoopExpression expression)
|
void |
enterLoopBody(KtLoopExpression expression)
|
void |
enterSubroutine(KtElement subroutine)
|
void |
enterTryFinally(GenerationTrigger trigger)
|
void |
exitLexicalScope(KtElement element)
|
void |
exitLoopBody(KtLoopExpression expression)
|
Pseudocode |
exitSubroutine(KtElement subroutine)
|
void |
exitTryFinally()
|
PseudoValue |
getBoundValue(KtElement element)
|
Label |
getConditionEntryPoint(KtElement labelElement)
|
KtLoopExpression |
getCurrentLoop()
|
KtElement |
getCurrentSubroutine()
|
Label |
getEntryPoint(KtElement labelElement)
|
Label |
getExitPoint(KtElement labelElement)
|
KtElement |
getReturnSubroutine()
|
void |
jump(Label label,
KtElement element)
|
void |
jumpOnFalse(Label label,
KtElement element,
PseudoValue conditionValue)
|
void |
jumpOnTrue(Label label,
KtElement element,
PseudoValue conditionValue)
|
void |
jumpToError(KtElement element)
|
InstructionWithValue |
loadConstant(KtExpression expression,
constant)
|
InstructionWithValue |
loadStringTemplate(KtStringTemplateExpression expression,
java.util.List<PseudoValue> inputValues)
|
void |
loadUnit(KtExpression expression)
|
MagicInstruction |
magic(KtElement instructionElement,
KtElement valueElement,
java.util.List<PseudoValue> inputValues,
MagicKind kind)
|
void |
mark(KtElement element)
|
MergeInstruction |
merge(KtExpression expression,
java.util.List<PseudoValue> inputValues)
|
PseudoValue |
newValue(KtElement element)
|
void |
nondeterministicJump(Label label,
KtElement element,
PseudoValue inputValue)
|
void |
nondeterministicJump(java.util.List<Label> label,
KtElement element)
|
OperationInstruction |
predefinedOperation(KtExpression expression,
ControlFlowBuilder.PredefinedOperation operation,
java.util.List<PseudoValue> inputValues)
|
ReadValueInstruction |
readVariable(KtExpression expression,
ResolvedCall<?> resolvedCall,
java.util.Map<PseudoValue,ReceiverValue> receiverValues)
|
void |
repeatPseudocode(Label startLabel,
Label finishLabel)
|
void |
returnNoValue(KtReturnExpression returnExpression,
KtElement subroutine)
|
void |
returnValue(KtExpression returnExpression,
PseudoValue returnValue,
KtElement subroutine)
|
void |
throwException(KtThrowExpression throwExpression,
PseudoValue thrownValue)
|
void |
write(KtElement assignment,
KtElement lValue,
PseudoValue rValue,
AccessTarget target,
java.util.Map<PseudoValue,ReceiverValue> receiverValues)
|
enterSubroutine
void enterSubroutine(@NotNull
KtElement subroutine)
exitSubroutine
@NotNull
Pseudocode exitSubroutine(@NotNull
KtElement subroutine)
getCurrentSubroutine
@NotNull
KtElement getCurrentSubroutine()
getReturnSubroutine
@Nullable
KtElement getReturnSubroutine()
enterLexicalScope
void enterLexicalScope(@NotNull
KtElement element)
exitLexicalScope
void exitLexicalScope(@NotNull
KtElement element)
getEntryPoint
@NotNull
Label getEntryPoint(@NotNull
KtElement labelElement)
getExitPoint
@NotNull
Label getExitPoint(@NotNull
KtElement labelElement)
getConditionEntryPoint
@NotNull
Label getConditionEntryPoint(@NotNull
KtElement labelElement)
declareParameter
void declareParameter(@NotNull
KtParameter parameter)
declareVariable
void declareVariable(@NotNull
KtVariableDeclaration property)
declareFunction
void declareFunction(@NotNull
KtElement subroutine,
@NotNull
Pseudocode pseudocode)
createUnboundLabel
@NotNull
Label createUnboundLabel()
createUnboundLabel
@NotNull
Label createUnboundLabel(@NotNull
java.lang.String name)
bindLabel
void bindLabel(@NotNull
Label label)
jump
void jump(@NotNull
Label label,
@NotNull
KtElement element)
jumpOnFalse
void jumpOnFalse(@NotNull
Label label,
@NotNull
KtElement element,
@Nullable
PseudoValue conditionValue)
jumpOnTrue
void jumpOnTrue(@NotNull
Label label,
@NotNull
KtElement element,
@Nullable
PseudoValue conditionValue)
nondeterministicJump
void nondeterministicJump(@NotNull
Label label,
@NotNull
KtElement element,
@Nullable
PseudoValue inputValue)
nondeterministicJump
void nondeterministicJump(@NotNull
java.util.List<Label> label,
@NotNull
KtElement element)
jumpToError
void jumpToError(@NotNull
KtElement element)
returnValue
void returnValue(@NotNull
KtExpression returnExpression,
@NotNull
PseudoValue returnValue,
@NotNull
KtElement subroutine)
returnNoValue
void returnNoValue(@NotNull
KtReturnExpression returnExpression,
@NotNull
KtElement subroutine)
throwException
void throwException(@NotNull
KtThrowExpression throwExpression,
@NotNull
PseudoValue thrownValue)
enterLoop
@NotNull
LoopInfo enterLoop(@NotNull
KtLoopExpression expression)
enterLoopBody
void enterLoopBody(@NotNull
KtLoopExpression expression)
exitLoopBody
void exitLoopBody(@NotNull
KtLoopExpression expression)
getCurrentLoop
@Nullable
KtLoopExpression getCurrentLoop()
enterTryFinally
void enterTryFinally(@NotNull
GenerationTrigger trigger)
exitTryFinally
void exitTryFinally()
repeatPseudocode
void repeatPseudocode(@NotNull
Label startLabel,
@NotNull
Label finishLabel)
mark
void mark(@NotNull
KtElement element)
getBoundValue
@Nullable
PseudoValue getBoundValue(@Nullable
KtElement element)
bindValue
void bindValue(@NotNull
PseudoValue value,
@NotNull
KtElement element)
newValue
@NotNull
PseudoValue newValue(@Nullable
KtElement element)
loadUnit
void loadUnit(@NotNull
KtExpression expression)
loadConstant
@NotNull
InstructionWithValue loadConstant(@NotNull
KtExpression expression,
@Nullable
constant)
createAnonymousObject
@NotNull
InstructionWithValue createAnonymousObject(@NotNull
KtObjectLiteralExpression expression)
createLambda
@NotNull
InstructionWithValue createLambda(@NotNull
KtFunction expression)
loadStringTemplate
@NotNull
InstructionWithValue loadStringTemplate(@NotNull
KtStringTemplateExpression expression,
@NotNull
java.util.List<PseudoValue> inputValues)
magic
@NotNull
MagicInstruction magic(@NotNull
KtElement instructionElement,
@Nullable
KtElement valueElement,
@NotNull
java.util.List<PseudoValue> inputValues,
@NotNull
MagicKind kind)
merge
@NotNull
MergeInstruction merge(@NotNull
KtExpression expression,
@NotNull
java.util.List<PseudoValue> inputValues)
readVariable
@NotNull
ReadValueInstruction readVariable(@NotNull
KtExpression expression,
@NotNull
ResolvedCall<?> resolvedCall,
@NotNull
java.util.Map<PseudoValue,ReceiverValue> receiverValues)
call
@NotNull
CallInstruction call(@NotNull
KtElement valueElement,
@NotNull
ResolvedCall<?> resolvedCall,
@NotNull
java.util.Map<PseudoValue,ReceiverValue> receiverValues,
@NotNull
java.util.Map<PseudoValue,ValueParameterDescriptor> arguments)
predefinedOperation
@NotNull
OperationInstruction predefinedOperation(@NotNull
KtExpression expression,
@NotNull
ControlFlowBuilder.PredefinedOperation operation,
@NotNull
java.util.List<PseudoValue> inputValues)
write
void write(@NotNull
KtElement assignment,
@NotNull
KtElement lValue,
@NotNull
PseudoValue rValue,
@NotNull
AccessTarget target,
@NotNull
java.util.Map<PseudoValue,ReceiverValue> receiverValues)