org.jetbrains.kotlin.cfg
Interface JetControlFlowBuilder

All Known Implementing Classes:
JetControlFlowBuilderAdapter, JetControlFlowInstructionsGenerator

public interface JetControlFlowBuilder


Nested Class Summary
static class JetControlFlowBuilder.PredefinedOperation
           
 
Method Summary
 void bindLabel(Label label)
           
 void bindValue(PseudoValue value, JetElement element)
           
 CallInstruction call(JetElement valueElement, ResolvedCall<?> resolvedCall, java.util.Map<PseudoValue,ReceiverValue> receiverValues, java.util.Map<PseudoValue,ValueParameterDescriptor> arguments)
           
 InstructionWithValue createAnonymousObject(JetObjectLiteralExpression expression)
           
 InstructionWithValue createLambda(JetFunction expression)
           
 Label createUnboundLabel()
           
 Label createUnboundLabel(java.lang.String name)
           
 void declareFunction(JetElement subroutine, Pseudocode pseudocode)
           
 void declareParameter(JetParameter parameter)
           
 void declareVariable(JetVariableDeclaration property)
           
 void enterLexicalScope(JetElement element)
           
 LoopInfo enterLoop(JetLoopExpression expression)
           
 void enterLoopBody(JetLoopExpression expression)
           
 void enterSubroutine(JetElement subroutine)
           
 void enterTryFinally(GenerationTrigger trigger)
           
 void exitLexicalScope(JetElement element)
           
 void exitLoopBody(JetLoopExpression expression)
           
 Pseudocode exitSubroutine(JetElement subroutine)
           
 void exitTryFinally()
           
 PseudoValue getBoundValue(JetElement element)
           
 Label getConditionEntryPoint(JetElement labelElement)
           
 JetLoopExpression getCurrentLoop()
           
 JetElement getCurrentSubroutine()
           
 Label getEntryPoint(JetElement labelElement)
           
 Label getExitPoint(JetElement labelElement)
           
 JetElement getReturnSubroutine()
           
 void jump(Label label, JetElement element)
           
 void jumpOnFalse(Label label, JetElement element, PseudoValue conditionValue)
           
 void jumpOnTrue(Label label, JetElement element, PseudoValue conditionValue)
           
 void jumpToError(JetElement element)
           
 InstructionWithValue loadConstant(JetExpression expression, CompileTimeConstant<?> constant)
           
 InstructionWithValue loadStringTemplate(JetStringTemplateExpression expression, java.util.List<PseudoValue> inputValues)
           
 void loadUnit(JetExpression expression)
           
 MagicInstruction magic(JetElement instructionElement, JetElement valueElement, java.util.List<PseudoValue> inputValues, java.util.Map<PseudoValue,TypePredicate> expectedTypes, MagicKind kind)
           
 void mark(JetElement element)
           
 MergeInstruction merge(JetExpression expression, java.util.List<PseudoValue> inputValues)
           
 PseudoValue newValue(JetElement element)
           
 void nondeterministicJump(Label label, JetElement element, PseudoValue inputValue)
           
 void nondeterministicJump(java.util.List<Label> label, JetElement element)
           
 OperationInstruction predefinedOperation(JetExpression expression, JetControlFlowBuilder.PredefinedOperation operation, java.util.List<PseudoValue> inputValues)
           
 ReadValueInstruction readVariable(JetExpression expression, ResolvedCall<?> resolvedCall, java.util.Map<PseudoValue,ReceiverValue> receiverValues)
           
 void repeatPseudocode(Label startLabel, Label finishLabel)
           
 void returnNoValue(JetReturnExpression returnExpression, JetElement subroutine)
           
 void returnValue(JetExpression returnExpression, PseudoValue returnValue, JetElement subroutine)
           
 void throwException(JetThrowExpression throwExpression, PseudoValue thrownValue)
           
 void write(JetElement assignment, JetElement lValue, PseudoValue rValue, AccessTarget target, java.util.Map<PseudoValue,ReceiverValue> receiverValues)
           
 

Method Detail

enterSubroutine

void enterSubroutine(@NotNull
                     JetElement subroutine)

exitSubroutine

@NotNull
Pseudocode exitSubroutine(@NotNull
                                  JetElement subroutine)

getCurrentSubroutine

@NotNull
JetElement getCurrentSubroutine()

getReturnSubroutine

@Nullable
JetElement getReturnSubroutine()

enterLexicalScope

void enterLexicalScope(@NotNull
                       JetElement element)

exitLexicalScope

void exitLexicalScope(@NotNull
                      JetElement element)

getEntryPoint

@NotNull
Label getEntryPoint(@NotNull
                            JetElement labelElement)

getExitPoint

@NotNull
Label getExitPoint(@NotNull
                           JetElement labelElement)

getConditionEntryPoint

@NotNull
Label getConditionEntryPoint(@NotNull
                                     JetElement labelElement)

declareParameter

