|
|
@ -347,30 +347,18 @@ public class ClassesProcessor { |
|
|
|
public static final int CLASS_LAMBDA = 8; |
|
|
|
public static final int CLASS_LAMBDA = 8; |
|
|
|
|
|
|
|
|
|
|
|
public int type; |
|
|
|
public int type; |
|
|
|
|
|
|
|
|
|
|
|
public int access; |
|
|
|
public int access; |
|
|
|
|
|
|
|
|
|
|
|
public String simpleName; |
|
|
|
public String simpleName; |
|
|
|
|
|
|
|
|
|
|
|
public StructClass classStruct; |
|
|
|
public StructClass classStruct; |
|
|
|
|
|
|
|
|
|
|
|
public ClassWrapper wrapper; |
|
|
|
public ClassWrapper wrapper; |
|
|
|
|
|
|
|
|
|
|
|
public String enclosingMethod; |
|
|
|
public String enclosingMethod; |
|
|
|
|
|
|
|
|
|
|
|
public InvocationExprent superInvocation; |
|
|
|
public InvocationExprent superInvocation; |
|
|
|
|
|
|
|
public Map<String, VarVersionPaar> mapFieldsToVars = new HashMap<String, VarVersionPaar>(); |
|
|
|
public HashMap<String, VarVersionPaar> mapFieldsToVars = new HashMap<String, VarVersionPaar>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public VarType anonymousClassType; |
|
|
|
public VarType anonymousClassType; |
|
|
|
|
|
|
|
|
|
|
|
public List<ClassNode> nested = new ArrayList<ClassNode>(); |
|
|
|
public List<ClassNode> nested = new ArrayList<ClassNode>(); |
|
|
|
|
|
|
|
|
|
|
|
public Set<String> enclosingClasses = new HashSet<String>(); |
|
|
|
public Set<String> enclosingClasses = new HashSet<String>(); |
|
|
|
|
|
|
|
|
|
|
|
public ClassNode parent; |
|
|
|
public ClassNode parent; |
|
|
|
|
|
|
|
public LambdaInformation lambdaInformation; |
|
|
|
public LambdaInformation lambda_information; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ClassNode(String content_class_name, |
|
|
|
public ClassNode(String content_class_name, |
|
|
|
String content_method_name, |
|
|
|
String content_method_name, |
|
|
@ -383,19 +371,19 @@ public class ClassesProcessor { |
|
|
|
this.type = CLASS_LAMBDA; |
|
|
|
this.type = CLASS_LAMBDA; |
|
|
|
this.classStruct = classStruct; // 'parent' class containing the static function
|
|
|
|
this.classStruct = classStruct; // 'parent' class containing the static function
|
|
|
|
|
|
|
|
|
|
|
|
lambda_information = new LambdaInformation(); |
|
|
|
lambdaInformation = new LambdaInformation(); |
|
|
|
|
|
|
|
|
|
|
|
lambda_information.class_name = lambda_class_name; |
|
|
|
lambdaInformation.class_name = lambda_class_name; |
|
|
|
lambda_information.method_name = lambda_method_name; |
|
|
|
lambdaInformation.method_name = lambda_method_name; |
|
|
|
lambda_information.method_descriptor = lambda_method_descriptor; |
|
|
|
lambdaInformation.method_descriptor = lambda_method_descriptor; |
|
|
|
|
|
|
|
|
|
|
|
lambda_information.content_class_name = content_class_name; |
|
|
|
lambdaInformation.content_class_name = content_class_name; |
|
|
|
lambda_information.content_method_name = content_method_name; |
|
|
|
lambdaInformation.content_method_name = content_method_name; |
|
|
|
lambda_information.content_method_descriptor = content_method_descriptor; |
|
|
|
lambdaInformation.content_method_descriptor = content_method_descriptor; |
|
|
|
lambda_information.content_method_invocation_type = content_method_invocation_type; |
|
|
|
lambdaInformation.content_method_invocation_type = content_method_invocation_type; |
|
|
|
|
|
|
|
|
|
|
|
lambda_information.content_method_key = |
|
|
|
lambdaInformation.content_method_key = |
|
|
|
InterpreterUtil.makeUniqueKey(lambda_information.content_method_name, lambda_information.content_method_descriptor); |
|
|
|
InterpreterUtil.makeUniqueKey(lambdaInformation.content_method_name, lambdaInformation.content_method_descriptor); |
|
|
|
|
|
|
|
|
|
|
|
anonymousClassType = new VarType(lambda_class_name, true); |
|
|
|
anonymousClassType = new VarType(lambda_class_name, true); |
|
|
|
|
|
|
|
|
|
|
@ -405,9 +393,9 @@ public class ClassesProcessor { |
|
|
|
is_method_reference = !mt.isSynthetic(); // if not synthetic -> method reference
|
|
|
|
is_method_reference = !mt.isSynthetic(); // if not synthetic -> method reference
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
lambda_information.is_method_reference = is_method_reference; |
|
|
|
lambdaInformation.is_method_reference = is_method_reference; |
|
|
|
lambda_information.is_content_method_static = |
|
|
|
lambdaInformation.is_content_method_static = |
|
|
|
(lambda_information.content_method_invocation_type == CodeConstants.CONSTANT_MethodHandle_REF_invokeStatic); // FIXME: redundant?
|
|
|
|
(lambdaInformation.content_method_invocation_type == CodeConstants.CONSTANT_MethodHandle_REF_invokeStatic); // FIXME: redundant?
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public ClassNode(int type, StructClass classStruct) { |
|
|
|
public ClassNode(int type, StructClass classStruct) { |
|
|
@ -435,7 +423,6 @@ public class ClassesProcessor { |
|
|
|
public String content_method_name; |
|
|
|
public String content_method_name; |
|
|
|
public String content_method_descriptor; |
|
|
|
public String content_method_descriptor; |
|
|
|
public int content_method_invocation_type; // values from CONSTANT_MethodHandle_REF_*
|
|
|
|
public int content_method_invocation_type; // values from CONSTANT_MethodHandle_REF_*
|
|
|
|
|
|
|
|
|
|
|
|
public String content_method_key; |
|
|
|
public String content_method_key; |
|
|
|
|
|
|
|
|
|
|
|
public boolean is_method_reference; |
|
|
|
public boolean is_method_reference; |
|
|
|