org.jetbrains.kotlin.codegen.inline
Class InlineCodegen

java.lang.Object
  extended by org.jetbrains.kotlin.codegen.CallGenerator
      extended by org.jetbrains.kotlin.codegen.inline.InlineCodegen

public class InlineCodegen
extends CallGenerator


Field Summary
protected  java.util.Map<java.lang.Integer,LambdaInfo> expressionMap
           
protected  ParametersBuilder invocationParamBuilder
           
 
Constructor Summary
InlineCodegen(ExpressionCodegen codegen, GenerationState state, SimpleFunctionDescriptor functionDescriptor, JetElement callElement, ReifiedTypeParameterMappings typeParameterMappings)
           
 
Method Summary
 void afterParameterPut(org.jetbrains.org.objectweb.asm.Type type, StackValue stackValue, ValueParameterDescriptor valueParameterDescriptor)
           
 void genCallInner(CallableMethod callableMethod, ResolvedCall<?> resolvedCall, boolean callDefault, ExpressionCodegen codegen)
           
 void genCallWithoutAssertions(CallableMethod callableMethod, ExpressionCodegen codegen)
           
 void generateAndInsertFinallyBlocks(org.jetbrains.org.objectweb.asm.tree.MethodNode intoNode, java.util.List<MethodInliner.PointForExternalFinallyBlocks> insertPoints)
           
 void genValueAndPut(ValueParameterDescriptor valueParameterDescriptor, JetExpression argumentExpression, org.jetbrains.org.objectweb.asm.Type parameterType)
           
static CodegenContext getContext(DeclarationDescriptor descriptor, GenerationState state)
           
static boolean isInliningClosure(JetExpression expression, ValueParameterDescriptor valueParameterDescriptora)
           
 void leaveTemps()
           
 void putCapturedValueOnStack(StackValue stackValue, org.jetbrains.org.objectweb.asm.Type valueType, int paramIndex)
           
 void putHiddenParams()
           
 void putValueIfNeeded(ValueParameterDescriptor valueParameterDescriptor, org.jetbrains.org.objectweb.asm.Type parameterType, StackValue value)
           
 void rememberClosure(JetExpression expression, org.jetbrains.org.objectweb.asm.Type type)
           
 boolean shouldPutValue(org.jetbrains.org.objectweb.asm.Type type, StackValue stackValue, ValueParameterDescriptor descriptor)
           
 
Methods inherited from class org.jetbrains.kotlin.codegen.CallGenerator
genCall
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

invocationParamBuilder

protected final ParametersBuilder invocationParamBuilder

expressionMap

protected final java.util.Map<java.lang.Integer,LambdaInfo> expressionMap
Constructor Detail

InlineCodegen

public InlineCodegen(@NotNull
                     ExpressionCodegen codegen,
                     @NotNull
                     GenerationState state,
                     @NotNull
                     SimpleFunctionDescriptor functionDescriptor,
                     @NotNull
                     JetElement callElement,
                     @Nullable
                     ReifiedTypeParameterMappings typeParameterMappings)
Method Detail

genCallWithoutAssertions

public void genCallWithoutAssertions(@NotNull
                                     CallableMethod callableMethod,
                                     @NotNull
                                     ExpressionCodegen codegen)
Specified by:
genCallWithoutAssertions in class CallGenerator

genCallInner

public void genCallInner(@NotNull
                         CallableMethod callableMethod,
                         @Nullable
                         ResolvedCall<?> resolvedCall,
                         boolean callDefault,
                         @NotNull
                         ExpressionCodegen codegen)
Specified by:
genCallInner in class CallGenerator

afterParameterPut

public void afterParameterPut(@NotNull
                              org.jetbrains.org.objectweb.asm.Type type,
                              @Nullable
                              StackValue stackValue,
                              @Nullable
                              ValueParameterDescriptor valueParameterDescriptor)
Specified by:
afterParameterPut in class CallGenerator

shouldPutValue

public boolean shouldPutValue(@NotNull
                              org.jetbrains.org.objectweb.asm.Type type,
                              @Nullable
                              StackValue stackValue,
                              @Nullable
                              ValueParameterDescriptor descriptor)

putHiddenParams

public void putHiddenParams()
Specified by:
putHiddenParams in class CallGenerator

leaveTemps

public void leaveTemps()

isInliningClosure

public static boolean isInliningClosure(JetExpression expression,
                                        ValueParameterDescriptor valueParameterDescriptora)

rememberClosure

public void rememberClosure(JetExpression expression,
                            org.jetbrains.org.objectweb.asm.Type type)

getContext

public static CodegenContext getContext(DeclarationDescriptor descriptor,
                                        GenerationState state)

genValueAndPut

public void genValueAndPut(@NotNull
                           ValueParameterDescriptor valueParameterDescriptor,
                           @NotNull
                           JetExpression argumentExpression,
                           @NotNull
                           org.jetbrains.org.objectweb.asm.Type parameterType)
Specified by:
genValueAndPut in class CallGenerator

putValueIfNeeded

public void putValueIfNeeded(@Nullable
                             ValueParameterDescriptor valueParameterDescriptor,
                             @NotNull
                             org.jetbrains.org.objectweb.asm.Type parameterType,
                             @NotNull
                             StackValue value)
Specified by:
putValueIfNeeded in class CallGenerator

putCapturedValueOnStack

public void putCapturedValueOnStack(@NotNull
                                    StackValue stackValue,
                                    @NotNull
                                    org.jetbrains.org.objectweb.asm.Type valueType,
                                    int paramIndex)
Specified by:
putCapturedValueOnStack in class CallGenerator

generateAndInsertFinallyBlocks

public void generateAndInsertFinallyBlocks(org.jetbrains.org.objectweb.asm.tree.MethodNode intoNode,
                                           java.util.List<MethodInliner.PointForExternalFinallyBlocks> insertPoints)