Class ByteCodeParser
java.lang.Object
org.jd.core.v1.service.converter.classfiletojavasyntax.util.ByteCodeParser
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static classprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate AttributeBootstrapMethodsprivate ClassFileBodyDeclarationprivate Stringprivate static final ByteCodeParser.JsrReturnAddressExpressionprivate LocalVariableMakerprivate ByteCodeParser.MemberVisitorprivate Typeprivate SearchFirstLineNumberVisitorprivate TypeMaker -
Constructor Summary
ConstructorsConstructorDescriptionByteCodeParser(TypeMaker typeMaker, LocalVariableMaker localVariableMaker, ClassFile classFile, ClassFileBodyDeclaration bodyDeclaration, ClassFileConstructorOrMethodDeclaration comd) -
Method Summary
Modifier and TypeMethodDescriptionprivate static ExpressioncheckIfLastStatementIsAMultiAssignment(Statements statements, Expression parameter) private static voidcheckStack(DefaultStack<Expression> stack, byte[] code, int offset) private static intcountMethodParameters(String descriptor) private static ExpressioncreateAssignment(BinaryOperatorExpression boe, String operator) private voidcreateAssignment(Statements statements, DefaultStack<Expression> stack, int lineNumber, Expression leftExpression, Expression rightExpression) static intevalStackDepth(ConstantPool constants, byte[] code, BasicBlock bb) static intprivate BaseExpressionextractParametersFromStack(Statements statements, DefaultStack<Expression> stack, BaseType parameterTypes) static intgetExceptionLocalVariableIndex(BasicBlock basicBlock) private ExpressiongetFieldInstanceReference(Expression expression, ObjectType ot, String name) static intgetLastOpcode(BasicBlock basicBlock) private static Expressionprivate AbstractLocalVariablegetLocalVariableInAssignment(int index, int offset, Expression value) private ExpressiongetMethodInstanceReference(Expression expression, ObjectType ot, String name, String descriptor) static booleanisAssertCondition(String internalTypeName, BasicBlock basicBlock) private static booleanisNegativeOne(Expression expression) private static booleanisPositiveOne(Expression expression) private ExpressionnewIntegerBinaryOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) private ExpressionnewIntegerComparisonOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) private ExpressionnewIntegerOrBooleanBinaryOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) private ExpressionnewIntegerOrBooleanComparisonOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) private ExpressionnewNewExpression(int lineNumber, String internalTypeName) private ExpressionnewPostArithmeticOperatorExpression(int lineNumber, Expression expression, String operator) private ExpressionnewPreArithmeticOperatorExpression(int lineNumber, String operator, Expression expression) voidparse(BasicBlock basicBlock, Statements statements, DefaultStack<Expression> stack) private voidparseASTORE(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, Expression valueRef) private voidparseGetField(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) private voidparseGetStatic(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) private voidparseIF(DefaultStack<Expression> stack, int lineNumber, BasicBlock basicBlock, String operator1, String operator2, int priority) private voidparseIINC(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, int count) private static voidparseILOAD(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable) private voidparseInvokeDynamic(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) private voidparseLDC(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, Constant constant) private voidparsePUT(Statements statements, DefaultStack<Expression> stack, int lineNumber, FieldReferenceExpression fr, Expression valueRef) private voidparsePutField(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) private voidparsePutStatic(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) private voidparseSTORE(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, Expression valueRef) private voidparseXRETURN(Statements statements, DefaultStack<Expression> stack, int lineNumber) prepareLambdaParameters(BaseFormalParameter formalParameters, int parameterCount) private static BaseStatementprepareLambdaStatements(BaseStatement baseStatement) private voidreduceIntegerLocalVariableType(Expression expression) static intsearchNextOpcode(BasicBlock basicBlock, int maxOffset) private static booleanprivate static booleanstackContainsLocalVariableReference(DefaultStack<Expression> stack, AbstractLocalVariable localVariable)
-
Field Details
-
JSR_RETURN_ADDRESS_EXPRESSION
-
memberVisitor
-
searchFirstLineNumberVisitor
-
typeMaker
-
localVariableMaker
-
internalTypeName
-
typeParametersToTypeArgumentsBinder
-
attributeBootstrapMethods
-
bodyDeclaration
-
typeBounds
-
returnedType
-
-
Constructor Details
-
ByteCodeParser
public ByteCodeParser(TypeMaker typeMaker, LocalVariableMaker localVariableMaker, ClassFile classFile, ClassFileBodyDeclaration bodyDeclaration, ClassFileConstructorOrMethodDeclaration comd)
-
-
Method Details
-
parse
-
extractParametersFromStack
private BaseExpression extractParametersFromStack(Statements statements, DefaultStack<Expression> stack, BaseType parameterTypes) -
checkIfLastStatementIsAMultiAssignment
private static Expression checkIfLastStatementIsAMultiAssignment(Statements statements, Expression parameter) -
getLocalVariableInAssignment
-
parseLDC
private void parseLDC(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, Constant constant) -
parseILOAD
private static void parseILOAD(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable) -
parseSTORE
private void parseSTORE(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, Expression valueRef) -
stackContainsLocalVariableReference
private static boolean stackContainsLocalVariableReference(DefaultStack<Expression> stack, AbstractLocalVariable localVariable) -
parsePUT
private void parsePUT(Statements statements, DefaultStack<Expression> stack, int lineNumber, FieldReferenceExpression fr, Expression valueRef) -
parseInvokeDynamic
private void parseInvokeDynamic(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) -
prepareLambdaParameters
private static List<String> prepareLambdaParameters(BaseFormalParameter formalParameters, int parameterCount) -
prepareLambdaStatements
-
stackContainsFieldReference
private static boolean stackContainsFieldReference(DefaultStack<Expression> stack, FieldReferenceExpression fr) -
createAssignment
-
isPositiveOne
-
isNegativeOne
-
parseASTORE
private void parseASTORE(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, Expression valueRef) -
createAssignment
private void createAssignment(Statements statements, DefaultStack<Expression> stack, int lineNumber, Expression leftExpression, Expression rightExpression) -
parseIINC
private void parseIINC(Statements statements, DefaultStack<Expression> stack, int lineNumber, AbstractLocalVariable localVariable, int count) -
parseIF
private void parseIF(DefaultStack<Expression> stack, int lineNumber, BasicBlock basicBlock, String operator1, String operator2, int priority) -
parseXRETURN
-
parseGetStatic
private void parseGetStatic(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) -
parsePutStatic
private void parsePutStatic(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) -
parseGetField
private void parseGetField(DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) -
parsePutField
private void parsePutField(Statements statements, DefaultStack<Expression> stack, ConstantPool constants, int lineNumber, int index) -
getLastRightExpression
-
newNewExpression
-
newIntegerBinaryOperatorExpression
private Expression newIntegerBinaryOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) -
newIntegerOrBooleanBinaryOperatorExpression
private Expression newIntegerOrBooleanBinaryOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) -
newIntegerOrBooleanComparisonOperatorExpression
private Expression newIntegerOrBooleanComparisonOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) -
newIntegerComparisonOperatorExpression
private Expression newIntegerComparisonOperatorExpression(int lineNumber, Expression leftExpression, String operator, Expression rightExpression, int priority) -
newPreArithmeticOperatorExpression
private Expression newPreArithmeticOperatorExpression(int lineNumber, String operator, Expression expression) -
newPostArithmeticOperatorExpression
private Expression newPostArithmeticOperatorExpression(int lineNumber, Expression expression, String operator) -
reduceIntegerLocalVariableType
-
getFieldInstanceReference
- Returns:
- expression, 'this' or 'super'
-
getMethodInstanceReference
private Expression getMethodInstanceReference(Expression expression, ObjectType ot, String name, String descriptor) - Returns:
- expression, 'this' or 'super'
-
checkStack
-
isAssertCondition
-
getExceptionLocalVariableIndex
-
searchNextOpcode
-
getLastOpcode
-
evalStackDepth
-
evalStackDepth
-
countMethodParameters
-