org.jetbrains.kotlin.cfg
Interface ControlFlowBuilder

All Known Implementing Classes:
ControlFlowBuilderAdapter, ControlFlowInstructionsGenerator

public interface ControlFlowBuilder


Nested Class Summary
static class ControlFlowBuilder.PredefinedOperation
           
 
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)
           
 

Method Detail

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)