org.jetbrains.kotlin.codegen
Class ClosureCodegen

java.lang.Object
  extended by org.jetbrains.kotlin.codegen.MemberCodegen<KtElement>
      extended by org.jetbrains.kotlin.codegen.ClosureCodegen

public class ClosureCodegen
extends MemberCodegen<KtElement>


Field Summary
protected  org.jetbrains.org.objectweb.asm.Type asmType
           
protected  CalculatedClosure closure
           
protected  FunctionDescriptor funDescriptor
           
protected  org.jetbrains.org.objectweb.asm.Type superClassAsmType
           
protected  int visibilityFlag
           
 
Fields inherited from class org.jetbrains.kotlin.codegen.MemberCodegen
bindingContext, context, element, functionCodegen, propertyCodegen, state, typeMapper, v
 
Constructor Summary
ClosureCodegen(GenerationState state, KtElement element, SamType samType, ClosureContext context, FunctionDescriptor functionReferenceTarget, FunctionGenerationStrategy strategy, MemberCodegen<?> parentCodegen, ClassBuilder classBuilder)
           
 
Method Summary
protected  int calculateArity()
           
static java.util.List<FieldInfo> calculateConstructorParameters(KotlinTypeMapper typeMapper, CalculatedClosure closure, org.jetbrains.org.objectweb.asm.Type ownerType)
           
protected  ClassDescriptor classForInnerClassRecord()
           
protected  void done()
           
protected  void generateBody()
           
protected  void generateBridge(org.jetbrains.org.objectweb.asm.commons.Method bridge, org.jetbrains.org.objectweb.asm.commons.Method delegate)
           
protected  void generateBridges()
           
static void generateCallableReferenceDeclarationContainer(org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv, CallableDescriptor descriptor, GenerationState state)
           
protected  void generateClosureBody()
           
protected  org.jetbrains.org.objectweb.asm.commons.Method generateConstructor()
           
protected  void generateDeclaration()
           
protected  void generateKotlinMetadataAnnotation()
           
static FunctionDescriptor getErasedInvokeFunction(FunctionDescriptor function)
           
 StackValue putInstanceOnStack(ExpressionCodegen codegen, StackValue functionReferenceReceiver)
           
 
Methods inherited from class org.jetbrains.kotlin.codegen.MemberCodegen
addInnerClassInfoFromAnnotation, badDescriptor, beforeMethodBody, createClInitMethodVisitor, createOrGetClInitCodegen, genClassOrObject, genClassOrObject, generate, generateConstInstance, generateInitializers, generateKotlinClassMetadataAnnotation, generateMethodCallTo, generatePropertyMetadataArrayFieldIfNeeded, generateSyntheticAccessors, generateSyntheticParts, genSimpleMember, genSyntheticClassOrObject, getClassName, getContext, getInlineNameGenerator, getOrCreateSourceMapper, getParentCodegen, getReifiedTypeParametersUsages, markLineNumberForDescriptor, markLineNumberForElement, shouldInitializeProperty, toString, writeInnerClass, writeOuterClassAndEnclosingMethod
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

funDescriptor

protected final FunctionDescriptor funDescriptor

closure

protected final CalculatedClosure closure

asmType

protected final org.jetbrains.org.objectweb.asm.Type asmType

visibilityFlag

protected final int visibilityFlag

superClassAsmType

protected org.jetbrains.org.objectweb.asm.Type superClassAsmType
Constructor Detail

ClosureCodegen

public ClosureCodegen(@NotNull
                      GenerationState state,
                      @NotNull
                      KtElement element,
                      @Nullable
                      SamType samType,
                      @NotNull
                      ClosureContext context,
                      @Nullable
                      FunctionDescriptor functionReferenceTarget,
                      @NotNull
                      FunctionGenerationStrategy strategy,
                      @NotNull
                      MemberCodegen<?> parentCodegen,
                      @NotNull
                      ClassBuilder classBuilder)
Method Detail

generateDeclaration

protected void generateDeclaration()
Specified by:
generateDeclaration in class MemberCodegen<KtElement>

classForInnerClassRecord

@Nullable
protected ClassDescriptor classForInnerClassRecord()
Overrides:
classForInnerClassRecord in class MemberCodegen<KtElement>

generateBody

protected void generateBody()
Specified by:
generateBody in class MemberCodegen<KtElement>

generateClosureBody

protected void generateClosureBody()

generateBridges

protected void generateBridges()

generateKotlinMetadataAnnotation

protected void generateKotlinMetadataAnnotation()
Specified by:
generateKotlinMetadataAnnotation in class MemberCodegen<KtElement>

done

protected void done()
Overrides:
done in class MemberCodegen<KtElement>

putInstanceOnStack

@NotNull
public StackValue putInstanceOnStack(@NotNull
                                             ExpressionCodegen codegen,
                                             @Nullable
                                             StackValue functionReferenceReceiver)

generateBridge

protected void generateBridge(@NotNull
                              org.jetbrains.org.objectweb.asm.commons.Method bridge,
                              @NotNull
                              org.jetbrains.org.objectweb.asm.commons.Method delegate)

generateCallableReferenceDeclarationContainer

public static void generateCallableReferenceDeclarationContainer(@NotNull
                                                                 org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv,
                                                                 @NotNull
                                                                 CallableDescriptor descriptor,
                                                                 @NotNull
                                                                 GenerationState state)

generateConstructor

@NotNull
protected org.jetbrains.org.objectweb.asm.commons.Method generateConstructor()

calculateArity

protected int calculateArity()

calculateConstructorParameters

@NotNull
public static java.util.List<FieldInfo> calculateConstructorParameters(@NotNull
                                                                               KotlinTypeMapper typeMapper,
                                                                               @NotNull
                                                                               CalculatedClosure closure,
                                                                               @NotNull
                                                                               org.jetbrains.org.objectweb.asm.Type ownerType)

getErasedInvokeFunction

@NotNull
public static FunctionDescriptor getErasedInvokeFunction(@NotNull
                                                                 FunctionDescriptor function)