public class org.jruby.util.RecursiveComparator
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.util.RecursiveComparator
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.jruby.util.RecursiveComparator this
0: .line 16
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.jruby.util.RecursiveComparator this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/RecursiveComparator;
public static <T> org.jruby.runtime.builtin.IRubyObject compare(org.jruby.runtime.ThreadContext, T, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/lang/Object;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=9, args_size=4
start local 0 // org.jruby.runtime.ThreadContext context
start local 1 // java.lang.Object invokable
start local 2 // org.jruby.runtime.builtin.IRubyObject a
start local 3 // org.jruby.runtime.builtin.IRubyObject b
0: .line 19
aload 2 /* a */
aload 3 /* b */
if_acmpne 2
1: .line 20
aload 0 /* context */
getfield org.jruby.runtime.ThreadContext.tru:Lorg/jruby/RubyBoolean;
areturn
2: .line 23
StackMap locals:
StackMap stack:
iconst_0
istore 4 /* clear */
start local 4 // boolean clear
3: .line 28
aload 2 /* a */
instanceof org.jruby.RubyHash
ifeq 4
aload 3 /* b */
instanceof org.jruby.RubyHash
ifne 5
4: .line 29
StackMap locals: int
StackMap stack:
aload 2 /* a */
instanceof org.jruby.RubyArray
ifeq 16
aload 3 /* b */
instanceof org.jruby.RubyArray
ifeq 16
5: .line 31
StackMap locals:
StackMap stack:
new org.jruby.util.RecursiveComparator$Pair
dup
aload 2 /* a */
aload 3 /* b */
invokespecial org.jruby.util.RecursiveComparator$Pair.<init>:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)V
astore 6 /* pair */
start local 6 // org.jruby.util.RecursiveComparator$Pair pair
6: .line 33
aload 0 /* context */
invokevirtual org.jruby.runtime.ThreadContext.getRecursiveSet:()Ljava/util/Set;
dup
astore 5 /* seen */
start local 5 // java.util.Set seen
7: ifnonnull 11
8: .line 36
aload 0 /* context */
new java.util.HashSet
dup
iconst_4
invokespecial java.util.HashSet.<init>:(I)V
dup
astore 5 /* seen */
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
9: .line 37
iconst_1
istore 4 /* clear */
10: .line 38
goto 15
11: .line 39
StackMap locals: java.util.Set org.jruby.util.RecursiveComparator$Pair
StackMap stack:
aload 5 /* seen */
aload 6 /* pair */
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 15
12: .line 40
aload 0 /* context */
getfield org.jruby.runtime.ThreadContext.tru:Lorg/jruby/RubyBoolean;
astore 8
13: .line 57
iload 4 /* clear */
ifeq 14
aload 0 /* context */
aconst_null
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
14: .line 40
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int java.util.Set org.jruby.util.RecursiveComparator$Pair top org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 8
areturn
15: .line 43
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int java.util.Set org.jruby.util.RecursiveComparator$Pair
StackMap stack:
aload 5 /* seen */
aload 6 /* pair */
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 6 // org.jruby.util.RecursiveComparator$Pair pair
end local 5 // java.util.Set seen
16: .line 46
StackMap locals:
StackMap stack:
aload 2 /* a */
instanceof org.jruby.RubyHash
ifeq 21
17: .line 47
aload 2 /* a */
checkcast org.jruby.RubyHash
astore 6 /* hash */
start local 6 // org.jruby.RubyHash hash
18: .line 48
aload 6 /* hash */
aload 0 /* context */
aload 1 /* invokable */
checkcast org.jruby.RubyHash$VisitorWithState
aload 3 /* b */
invokevirtual org.jruby.RubyHash.compare:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/RubyHash$VisitorWithState;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyBoolean;
astore 8
19: .line 57
iload 4 /* clear */
ifeq 20
aload 0 /* context */
aconst_null
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
20: .line 48
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int top org.jruby.RubyHash top org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 8
areturn
end local 6 // org.jruby.RubyHash hash
21: .line 50
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int
StackMap stack:
aload 2 /* a */
instanceof org.jruby.RubyArray
ifeq 26
22: .line 51
aload 2 /* a */
checkcast org.jruby.RubyArray
astore 6 /* array */
start local 6 // org.jruby.RubyArray array
23: .line 52
aload 6 /* array */
aload 0 /* context */
aload 1 /* invokable */
checkcast org.jruby.runtime.CallSite
aload 3 /* b */
invokevirtual org.jruby.RubyArray.compare:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/CallSite;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyBoolean;
astore 8
24: .line 57
iload 4 /* clear */
ifeq 25
aload 0 /* context */
aconst_null
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
25: .line 52
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int top org.jruby.RubyArray top org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 8
areturn
end local 6 // org.jruby.RubyArray array
26: .line 54
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int
StackMap stack:
aload 1 /* invokable */
checkcast org.jruby.runtime.CallSite
aload 0 /* context */
aload 2 /* a */
aload 2 /* a */
aload 3 /* b */
invokevirtual org.jruby.runtime.CallSite.call:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 8
27: .line 57
iload 4 /* clear */
ifeq 28
aload 0 /* context */
aconst_null
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
28: .line 54
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int top top top org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 8
areturn
29: .line 56
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int
StackMap stack: java.lang.Throwable
astore 7
30: .line 57
iload 4 /* clear */
ifeq 31
aload 0 /* context */
aconst_null
invokevirtual org.jruby.runtime.ThreadContext.setRecursiveSet:(Ljava/util/Set;)V
31: .line 58
StackMap locals: org.jruby.runtime.ThreadContext java.lang.Object org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int top top java.lang.Throwable
StackMap stack:
aload 7
athrow
end local 4 // boolean clear
end local 3 // org.jruby.runtime.builtin.IRubyObject b
end local 2 // org.jruby.runtime.builtin.IRubyObject a
end local 1 // java.lang.Object invokable
end local 0 // org.jruby.runtime.ThreadContext context
LocalVariableTable:
Start End Slot Name Signature
0 32 0 context Lorg/jruby/runtime/ThreadContext;
0 32 1 invokable TT;
0 32 2 a Lorg/jruby/runtime/builtin/IRubyObject;
0 32 3 b Lorg/jruby/runtime/builtin/IRubyObject;
3 32 4 clear Z
7 16 5 seen Ljava/util/Set<Lorg/jruby/util/RecursiveComparator$Pair;>;
6 16 6 pair Lorg/jruby/util/RecursiveComparator$Pair;
18 21 6 hash Lorg/jruby/RubyHash;
23 26 6 array Lorg/jruby/RubyArray;
Exception table:
from to target type
3 13 29 any
15 19 29 any
21 24 29 any
26 27 29 any
Signature: <T:Ljava/lang/Object;>(Lorg/jruby/runtime/ThreadContext;TT;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
context
invokable
a
b
}
SourceFile: "RecursiveComparator.java"
NestMembers:
org.jruby.util.RecursiveComparator$Pair
InnerClasses:
public abstract VisitorWithState = org.jruby.RubyHash$VisitorWithState of org.jruby.RubyHash
public Pair = org.jruby.util.RecursiveComparator$Pair of org.jruby.util.RecursiveComparator