org.jetbrains.kotlin.codegen.inline
Class InlineCodegenUtil

java.lang.Object
  extended by org.jetbrains.kotlin.codegen.inline.InlineCodegenUtil

public class InlineCodegenUtil
extends java.lang.Object


Nested Class Summary
static class InlineCodegenUtil.LabelTextifier
           
 
Field Summary
static int API
           
static java.lang.String CAPTURED_FIELD_PREFIX
           
static java.lang.String FIRST_FUN_LABEL
           
static boolean GENERATE_SMAP
           
static java.lang.String INLINE_FUN_THIS_0_SUFFIX
           
static java.lang.String INLINE_FUN_VAR_SUFFIX
           
static java.lang.String INLINE_MARKER_AFTER_METHOD_NAME
           
static java.lang.String INLINE_MARKER_BEFORE_METHOD_NAME
           
static java.lang.String INLINE_MARKER_CLASS_NAME
           
static java.lang.String INLINE_MARKER_FINALLY_END
           
static java.lang.String INLINE_MARKER_FINALLY_START
           
static java.lang.String INLINE_TRANSFORMATION_SUFFIX
           
static java.lang.String NON_CAPTURED_FIELD_PREFIX
           
static java.lang.String NON_LOCAL_RETURN
           
static java.lang.String NUMBERED_FUNCTION_PREFIX
           
static java.lang.String RECEIVER$0
           
static java.lang.String THIS
           
static java.lang.String THIS$0
           
 
Constructor Summary
InlineCodegenUtil()
           
 
Method Summary
static void addInlineMarker(org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v, boolean isStartNotEnd)
           
static void assertVersionNotGreaterThanJava6(int version, java.lang.String internalName)
           
static int calcMarkerShift(Parameters parameters, org.jetbrains.org.objectweb.asm.tree.MethodNode node)
           
static org.jetbrains.org.objectweb.asm.tree.MethodNode createEmptyMethodNode()
           
static com.intellij.openapi.vfs.VirtualFile findVirtualFile(GenerationState state, ClassId classId)
           
static com.intellij.openapi.vfs.VirtualFile findVirtualFileImprecise(GenerationState state, java.lang.String internalClassName)
           
static org.jetbrains.org.objectweb.asm.tree.LabelNode firstLabelInChain(org.jetbrains.org.objectweb.asm.tree.LabelNode node)
           
static void generateFinallyMarker(org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v, int depth, boolean start)
           
static void generateGlobalReturnFlag(org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv, java.lang.String labelName)
           
static int getConstant(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode ins)
           
static com.intellij.psi.PsiFile getContainingFile(CodegenContext codegenContext)
           
protected static int getIndexAfterLastMarker(org.jetbrains.org.objectweb.asm.tree.MethodNode node)
           
static java.lang.String getInlineName(CodegenContext codegenContext, JetTypeMapper typeMapper, JvmFileClassesProvider fileClassesManager)
           
static int getLoadStoreArgSize(int opcode)
           
static SMAPAndMethodNode getMethodNode(byte[] classData, java.lang.String methodName, java.lang.String methodDescriptor, ClassId classId)
           
static java.lang.String getNodeText(org.jetbrains.org.objectweb.asm.tree.MethodNode node)
           
static java.lang.String getNodeText(org.jetbrains.org.objectweb.asm.tree.MethodNode node, org.jetbrains.org.objectweb.asm.util.Textifier textifier)
           
static org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode getPrevMeaningful(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)
           
static org.jetbrains.org.objectweb.asm.Type getReturnType(int opcode)
           
static void initDefaultSourceMappingIfNeeded(CodegenContext context, MemberCodegen codegen, GenerationState state)
           
static void insertNodeBefore(org.jetbrains.org.objectweb.asm.tree.MethodNode from, org.jetbrains.org.objectweb.asm.tree.InsnList instructions, org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode beforeNode)
           
static void insertNodeBefore(org.jetbrains.org.objectweb.asm.tree.MethodNode from, org.jetbrains.org.objectweb.asm.tree.MethodNode to, org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode beforeNode)
           
static boolean isAfterInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)
           
static boolean isAnonymousClass(java.lang.String internalName)
           
static boolean isAnonymousConstructorCall(java.lang.String internalName, java.lang.String methodName)
           
static boolean isAnonymousSingletonLoad(java.lang.String internalName, java.lang.String fieldName)
           
static boolean isBeforeInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)
           
static boolean isCapturedFieldName(java.lang.String fieldName)
           
static boolean isFakeLocalVariableForInline(java.lang.String name)
           
static boolean isFinallyEnd(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)
           
static boolean isFinallyMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)
           
static boolean isFinallyMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node, java.lang.String name)
           
static boolean isFinallyMarkerRequired(MethodContext context)
           
static boolean isFinallyStart(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)
           
static boolean isInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)
           