void declareParameter(@NotNull
                      JetParameter parameter)

declareVariable

void declareVariable(@NotNull
                     JetVariableDeclaration property)

declareFunction

void declareFunction(@NotNull
                     JetElement 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
          JetElement element)

jumpOnFalse

void jumpOnFalse(@NotNull
                 Label label,
                 @NotNull
                 JetElement element,
                 @Nullable
                 PseudoValue conditionValue)

jumpOnTrue

void jumpOnTrue(@NotNull
                Label label,
                @NotNull
                JetElement element,
                @Nullable
                PseudoValue conditionValue)

nondeterministicJump

void nondeterministicJump(@NotNull
                          Label label,
                          @NotNull
                          JetElement element,
                          @Nullable
                          PseudoValue inputValue)

nondeterministicJump

void nondeterministicJump(@NotNull
                          java.util.List<Label> label,
                          @NotNull
                          JetElement element)

jumpToError

void jumpToError(@NotNull
                 JetElement element)

returnValue

void returnValue(@NotNull
                 JetExpression returnExpression,
                 @NotNull
                 PseudoValue returnValue,
                 @NotNull
                 JetElement subroutine)

returnNoValue

void returnNoValue(@NotNull
                   JetReturnExpression returnExpression,
                   @NotNull
                   JetElement subroutine)

throwException

void throwException(@NotNull
                    JetThrowExpression throwExpression,
                    @NotNull
                    PseudoValue thrownValue)

enterLoop

@NotNull
LoopInfo enterLoop(@NotNull
                           JetLoopExpression expression)

enterLoopBody

void enterLoopBody(@NotNull
                   JetLoopExpression expression)

exitLoopBody

void exitLoopBody(@NotNull
                  JetLoopExpression expression)

getCurrentLoop

@Nullable
JetLoopExpression getCurrentLoop()

enterTryFinally

void enterTryFinally(@NotNull
                     GenerationTrigger trigger)

exitTryFinally

void exitTryFinally()

repeatPseudocode

void repeatPseudocode(@NotNull
                      Label startLabel,
                      @NotNull
                      Label finishLabel)

mark

void mark(@NotNull
          JetElement element)

getBoundValue

@Nullable
PseudoValue getBoundValue(@Nullable
                                   JetElement element)

bindValue

void bindValue(@NotNull
               PseudoValue value,
               @NotNull
               JetElement element)

newValue

@NotNull
PseudoValue newValue(@Nullable
                             JetElement element)

loadUnit

void loadUnit(@NotNull
              JetExpression expression)

loadConstant

@NotNull
InstructionWithValue loadConstant(@NotNull
                                          JetExpression expression,
                                          @Nullable
                                          CompileTimeConstant<?> constant)

createAnonymousObject

@NotNull
InstructionWithValue createAnonymousObject(@NotNull
                                                   JetObjectLiteralExpression expression)

createLambda

@NotNull
InstructionWithValue createLambda(@NotNull
                                          JetFunction expression)

loadStringTemplate

@NotNull
InstructionWithValue loadStringTemplate(@NotNull
                                                JetStringTemplateExpression expression,
                                                @NotNull
                                                java.util.List<PseudoValue> inputValues)

magic

@NotNull
MagicInstruction magic(@NotNull
                               JetElement instructionElement,
                               @Nullable
                               JetElement valueElement,
                               @NotNull
                               java.util.List<PseudoValue> inputValues,
                               @NotNull
                               java.util.Map<PseudoValue,TypePredicate> expectedTypes,
                               @NotNull
                               MagicKind kind)

merge

@NotNull
MergeInstruction merge(@NotNull
                               JetExpression expression,
                               @NotNull
                               java.util.List<PseudoValue> inputValues)

readVariable

@NotNull
ReadValueInstruction readVariable(@NotNull
                                          JetExpression expression,
                                          @NotNull
                                          ResolvedCall<?> resolvedCall,
                                          @NotNull
                                          java.util.Map<PseudoValue,ReceiverValue> receiverValues)

call

@NotNull
CallInstruction call(@NotNull
                             JetElement valueElement,
                             @NotNull
                             ResolvedCall<?> resolvedCall,
                             @NotNull
                             java.util.Map<PseudoValue,ReceiverValue> receiverValues,
                             @NotNull
                             java.util.Map<PseudoValue,ValueParameterDescriptor> arguments)

predefinedOperation

@NotNull
OperationInstruction predefinedOperation(@NotNull
                                                 JetExpression expression,
                                                 @NotNull
                                                 JetControlFlowBuilder.PredefinedOperation operation,
                                                 @NotNull
                                                 java.util.List<PseudoValue> inputValues)

write

void write(@NotNull
           JetElement assignment,
           @NotNull
           JetElement lValue,
           @NotNull
           PseudoValue rValue,
           @NotNull
           AccessTarget target,
           @NotNull
           java.util.Map<PseudoValue,ReceiverValue> receiverValues)