Package org.adoptopenjdk.jitwatch.loader
Class BytecodeLoader
- java.lang.Object
-
- org.adoptopenjdk.jitwatch.loader.BytecodeLoader
-
public final class BytecodeLoader extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classBytecodeLoader.BytecodeSection
-
Field Summary
Fields Modifier and Type Field Description private static com.chrisnewland.freelogj.Loggerloggerprivate static java.util.regex.PatternPATTERN_BYTECODE_INSTRUCTIONprivate static java.util.Map<java.lang.String,BytecodeLoader.BytecodeSection>sectionLabelMap
-
Constructor Summary
Constructors Modifier Constructor Description privateBytecodeLoader()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidbuildClassGenerics(java.lang.String line, ClassBC classBytecode)static MetaClassbuildMetaClassFromClass(java.lang.String fqClassName)private static BytecodeLoader.BytecodeSectionchangeSection(BytecodeLoader.BytecodeSection nextSection)private static booleancouldBeMemberSignature(java.lang.String line)static ClassBCfetchBytecodeForClass(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, boolean cacheBytecode)static ClassBCfetchBytecodeForClass(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, java.nio.file.Path javapPath, boolean cacheBytecode)private static java.lang.StringgetBytecodeStringViaProcess(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, java.nio.file.Path javapPath)private static BytecodeLoader.BytecodeSectiongetNextSection(BytecodeLoader.BytecodeSection currentSection, java.lang.String line)private static java.lang.StringgetSourceFile(java.lang.String line)private static intgetVersionPart(java.lang.String line)private static booleanisLocalVariableLine(java.lang.String line)private static booleanisRunTimeVisibleAnnotation(java.lang.String line)private static booleanisStackMapTable(java.lang.String line)static ClassBCparse(java.lang.String fqClassName, java.lang.String[] bytecodeLines, boolean cacheBytecode)private static ClassBCparseByteCodeFromString(java.lang.String fqClassName, java.lang.String byteCodeString, boolean cacheBytecode)static java.util.List<BytecodeInstruction>parseInstructions(java.lang.String bytecode)private static BytecodeLoader.BytecodeSectionperformCODE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)private static BytecodeLoader.BytecodeSectionperformConstantPool(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)private static BytecodeLoader.BytecodeSectionperformEXCEPTIONTABLE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)private static BytecodeLoader.BytecodeSectionperformLINETABLE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)private static voidprocessParameters(java.lang.String paramString, BytecodeInstruction instruction)private static voidsectionFinished(java.lang.String fqClassName, BytecodeLoader.BytecodeSection lastSection, MemberSignatureParts msp, java.lang.StringBuilder builder, MemberBytecode memberBytecode, ClassBC classBytecode)private static voidstoreExceptionTable(java.lang.String fqClassName, MemberBytecode memberBytecode, java.lang.String exceptionLines, MemberSignatureParts msp)private static voidstoreLineNumberTable(java.lang.String fqClassName, MemberBytecode memberBytecode, java.lang.String tableLines, MemberSignatureParts msp)
-
-
-
Field Detail
-
logger
private static final com.chrisnewland.freelogj.Logger logger
-
PATTERN_BYTECODE_INSTRUCTION
private static final java.util.regex.Pattern PATTERN_BYTECODE_INSTRUCTION
-
sectionLabelMap
private static final java.util.Map<java.lang.String,BytecodeLoader.BytecodeSection> sectionLabelMap
-
-
Method Detail
-
buildMetaClassFromClass
public static MetaClass buildMetaClassFromClass(java.lang.String fqClassName)
-
fetchBytecodeForClass
public static ClassBC fetchBytecodeForClass(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, boolean cacheBytecode)
-
fetchBytecodeForClass
public static ClassBC fetchBytecodeForClass(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, java.nio.file.Path javapPath, boolean cacheBytecode)
-
getBytecodeStringViaProcess
private static java.lang.String getBytecodeStringViaProcess(java.util.List<java.lang.String> classLocations, java.lang.String fqClassName, java.nio.file.Path javapPath) throws java.io.IOException- Throws:
java.io.IOException
-
parseByteCodeFromString
private static ClassBC parseByteCodeFromString(java.lang.String fqClassName, java.lang.String byteCodeString, boolean cacheBytecode)
-
parse
public static ClassBC parse(java.lang.String fqClassName, java.lang.String[] bytecodeLines, boolean cacheBytecode)
-
buildClassGenerics
public static void buildClassGenerics(java.lang.String line, ClassBC classBytecode)
-
performLINETABLE
private static BytecodeLoader.BytecodeSection performLINETABLE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)
-
performEXCEPTIONTABLE
private static BytecodeLoader.BytecodeSection performEXCEPTIONTABLE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)
-
performConstantPool
private static BytecodeLoader.BytecodeSection performConstantPool(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)
-
performCODE
private static BytecodeLoader.BytecodeSection performCODE(java.lang.String fqClassName, ClassBC classBytecode, java.lang.StringBuilder builder, BytecodeLoader.BytecodeSection section, MemberSignatureParts msp, MemberBytecode memberBytecode, java.lang.String line)
-
isRunTimeVisibleAnnotation
private static boolean isRunTimeVisibleAnnotation(java.lang.String line)
-
isLocalVariableLine
private static boolean isLocalVariableLine(java.lang.String line)
-
isStackMapTable
private static boolean isStackMapTable(java.lang.String line)
-
couldBeMemberSignature
private static boolean couldBeMemberSignature(java.lang.String line)
-
sectionFinished
private static void sectionFinished(java.lang.String fqClassName, BytecodeLoader.BytecodeSection lastSection, MemberSignatureParts msp, java.lang.StringBuilder builder, MemberBytecode memberBytecode, ClassBC classBytecode)
-
changeSection
private static BytecodeLoader.BytecodeSection changeSection(BytecodeLoader.BytecodeSection nextSection)
-
getNextSection
private static BytecodeLoader.BytecodeSection getNextSection(BytecodeLoader.BytecodeSection currentSection, java.lang.String line)
-
getVersionPart
private static int getVersionPart(java.lang.String line)
-
getSourceFile
private static java.lang.String getSourceFile(java.lang.String line)
-
parseInstructions
public static java.util.List<BytecodeInstruction> parseInstructions(java.lang.String bytecode)
-
storeLineNumberTable
private static void storeLineNumberTable(java.lang.String fqClassName, MemberBytecode memberBytecode, java.lang.String tableLines, MemberSignatureParts msp)
-
storeExceptionTable
private static void storeExceptionTable(java.lang.String fqClassName, MemberBytecode memberBytecode, java.lang.String exceptionLines, MemberSignatureParts msp)
-
processParameters
private static void processParameters(java.lang.String paramString, BytecodeInstruction instruction)
-
-