static boolean isInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn, java.lang.String name)
           
static boolean isInvokeOnLambda(java.lang.String owner, java.lang.String name)
           
static boolean isMarkedReturn(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode returnIns)
           
static boolean isReturnOpcode(int opcode)
           
static boolean isStoreInstruction(int opcode)
           
static boolean isThis0(java.lang.String name)
           
static void removeInterval(org.jetbrains.org.objectweb.asm.tree.MethodNode node, org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode startInc, org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode endInc)
           
static org.jetbrains.org.objectweb.asm.MethodVisitor wrapWithMaxLocalCalc(org.jetbrains.org.objectweb.asm.tree.MethodNode methodNode)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GENERATE_SMAP

public static final boolean GENERATE_SMAP
See Also:
Constant Field Values

API

public static final int API
See Also:
Constant Field Values

CAPTURED_FIELD_PREFIX

public static final java.lang.String CAPTURED_FIELD_PREFIX
See Also:
Constant Field Values

NON_CAPTURED_FIELD_PREFIX

public static final java.lang.String NON_CAPTURED_FIELD_PREFIX
See Also:
Constant Field Values

THIS$0

public static final java.lang.String THIS$0
See Also:
Constant Field Values

THIS

public static final java.lang.String THIS
See Also:
Constant Field Values

RECEIVER$0

public static final java.lang.String RECEIVER$0
See Also:
Constant Field Values

NON_LOCAL_RETURN

public static final java.lang.String NON_LOCAL_RETURN
See Also:
Constant Field Values

FIRST_FUN_LABEL

public static final java.lang.String FIRST_FUN_LABEL
See Also:
Constant Field Values

NUMBERED_FUNCTION_PREFIX

public static final java.lang.String NUMBERED_FUNCTION_PREFIX
See Also:
Constant Field Values

INLINE_MARKER_CLASS_NAME

public static final java.lang.String INLINE_MARKER_CLASS_NAME
See Also:
Constant Field Values

INLINE_MARKER_BEFORE_METHOD_NAME

public static final java.lang.String INLINE_MARKER_BEFORE_METHOD_NAME
See Also:
Constant Field Values

INLINE_MARKER_AFTER_METHOD_NAME

public static final java.lang.String INLINE_MARKER_AFTER_METHOD_NAME
See Also:
Constant Field Values

INLINE_MARKER_FINALLY_START

public static final java.lang.String INLINE_MARKER_FINALLY_START
See Also:
Constant Field Values

INLINE_MARKER_FINALLY_END

public static final java.lang.String INLINE_MARKER_FINALLY_END
See Also:
Constant Field Values

INLINE_TRANSFORMATION_SUFFIX

public static final java.lang.String INLINE_TRANSFORMATION_SUFFIX
See Also:
Constant Field Values

INLINE_FUN_THIS_0_SUFFIX

public static final java.lang.String INLINE_FUN_THIS_0_SUFFIX
See Also:
Constant Field Values

INLINE_FUN_VAR_SUFFIX

public static final java.lang.String INLINE_FUN_VAR_SUFFIX
See Also:
Constant Field Values
Constructor Detail

InlineCodegenUtil

public InlineCodegenUtil()
Method Detail

getMethodNode

@Nullable
public static SMAPAndMethodNode getMethodNode(byte[] classData,
                                                       java.lang.String methodName,
                                                       java.lang.String methodDescriptor,
                                                       ClassId classId)
                                       throws java.io.IOException
Throws:
java.io.IOException

assertVersionNotGreaterThanJava6

public static void assertVersionNotGreaterThanJava6(int version,
                                                    java.lang.String internalName)

initDefaultSourceMappingIfNeeded

public static void initDefaultSourceMappingIfNeeded(@NotNull
                                                    CodegenContext context,
                                                    @NotNull
                                                    MemberCodegen codegen,
                                                    @NotNull
                                                    GenerationState state)

findVirtualFile

@Nullable
public static com.intellij.openapi.vfs.VirtualFile findVirtualFile(@NotNull
                                                                            GenerationState state,
                                                                            @NotNull
                                                                            ClassId classId)

findVirtualFileImprecise

@Nullable
public static com.intellij.openapi.vfs.VirtualFile findVirtualFileImprecise(@NotNull
                                                                                     GenerationState state,
                                                                                     @NotNull
                                                                                     java.lang.String internalClassName)

getInlineName

public static java.lang.String getInlineName(@NotNull
                                             CodegenContext codegenContext,
                                             @NotNull
                                             JetTypeMapper typeMapper,
                                             @NotNull
                                             JvmFileClassesProvider fileClassesManager)

isInvokeOnLambda

public static boolean isInvokeOnLambda(@NotNull
                                       java.lang.String owner,
                                       @NotNull
                                       java.lang.String name)

isAnonymousConstructorCall

