public class com.sun.tools.javac.comp.TreeHasher extends com.sun.tools.javac.tree.TreeScanner
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.sun.tools.javac.comp.TreeHasher
super_class: com.sun.tools.javac.tree.TreeScanner
{
private final java.util.Map<com.sun.tools.javac.code.Symbol, java.lang.Integer> symbolHashes;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol;Ljava/lang/Integer;>;
private int result;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>(java.util.Map<com.sun.tools.javac.code.Symbol, java.lang.Integer>);
descriptor: (Ljava/util/Map;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial com.sun.tools.javac.tree.TreeScanner.<init>:()V
1: aload 0
bipush 17
putfield com.sun.tools.javac.comp.TreeHasher.result:I
2: aload 0
aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Map
putfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 4 1 symbolHashes Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol;Ljava/lang/Integer;>;
Signature: (Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol;Ljava/lang/Integer;>;)V
MethodParameters:
Name Flags
symbolHashes
public static int hash(com.sun.tools.javac.tree.JCTree, java.util.Collection<? extends com.sun.tools.javac.code.Symbol>);
descriptor: (Lcom/sun/tools/javac/tree/JCTree;Ljava/util/Collection;)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
ifnonnull 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 2
start local 2 3: aload 1
aload 2
invokedynamic accept(Ljava/util/Map;)Ljava/util/function/Consumer;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
com/sun/tools/javac/comp/TreeHasher.lambda$0(Ljava/util/Map;Lcom/sun/tools/javac/code/Symbol;)V (6)
(Lcom/sun/tools/javac/code/Symbol;)V
invokeinterface java.util.Collection.forEach:(Ljava/util/function/Consumer;)V
4: new com.sun.tools.javac.comp.TreeHasher
dup
aload 2
invokespecial com.sun.tools.javac.comp.TreeHasher.<init>:(Ljava/util/Map;)V
astore 3
start local 3 5: aload 0
aload 3
invokevirtual com.sun.tools.javac.tree.JCTree.accept:(Lcom/sun/tools/javac/tree/JCTree$Visitor;)V
6: aload 3
getfield com.sun.tools.javac.comp.TreeHasher.result:I
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 tree Lcom/sun/tools/javac/tree/JCTree;
0 7 1 symbols Ljava/util/Collection<+Lcom/sun/tools/javac/code/Symbol;>;
3 7 2 symbolHashes Ljava/util/Map<Lcom/sun/tools/javac/code/Symbol;Ljava/lang/Integer;>;
5 7 3 hasher Lcom/sun/tools/javac/comp/TreeHasher;
Signature: (Lcom/sun/tools/javac/tree/JCTree;Ljava/util/Collection<+Lcom/sun/tools/javac/code/Symbol;>;)I
MethodParameters:
Name Flags
tree
symbols
private void hash(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
bipush 31
aload 0
getfield com.sun.tools.javac.comp.TreeHasher.result:I
imul
aload 1
invokestatic java.util.Objects.hashCode:(Ljava/lang/Object;)I
iadd
putfield com.sun.tools.javac.comp.TreeHasher.result:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 2 1 object Ljava/lang/Object;
MethodParameters:
Name Flags
object
public void scan(com.sun.tools.javac.tree.JCTree);
descriptor: (Lcom/sun/tools/javac/tree/JCTree;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
invokestatic com.sun.tools.javac.tree.TreeInfo.skipParens:(Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree;
astore 1
3: aload 1
getfield com.sun.tools.javac.tree.JCTree.type:Lcom/sun/tools/javac/code/Type;
ifnull 8
4: aload 1
getfield com.sun.tools.javac.tree.JCTree.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.constValue:()Ljava/lang/Object;
astore 2
start local 2 5: aload 2
ifnull 8
6: aload 0
aload 2
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
7: return
end local 2 8: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.sun.tools.javac.tree.JCTree.getTag:()Lcom/sun/tools/javac/tree/JCTree$Tag;
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
9: aload 1
aload 0
invokevirtual com.sun.tools.javac.tree.JCTree.accept:(Lcom/sun/tools/javac/tree/JCTree$Visitor;)V
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 11 1 tree Lcom/sun/tools/javac/tree/JCTree;
5 8 2 value Ljava/lang/Object;
MethodParameters:
Name Flags
tree
public void visitLiteral(com.sun.tools.javac.tree.JCTree$JCLiteral);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCLiteral;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCLiteral.value:Ljava/lang/Object;
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
1: aload 0
aload 1
invokespecial com.sun.tools.javac.tree.TreeScanner.visitLiteral:(Lcom/sun/tools/javac/tree/JCTree$JCLiteral;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 3 1 tree Lcom/sun/tools/javac/tree/JCTree$JCLiteral;
MethodParameters:
Name Flags
tree
public void visitIdent(com.sun.tools.javac.tree.JCTree$JCIdent);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCIdent;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCIdent.sym:Lcom/sun/tools/javac/code/Symbol;
astore 2
start local 2 1: aload 2
ifnull 6
2: aload 0
getfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 3
start local 3 3: aload 3
ifnull 6
4: aload 0
aload 3
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
5: return
end local 3 6: StackMap locals: com.sun.tools.javac.code.Symbol
StackMap stack:
aload 0
aload 2
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 8 1 tree Lcom/sun/tools/javac/tree/JCTree$JCIdent;
1 8 2 sym Lcom/sun/tools/javac/code/Symbol;
3 6 3 hash Ljava/lang/Integer;
MethodParameters:
Name Flags
tree
public void visitSelect(com.sun.tools.javac.tree.JCTree$JCFieldAccess);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCFieldAccess.sym:Lcom/sun/tools/javac/code/Symbol;
invokevirtual com.sun.tools.javac.comp.TreeHasher.hash:(Ljava/lang/Object;)V
1: aload 0
aload 1
invokespecial com.sun.tools.javac.tree.TreeScanner.visitSelect:(Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 3 1 tree Lcom/sun/tools/javac/tree/JCTree$JCFieldAccess;
MethodParameters:
Name Flags
tree
public void visitBindingPattern(com.sun.tools.javac.tree.JCTree$JCBindingPattern);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCBindingPattern;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCBindingPattern.symbol:Lcom/sun/tools/javac/code/Symbol$BindingSymbol;
aload 0
invokedynamic apply(Lcom/sun/tools/javac/comp/TreeHasher;)Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
com/sun/tools/javac/comp/TreeHasher.lambda$1(Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer; (7)
(Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer;
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
pop
1: aload 0
aload 1
invokespecial com.sun.tools.javac.tree.TreeScanner.visitBindingPattern:(Lcom/sun/tools/javac/tree/JCTree$JCBindingPattern;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 3 1 tree Lcom/sun/tools/javac/tree/JCTree$JCBindingPattern;
MethodParameters:
Name Flags
tree
public void visitVarDef(com.sun.tools.javac.tree.JCTree$JCVariableDecl);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCVariableDecl;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCVariableDecl.sym:Lcom/sun/tools/javac/code/Symbol$VarSymbol;
aload 0
invokedynamic apply(Lcom/sun/tools/javac/comp/TreeHasher;)Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
com/sun/tools/javac/comp/TreeHasher.lambda$2(Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer; (7)
(Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer;
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
pop
1: aload 0
aload 1
invokespecial com.sun.tools.javac.tree.TreeScanner.visitVarDef:(Lcom/sun/tools/javac/tree/JCTree$JCVariableDecl;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 3 1 tree Lcom/sun/tools/javac/tree/JCTree$JCVariableDecl;
MethodParameters:
Name Flags
tree
private static void lambda$0(java.util.Map, com.sun.tools.javac.code.Symbol);
descriptor: (Ljava/util/Map;Lcom/sun/tools/javac/code/Symbol;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=2, args_size=2
start local 1 0: aload 0
aload 1
aload 0
invokeinterface java.util.Map.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
return
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 1 1 s Lcom/sun/tools/javac/code/Symbol;
private java.lang.Integer lambda$1(com.sun.tools.javac.code.Symbol);
descriptor: (Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 1 1 k Lcom/sun/tools/javac/code/Symbol;
private java.lang.Integer lambda$2(com.sun.tools.javac.code.Symbol);
descriptor: (Lcom/sun/tools/javac/code/Symbol;)Ljava/lang/Integer;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.javac.comp.TreeHasher.symbolHashes:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/javac/comp/TreeHasher;
0 1 1 k Lcom/sun/tools/javac/code/Symbol;
}
SourceFile: "TreeHasher.java"
InnerClasses:
public JCBindingPattern = com.sun.tools.javac.tree.JCTree$JCBindingPattern of com.sun.tools.javac.tree.JCTree
public JCFieldAccess = com.sun.tools.javac.tree.JCTree$JCFieldAccess of com.sun.tools.javac.tree.JCTree
public JCIdent = com.sun.tools.javac.tree.JCTree$JCIdent of com.sun.tools.javac.tree.JCTree
public JCLiteral = com.sun.tools.javac.tree.JCTree$JCLiteral of com.sun.tools.javac.tree.JCTree
public JCVariableDecl = com.sun.tools.javac.tree.JCTree$JCVariableDecl of com.sun.tools.javac.tree.JCTree
public final Tag = com.sun.tools.javac.tree.JCTree$Tag of com.sun.tools.javac.tree.JCTree
public abstract Visitor = com.sun.tools.javac.tree.JCTree$Visitor of com.sun.tools.javac.tree.JCTree
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles