public MetadataParser(final TypeDefinition owner) { VerifyArgument.notNull(owner, "owner"); _resolver = owner.getResolver() != null ? owner.getResolver() : MetadataSystem.instance(); _signatureParser = SignatureParser.make(); _genericContexts = new Stack<>(); _factory = CoreMetadataFactory.make(owner, new StackBasedGenericContext()); _suppressResolveDepth = new AtomicInteger(); }
public final IMetadataResolver getResolver() { final TypeDefinition declaringType = _method.getDeclaringType(); if (declaringType != null) { return declaringType.getResolver(); } return MetadataSystem.instance(); }
public MetadataParser(final TypeDefinition owner) { VerifyArgument.notNull(owner, "owner"); _resolver = owner.getResolver() != null ? owner.getResolver() : MetadataSystem.instance(); _signatureParser = SignatureParser.make(); _genericContexts = new Stack<>(); _factory = CoreMetadataFactory.make(owner, new StackBasedGenericContext()); _suppressResolveDepth = new AtomicInteger(); }
public MetadataParser(final TypeDefinition owner) { VerifyArgument.notNull(owner, "owner"); _resolver = owner.getResolver() != null ? owner.getResolver() : MetadataSystem.instance(); _signatureParser = SignatureParser.make(); _genericContexts = new Stack<>(); _factory = CoreMetadataFactory.make(owner, new StackBasedGenericContext()); _suppressResolveDepth = new AtomicInteger(); }
public static CoreMetadataFactory make(final TypeDefinition owner, final IGenericContext scope) { return new CoreMetadataFactory(VerifyArgument.notNull(owner, "owner"), owner.getResolver(), scope); }
public static CoreMetadataFactory make(final TypeDefinition owner, final IGenericContext scope) { return new CoreMetadataFactory(VerifyArgument.notNull(owner, "owner"), owner.getResolver(), scope); }
public static CoreMetadataFactory make(final TypeDefinition owner, final IGenericContext scope) { return new CoreMetadataFactory(VerifyArgument.notNull(owner, "owner"), owner.getResolver(), scope); }
private static IMetadataResolver getResolver(final MethodBody body) { final MethodReference method = body.getMethod(); if (method != null) { final MethodDefinition resolvedMethod = method.resolve(); if (resolvedMethod != null) { final TypeDefinition declaringType = resolvedMethod.getDeclaringType(); if (declaringType != null) { return declaringType.getResolver(); } } } return MetadataSystem.instance(); }
private static IMetadataResolver getResolver(final MethodBody body) { final MethodReference method = body.getMethod(); if (method != null) { final MethodDefinition resolvedMethod = method.resolve(); if (resolvedMethod != null) { final TypeDefinition declaringType = resolvedMethod.getDeclaringType(); if (declaringType != null) { return declaringType.getResolver(); } } } return MetadataSystem.instance(); }
private static IMetadataResolver getResolver(final MethodBody body) { final MethodReference method = body.getMethod(); if (method != null) { final MethodDefinition resolvedMethod = method.resolve(); if (resolvedMethod != null) { final TypeDefinition declaringType = resolvedMethod.getDeclaringType(); if (declaringType != null) { return declaringType.getResolver(); } } } return MetadataSystem.instance(); }
private static IMetadataResolver getResolver(final MethodBody body) { final MethodReference method = body.getMethod(); if (method != null) { final MethodDefinition resolvedMethod = method.resolve(); if (resolvedMethod != null) { final TypeDefinition declaringType = resolvedMethod.getDeclaringType(); if (declaringType != null) { return declaringType.getResolver(); } } } return MetadataSystem.instance(); }
protected AbstractBasicBlockOptimization(final DecompilerContext context, final Block method) { this.context = VerifyArgument.notNull(context, "context"); this.resolver = context.getCurrentType().getResolver(); this.method = VerifyArgument.notNull(method, "method"); for (final Expression e : method.getSelfAndChildrenRecursive(Expression.class)) { if (e.isBranch()) { for (final Label target : e.getBranchTargets()) { labelGlobalRefCount.get(target).increment(); } } } for (final BasicBlock basicBlock : method.getSelfAndChildrenRecursive(BasicBlock.class)) { for (final Node child : basicBlock.getChildren()) { if (child instanceof Label) { labelToBasicBlock.put((Label) child, basicBlock); } } } } }
private void tryAddDeprecatedAnnotationToType(final TypeDeclaration node) { if (any(node.getAnnotations(), IS_DEPRECATED_ANNOTATION)) { return; } final TypeDefinition type = node.getUserData(Keys.TYPE_DEFINITION); if (type == null || (type.getFlags() & Flags.DEPRECATED) != Flags.DEPRECATED) { return; } if (type.getCompilerMajorVersion() < CompilerTarget.JDK1_5.majorVersion) { return; } addAnnotation(node, type.getResolver(), DEPRECATED_ANNOTATION_NAME); }
private static TypeReference arraySuperType(final TypeReference t) { final TypeDefinition resolved = t.resolve(); if (resolved != null) { final IMetadataResolver resolver = resolved.getResolver(); final TypeReference cloneable = resolver.lookupType("java/lang/Cloneable"); final TypeReference serializable = resolver.lookupType("java/io/Serializable"); if (cloneable != null) { if (serializable != null) { return new CompoundTypeReference( null, ArrayUtilities.asUnmodifiableList(cloneable, serializable) ); } return cloneable; } if (serializable != null) { return serializable; } } return BuiltinTypes.Object; }
private static TypeReference arraySuperType(final TypeReference t) { final TypeDefinition resolved = t.resolve(); if (resolved != null) { final IMetadataResolver resolver = resolved.getResolver(); final TypeReference cloneable = resolver.lookupType("java/lang/Cloneable"); final TypeReference serializable = resolver.lookupType("java/io/Serializable"); if (cloneable != null) { if (serializable != null) { return new CompoundTypeReference( null, ArrayUtilities.asUnmodifiableList(cloneable, serializable) ); } return cloneable; } if (serializable != null) { return serializable; } } return BuiltinTypes.Object; }
protected AbstractBasicBlockOptimization(final DecompilerContext context, final Block method) { this.context = VerifyArgument.notNull(context, "context"); this.resolver = context.getCurrentType().getResolver(); this.method = VerifyArgument.notNull(method, "method"); for (final Expression e : method.getSelfAndChildrenRecursive(Expression.class)) { if (e.isBranch()) { for (final Label target : e.getBranchTargets()) { labelGlobalRefCount.get(target).increment(); } } } for (final BasicBlock basicBlock : method.getSelfAndChildrenRecursive(BasicBlock.class)) { for (final Node child : basicBlock.getChildren()) { if (child instanceof Label) { labelToBasicBlock.put((Label) child, basicBlock); } } } } }
protected AbstractBasicBlockOptimization(final DecompilerContext context, final Block method) { this.context = VerifyArgument.notNull(context, "context"); this.resolver = context.getCurrentType().getResolver(); this.method = VerifyArgument.notNull(method, "method"); for (final Expression e : method.getSelfAndChildrenRecursive(Expression.class)) { if (e.isBranch()) { for (final Label target : e.getBranchTargets()) { labelGlobalRefCount.get(target).increment(); } } } for (final BasicBlock basicBlock : method.getSelfAndChildrenRecursive(BasicBlock.class)) { for (final Node child : basicBlock.getChildren()) { if (child instanceof Label) { labelToBasicBlock.put((Label) child, basicBlock); } } } } }
public boolean isOverridden(MethodDefinition md) { if(md.isStatic() || md.isFinal() || md.getDeclaringType().isFinal()) return false; IMetadataResolver resolver = md.getDeclaringType().getResolver(); MemberInfo mi = new MemberInfo(md); TypeHierarchy th = get(md.getDeclaringType()); return th != null && th.isOverridden(resolver, mi); }
private boolean allImplementationsDerivedFromSubclass(Hierarchy h, TypeReference superClass, TypeReference subClass) { TypeDefinition td = superClass.resolve(); if(td == null || (!td.isInterface() && !Flags.testAny(td.getFlags(), Flags.ABSTRACT)) ) return false; for(TypeHierarchy th : h.get(td).getSubClasses()) { if(subClass.getInternalName().equals(th.getInternalName())) continue; if(th.hasFlag(Flags.INTERFACE) || th.hasFlag(Flags.ABSTRACT)) continue; TypeReference subType = td.getResolver().lookupType(th.getInternalName()); if(subType == null || Types.isInstance(subType, subClass)) continue; return false; } return true; }
private void tryAddDeprecatedAnnotationToMember(final EntityDeclaration node) { if (any(node.getAnnotations(), IS_DEPRECATED_ANNOTATION)) { return; } IMemberDefinition member = node.getUserData(Keys.METHOD_DEFINITION); if (member == null) { member = node.getUserData(Keys.FIELD_DEFINITION); } if (member == null || (member.getFlags() & Flags.DEPRECATED) != Flags.DEPRECATED) { return; } final TypeReference declaringType = member.getDeclaringType(); final TypeDefinition resolvedType = declaringType instanceof TypeDefinition ? (TypeDefinition) declaringType : declaringType.resolve(); if (resolvedType == null || resolvedType.getCompilerMajorVersion() < CompilerTarget.JDK1_5.majorVersion) { return; } addAnnotation(node, resolvedType.getResolver(), DEPRECATED_ANNOTATION_NAME); }