class com.sun.tools.javac.code.Types$ImplementationCache
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.sun.tools.javac.code.Types$ImplementationCache
super_class: java.lang.Object
{
private java.util.WeakHashMap<com.sun.tools.javac.code.Symbol$MethodSymbol, java.lang.ref.SoftReference<java.util.Map<com.sun.tools.javac.code.Symbol$TypeSymbol, com.sun.tools.javac.code.Types$ImplementationCache$Entry>>> _map;
descriptor: Ljava/util/WeakHashMap;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/WeakHashMap<Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Ljava/lang/ref/SoftReference<Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/Types$ImplementationCache$Entry;>;>;>;
final com.sun.tools.javac.code.Types this$0;
descriptor: Lcom/sun/tools/javac/code/Types;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.sun.tools.javac.code.Types);
descriptor: (Lcom/sun/tools/javac/code/Types;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.sun.tools.javac.code.Types$ImplementationCache.this$0:Lcom/sun/tools/javac/code/Types;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
putfield com.sun.tools.javac.code.Types$ImplementationCache._map:Ljava/util/WeakHashMap;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/code/Types$ImplementationCache;
MethodParameters:
Name Flags
this$0 final
com.sun.tools.javac.code.Symbol$MethodSymbol get(com.sun.tools.javac.code.Symbol$MethodSymbol, com.sun.tools.javac.code.Symbol$TypeSymbol, boolean, com.sun.tools.javac.util.Filter<com.sun.tools.javac.code.Symbol>);
descriptor: (Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;ZLcom/sun/tools/javac/util/Filter;)Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
flags: (0x0000)
Code:
stack=9, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache._map:Ljava/util/WeakHashMap;
aload 1
invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ref.SoftReference
astore 5
start local 5 1: aload 5
ifnull 2
aload 5
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.util.Map
goto 3
StackMap locals: java.lang.ref.SoftReference
StackMap stack:
2: aconst_null
StackMap locals:
StackMap stack: java.util.Map
3: astore 6
start local 6 4: aload 6
ifnonnull 7
5: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 6
6: aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache._map:Ljava/util/WeakHashMap;
aload 1
new java.lang.ref.SoftReference
dup
aload 6
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: StackMap locals: java.util.Map
StackMap stack:
aload 6
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.javac.code.Types$ImplementationCache$Entry
astore 7
start local 7 8: aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache.this$0:Lcom/sun/tools/javac/code/Types;
aload 2
getfield com.sun.tools.javac.code.Symbol$TypeSymbol.type:Lcom/sun/tools/javac/code/Type;
iconst_1
invokevirtual com.sun.tools.javac.code.Types.membersClosure:(Lcom/sun/tools/javac/code/Type;Z)Lcom/sun/tools/javac/code/Scope$CompoundScope;
astore 8
start local 8 9: aload 7
ifnull 11
10: aload 7
aload 4
iload 3
aload 8
invokevirtual com.sun.tools.javac.code.Scope$CompoundScope.getMark:()I
invokevirtual com.sun.tools.javac.code.Types$ImplementationCache$Entry.matches:(Lcom/sun/tools/javac/util/Filter;ZI)Z
ifne 14
11: StackMap locals: com.sun.tools.javac.code.Types$ImplementationCache$Entry com.sun.tools.javac.code.Scope$CompoundScope
StackMap stack:
aload 0
aload 1
aload 2
iload 3
aload 4
invokevirtual com.sun.tools.javac.code.Types$ImplementationCache.implementationInternal:(Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;ZLcom/sun/tools/javac/util/Filter;)Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
astore 9
start local 9 12: aload 6
aload 2
new com.sun.tools.javac.code.Types$ImplementationCache$Entry
dup
aload 0
aload 9
aload 4
iload 3
aload 8
invokevirtual com.sun.tools.javac.code.Scope$CompoundScope.getMark:()I
invokespecial com.sun.tools.javac.code.Types$ImplementationCache$Entry.<init>:(Lcom/sun/tools/javac/code/Types$ImplementationCache;Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/util/Filter;ZI)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
13: aload 9
areturn
end local 9 14: StackMap locals:
StackMap stack:
aload 7
getfield com.sun.tools.javac.code.Types$ImplementationCache$Entry.cachedImpl:Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/sun/tools/javac/code/Types$ImplementationCache;
0 15 1 ms Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
0 15 2 origin Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
0 15 3 checkResult Z
0 15 4 implFilter Lcom/sun/tools/javac/util/Filter<Lcom/sun/tools/javac/code/Symbol;>;
1 15 5 ref_cache Ljava/lang/ref/SoftReference<Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/Types$ImplementationCache$Entry;>;>;
4 15 6 cache Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/Types$ImplementationCache$Entry;>;
8 15 7 e Lcom/sun/tools/javac/code/Types$ImplementationCache$Entry;
9 15 8 members Lcom/sun/tools/javac/code/Scope$CompoundScope;
12 14 9 impl Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
Signature: (Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;ZLcom/sun/tools/javac/util/Filter<Lcom/sun/tools/javac/code/Symbol;>;)Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
MethodParameters:
Name Flags
ms
origin
checkResult
implFilter
private com.sun.tools.javac.code.Symbol$MethodSymbol implementationInternal(com.sun.tools.javac.code.Symbol$MethodSymbol, com.sun.tools.javac.code.Symbol$TypeSymbol, boolean, com.sun.tools.javac.util.Filter<com.sun.tools.javac.code.Symbol>);
descriptor: (Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;ZLcom/sun/tools/javac/util/Filter;)Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
getfield com.sun.tools.javac.code.Symbol$TypeSymbol.type:Lcom/sun/tools/javac/code/Type;
astore 5
start local 5 1: goto 15
2: StackMap locals: com.sun.tools.javac.code.Type
StackMap stack:
aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache.this$0:Lcom/sun/tools/javac/code/Types;
aload 5
iconst_0
invokevirtual com.sun.tools.javac.code.Types.skipTypeVars:(Lcom/sun/tools/javac/code/Type;Z)Lcom/sun/tools/javac/code/Type;
astore 5
3: aload 5
getfield com.sun.tools.javac.code.Type.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
astore 6
start local 6 4: aconst_null
astore 7
start local 7 5: aload 6
invokevirtual com.sun.tools.javac.code.Symbol$TypeSymbol.members:()Lcom/sun/tools/javac/code/Scope$WriteableScope;
aload 1
getfield com.sun.tools.javac.code.Symbol$MethodSymbol.name:Lcom/sun/tools/javac/util/Name;
aload 4
invokevirtual com.sun.tools.javac.code.Scope$WriteableScope.getSymbolsByName:(Lcom/sun/tools/javac/util/Name;Lcom/sun/tools/javac/util/Filter;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 9
goto 11
StackMap locals: com.sun.tools.javac.code.Types$ImplementationCache com.sun.tools.javac.code.Symbol$MethodSymbol com.sun.tools.javac.code.Symbol$TypeSymbol int com.sun.tools.javac.util.Filter com.sun.tools.javac.code.Type com.sun.tools.javac.code.Symbol$TypeSymbol com.sun.tools.javac.code.Symbol top java.util.Iterator
StackMap stack:
6: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.sun.tools.javac.code.Symbol
astore 8
start local 8 7: aload 8
ifnull 11
aload 8
aload 1
aload 2
aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache.this$0:Lcom/sun/tools/javac/code/Types;
iload 3
invokevirtual com.sun.tools.javac.code.Symbol.overrides:(Lcom/sun/tools/javac/code/Symbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;Lcom/sun/tools/javac/code/Types;Z)Z
ifeq 11
8: aload 8
astore 7
9: aload 8
invokevirtual com.sun.tools.javac.code.Symbol.flags:()J
ldc 1024
land
lconst_0
lcmp
ifne 11
10: goto 12
end local 8 11: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
12: StackMap locals: com.sun.tools.javac.code.Types$ImplementationCache com.sun.tools.javac.code.Symbol$MethodSymbol com.sun.tools.javac.code.Symbol$TypeSymbol int com.sun.tools.javac.util.Filter com.sun.tools.javac.code.Type com.sun.tools.javac.code.Symbol$TypeSymbol com.sun.tools.javac.code.Symbol
StackMap stack:
aload 7
ifnull 14
13: aload 7
checkcast com.sun.tools.javac.code.Symbol$MethodSymbol
areturn
end local 7 end local 6 14: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.javac.code.Types$ImplementationCache.this$0:Lcom/sun/tools/javac/code/Types;
aload 5
invokevirtual com.sun.tools.javac.code.Types.supertype:(Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/code/Type;
astore 5
StackMap locals:
StackMap stack:
15: aload 5
getstatic com.sun.tools.javac.code.TypeTag.CLASS:Lcom/sun/tools/javac/code/TypeTag;
invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
ifne 2
aload 5
getstatic com.sun.tools.javac.code.TypeTag.TYPEVAR:Lcom/sun/tools/javac/code/TypeTag;
invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
ifne 2
end local 5 16: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/sun/tools/javac/code/Types$ImplementationCache;
0 17 1 ms Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
0 17 2 origin Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
0 17 3 checkResult Z
0 17 4 implFilter Lcom/sun/tools/javac/util/Filter<Lcom/sun/tools/javac/code/Symbol;>;
1 16 5 t Lcom/sun/tools/javac/code/Type;
4 14 6 c Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
5 14 7 bestSoFar Lcom/sun/tools/javac/code/Symbol;
7 11 8 sym Lcom/sun/tools/javac/code/Symbol;
Signature: (Lcom/sun/tools/javac/code/Symbol$MethodSymbol;Lcom/sun/tools/javac/code/Symbol$TypeSymbol;ZLcom/sun/tools/javac/util/Filter<Lcom/sun/tools/javac/code/Symbol;>;)Lcom/sun/tools/javac/code/Symbol$MethodSymbol;
MethodParameters:
Name Flags
ms
origin
checkResult
implFilter
}
SourceFile: "Types.java"
NestHost: com.sun.tools.javac.code.Types
InnerClasses:
public CompoundScope = com.sun.tools.javac.code.Scope$CompoundScope of com.sun.tools.javac.code.Scope
public abstract WriteableScope = com.sun.tools.javac.code.Scope$WriteableScope of com.sun.tools.javac.code.Scope
public MethodSymbol = com.sun.tools.javac.code.Symbol$MethodSymbol of com.sun.tools.javac.code.Symbol
public abstract TypeSymbol = com.sun.tools.javac.code.Symbol$TypeSymbol of com.sun.tools.javac.code.Symbol
ImplementationCache = com.sun.tools.javac.code.Types$ImplementationCache of com.sun.tools.javac.code.Types
Entry = com.sun.tools.javac.code.Types$ImplementationCache$Entry of com.sun.tools.javac.code.Types$ImplementationCache