public static boolean isAnonymousConstructorCall(@NotNull
                                                 java.lang.String internalName,
                                                 @NotNull
                                                 java.lang.String methodName)

isAnonymousSingletonLoad

public static boolean isAnonymousSingletonLoad(@NotNull
                                               java.lang.String internalName,
                                               @NotNull
                                               java.lang.String fieldName)

isAnonymousClass

public static boolean isAnonymousClass(java.lang.String internalName)

getContainingFile

@Nullable
public static com.intellij.psi.PsiFile getContainingFile(CodegenContext codegenContext)

wrapWithMaxLocalCalc

@NotNull
public static org.jetbrains.org.objectweb.asm.MethodVisitor wrapWithMaxLocalCalc(@NotNull
                                                                                         org.jetbrains.org.objectweb.asm.tree.MethodNode methodNode)

isCapturedFieldName

public static boolean isCapturedFieldName(@NotNull
                                          java.lang.String fieldName)

isReturnOpcode

public static boolean isReturnOpcode(int opcode)

isMarkedReturn

public static boolean isMarkedReturn(@NotNull
                                     org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode returnIns)

generateGlobalReturnFlag

public static void generateGlobalReturnFlag(@NotNull
                                            org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv,
                                            @NotNull
                                            java.lang.String labelName)

getReturnType

public static org.jetbrains.org.objectweb.asm.Type getReturnType(int opcode)

insertNodeBefore

public static void insertNodeBefore(@NotNull
                                    org.jetbrains.org.objectweb.asm.tree.MethodNode from,
                                    @NotNull
                                    org.jetbrains.org.objectweb.asm.tree.InsnList instructions,
                                    @NotNull
                                    org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode beforeNode)

insertNodeBefore

public static void insertNodeBefore(@NotNull
                                    org.jetbrains.org.objectweb.asm.tree.MethodNode from,
                                    @NotNull
                                    org.jetbrains.org.objectweb.asm.tree.MethodNode to,
                                    @NotNull
                                    org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode beforeNode)

createEmptyMethodNode

public static org.jetbrains.org.objectweb.asm.tree.MethodNode createEmptyMethodNode()

firstLabelInChain

@NotNull
public static org.jetbrains.org.objectweb.asm.tree.LabelNode firstLabelInChain(@NotNull
                                                                                       org.jetbrains.org.objectweb.asm.tree.LabelNode node)

getNodeText

@NotNull
public static java.lang.String getNodeText(@Nullable
                                                   org.jetbrains.org.objectweb.asm.tree.MethodNode node)

getNodeText

@NotNull
public static java.lang.String getNodeText(@Nullable
                                                   org.jetbrains.org.objectweb.asm.tree.MethodNode node,
                                                   @NotNull
                                                   org.jetbrains.org.objectweb.asm.util.Textifier textifier)

generateFinallyMarker

public static void generateFinallyMarker(@NotNull
                                         org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v,
                                         int depth,
                                         boolean start)

isFinallyEnd

public static boolean isFinallyEnd(@NotNull
                                   org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)

isFinallyStart

public static boolean isFinallyStart(@NotNull
                                     org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)

isFinallyMarker

public static boolean isFinallyMarker(@Nullable
                                      org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)

isFinallyMarker

public static boolean isFinallyMarker(@Nullable
                                      org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node,
                                      java.lang.String name)

isFinallyMarkerRequired

public static boolean isFinallyMarkerRequired(@NotNull
                                              MethodContext context)

getConstant

public static int getConstant(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode ins)

addInlineMarker

public static void addInlineMarker(@NotNull
                                   org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v,
                                   boolean isStartNotEnd)

isInlineMarker

public static boolean isInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)

isInlineMarker

public static boolean isInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn,
                                     java.lang.String name)

isBeforeInlineMarker

public static boolean isBeforeInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)

isAfterInlineMarker

public static boolean isAfterInlineMarker(org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode insn)

getLoadStoreArgSize

public static int getLoadStoreArgSize(int opcode)

isStoreInstruction

public static boolean isStoreInstruction(int opcode)

calcMarkerShift

public static int calcMarkerShift(Parameters parameters,
                                  org.jetbrains.org.objectweb.asm.tree.MethodNode node)

getIndexAfterLastMarker

protected static int getIndexAfterLastMarker(org.jetbrains.org.objectweb.asm.tree.MethodNode node)

isFakeLocalVariableForInline

public static boolean isFakeLocalVariableForInline(@NotNull
                                                   java.lang.String name)

isThis0

public static boolean isThis0(java.lang.String name)

getPrevMeaningful

@Nullable
public static org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode getPrevMeaningful(@NotNull
                                                                                               org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode node)

removeInterval

public static void removeInterval(@NotNull
                                  org.jetbrains.org.objectweb.asm.tree.MethodNode node,
                                  @NotNull
                                  org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode startInc,
                                  @NotNull
                                  org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode endInc)