class android.widget.RelativeLayout$DependencyGraph
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: android.widget.RelativeLayout$DependencyGraph
super_class: java.lang.Object
{
private java.util.ArrayList<android.widget.RelativeLayout$DependencyGraph$Node> mNodes;
descriptor: Ljava/util/ArrayList;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
private android.util.SparseArray<android.widget.RelativeLayout$DependencyGraph$Node> mKeyNodes;
descriptor: Landroid/util/SparseArray;
flags: (0x0002) ACC_PRIVATE
Signature: Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
private java.util.ArrayDeque<android.widget.RelativeLayout$DependencyGraph$Node> mRoots;
descriptor: Ljava/util/ArrayDeque;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
2: aload 0
new android.util.SparseArray
dup
invokespecial android.util.SparseArray.<init>:()V
putfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
3: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Landroid/widget/RelativeLayout$DependencyGraph;
void clear();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
astore 1
start local 1 1: aload 1
invokevirtual java.util.ArrayList.size:()I
istore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 6
4: StackMap locals: java.util.ArrayList int int
StackMap stack:
aload 1
iload 3
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
invokevirtual android.widget.RelativeLayout$DependencyGraph$Node.release:()V
5: iinc 3 1
StackMap locals:
StackMap stack:
6: iload 3
iload 2
if_icmplt 4
end local 3 7: aload 1
invokevirtual java.util.ArrayList.clear:()V
8: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
invokevirtual android.util.SparseArray.clear:()V
9: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
invokevirtual java.util.ArrayDeque.clear:()V
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Landroid/widget/RelativeLayout$DependencyGraph;
1 11 1 nodes Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
2 11 2 count I
3 7 3 i I
void add(android.view.View);
descriptor: (Landroid/view/View;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual android.view.View.getId:()I
istore 2
start local 2 1: aload 1
invokestatic android.widget.RelativeLayout$DependencyGraph$Node.acquire:(Landroid/view/View;)Landroid/widget/RelativeLayout$DependencyGraph$Node;
astore 3
start local 3 2: iload 2
iconst_m1
if_icmpeq 4
3: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
iload 2
aload 3
invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
4: StackMap locals: int android.widget.RelativeLayout$DependencyGraph$Node
StackMap stack:
aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
aload 3
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
5: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Landroid/widget/RelativeLayout$DependencyGraph;
0 6 1 view Landroid/view/View;
1 6 2 id I
2 6 3 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
MethodParameters:
Name Flags
view
void getSortedViews(android.view.View[], int[]);
descriptor: ([Landroid/view/View;[I)V
flags: (0x0080) ACC_VARARGS
Code:
stack=3, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 2
invokevirtual android.widget.RelativeLayout$DependencyGraph.findRoots:([I)Ljava/util/ArrayDeque;
astore 3
start local 3 1: iconst_0
istore 4
start local 4 2: goto 17
start local 5 3: StackMap locals: java.util.ArrayDeque int android.widget.RelativeLayout$DependencyGraph$Node
StackMap stack:
aload 5
getfield android.widget.RelativeLayout$DependencyGraph$Node.view:Landroid/view/View;
astore 6
start local 6 4: aload 6
invokevirtual android.view.View.getId:()I
istore 7
start local 7 5: aload 1
iload 4
iinc 4 1
aload 6
aastore
6: aload 5
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
astore 8
start local 8 7: aload 8
invokevirtual android.util.ArrayMap.size:()I
istore 9
start local 9 8: iconst_0
istore 10
start local 10 9: goto 16
10: StackMap locals: android.widget.RelativeLayout$DependencyGraph android.view.View[] int[] java.util.ArrayDeque int android.widget.RelativeLayout$DependencyGraph$Node android.view.View int android.util.ArrayMap int int
StackMap stack:
aload 8
iload 10
invokevirtual android.util.ArrayMap.keyAt:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
astore 11
start local 11 11: aload 11
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
astore 12
start local 12 12: aload 12
iload 7
invokevirtual android.util.SparseArray.remove:(I)V
13: aload 12
invokevirtual android.util.SparseArray.size:()I
ifne 15
14: aload 3
aload 11
invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
pop
end local 12 end local 11 15: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
16: iload 10
iload 9
if_icmplt 10
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 17: StackMap locals: android.widget.RelativeLayout$DependencyGraph android.view.View[] int[] java.util.ArrayDeque int
StackMap stack:
aload 3
invokevirtual java.util.ArrayDeque.pollLast:()Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
dup
astore 5
start local 5 18: ifnonnull 3
19: iload 4
aload 1
arraylength
if_icmpge 21
20: new java.lang.IllegalStateException
dup
ldc "Circular dependencies cannot exist in RelativeLayout"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals: android.widget.RelativeLayout$DependencyGraph$Node
StackMap stack:
return
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 22 0 this Landroid/widget/RelativeLayout$DependencyGraph;
0 22 1 sorted [Landroid/view/View;
0 22 2 rules [I
1 22 3 roots Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
2 22 4 index I
3 17 5 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
18 22 5 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
4 17 6 view Landroid/view/View;
5 17 7 key I
7 17 8 dependents Landroid/util/ArrayMap<Landroid/widget/RelativeLayout$DependencyGraph$Node;Landroid/widget/RelativeLayout$DependencyGraph;>;
8 17 9 count I
9 17 10 i I
11 15 11 dependent Landroid/widget/RelativeLayout$DependencyGraph$Node;
12 15 12 dependencies Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
MethodParameters:
Name Flags
sorted
rules
private java.util.ArrayDeque<android.widget.RelativeLayout$DependencyGraph$Node> findRoots(int[]);
descriptor: ([I)Ljava/util/ArrayDeque;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=13, args_size=2
start local 0 start local 1 0: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mKeyNodes:Landroid/util/SparseArray;
astore 2
start local 2 1: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mNodes:Ljava/util/ArrayList;
astore 3
start local 3 2: aload 3
invokevirtual java.util.ArrayList.size:()I
istore 4
start local 4 3: iconst_0
istore 5
start local 5 4: goto 9
5: StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int
StackMap stack:
aload 3
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
astore 6
start local 6 6: aload 6
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
invokevirtual android.util.ArrayMap.clear:()V
7: aload 6
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
invokevirtual android.util.SparseArray.clear:()V
end local 6 8: iinc 5 1
StackMap locals:
StackMap stack:
9: iload 5
iload 4
if_icmplt 5
end local 5 10: iconst_0
istore 5
start local 5 11: goto 28
12: StackMap locals:
StackMap stack:
aload 3
iload 5
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
astore 6
start local 6 13: aload 6
getfield android.widget.RelativeLayout$DependencyGraph$Node.view:Landroid/view/View;
invokevirtual android.view.View.getLayoutParams:()Landroid/view/ViewGroup$LayoutParams;
checkcast android.widget.RelativeLayout$LayoutParams
astore 7
start local 7 14: aload 7
getfield android.widget.RelativeLayout$LayoutParams.mRules:[I
astore 8
start local 8 15: aload 1
arraylength
istore 9
start local 9 16: iconst_0
istore 10
start local 10 17: goto 26
18: StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int android.widget.RelativeLayout$DependencyGraph$Node android.widget.RelativeLayout$LayoutParams int[] int int
StackMap stack:
aload 8
aload 1
iload 10
iaload
iaload
istore 11
start local 11 19: iload 11
ifle 25
20: aload 2
iload 11
invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
astore 12
start local 12 21: aload 12
ifnull 25
aload 12
aload 6
if_acmpne 23
22: goto 25
23: StackMap locals: int android.widget.RelativeLayout$DependencyGraph$Node
StackMap stack:
aload 12
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependents:Landroid/util/ArrayMap;
aload 6
aload 0
invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
24: aload 6
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
iload 11
aload 12
invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
end local 12 end local 11 25: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
26: iload 10
iload 9
if_icmplt 18
end local 10 end local 9 end local 8 end local 7 end local 6 27: iinc 5 1
StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int int
StackMap stack:
28: iload 5
iload 4
if_icmplt 12
end local 5 29: aload 0
getfield android.widget.RelativeLayout$DependencyGraph.mRoots:Ljava/util/ArrayDeque;
astore 5
start local 5 30: aload 5
invokevirtual java.util.ArrayDeque.clear:()V
31: iconst_0
istore 6
start local 6 32: goto 36
33: StackMap locals: android.widget.RelativeLayout$DependencyGraph int[] android.util.SparseArray java.util.ArrayList int java.util.ArrayDeque int
StackMap stack:
aload 3
iload 6
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast android.widget.RelativeLayout$DependencyGraph$Node
astore 7
start local 7 34: aload 7
getfield android.widget.RelativeLayout$DependencyGraph$Node.dependencies:Landroid/util/SparseArray;
invokevirtual android.util.SparseArray.size:()I
ifne 35
aload 5
aload 7
invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
end local 7 35: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
36: iload 6
iload 4
if_icmplt 33
end local 6 37: aload 5
areturn
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 38 0 this Landroid/widget/RelativeLayout$DependencyGraph;
0 38 1 rulesFilter [I
1 38 2 keyNodes Landroid/util/SparseArray<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
2 38 3 nodes Ljava/util/ArrayList<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
3 38 4 count I
4 10 5 i I
6 8 6 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
11 29 5 i I
13 27 6 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
14 27 7 layoutParams Landroid/widget/RelativeLayout$LayoutParams;
15 27 8 rules [I
16 27 9 rulesCount I
17 27 10 j I
19 25 11 rule I
21 25 12 dependency Landroid/widget/RelativeLayout$DependencyGraph$Node;
30 38 5 roots Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
32 37 6 i I
34 35 7 node Landroid/widget/RelativeLayout$DependencyGraph$Node;
Signature: ([I)Ljava/util/ArrayDeque<Landroid/widget/RelativeLayout$DependencyGraph$Node;>;
MethodParameters:
Name Flags
rulesFilter
}
SourceFile: "RelativeLayout.java"
NestHost: android.widget.RelativeLayout
InnerClasses:
public LayoutParams = android.view.ViewGroup$LayoutParams of android.view.ViewGroup
private DependencyGraph = android.widget.RelativeLayout$DependencyGraph of android.widget.RelativeLayout
Node = android.widget.RelativeLayout$DependencyGraph$Node of android.widget.RelativeLayout$DependencyGraph
public LayoutParams = android.widget.RelativeLayout$LayoutParams of android.widget.RelativeLayout