class java.util.concurrent.ConcurrentLinkedQueue$Itr implements java.util.Iterator<E>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.util.concurrent.ConcurrentLinkedQueue$Itr
super_class: java.lang.Object
{
private java.util.concurrent.ConcurrentLinkedQueue$Node<E> nextNode;
descriptor: Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
private E nextItem;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Signature: TE;
private java.util.concurrent.ConcurrentLinkedQueue$Node<E> lastRet;
descriptor: Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
final java.util.concurrent.ConcurrentLinkedQueue this$0;
descriptor: Ljava/util/concurrent/ConcurrentLinkedQueue;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(java.util.concurrent.ConcurrentLinkedQueue);
descriptor: (Ljava/util/concurrent/ConcurrentLinkedQueue;)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=2
start local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
0: .line 751
aload 0 /* this */
aload 1
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.this$0:Ljava/util/concurrent/ConcurrentLinkedQueue;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 754
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Itr java.util.concurrent.ConcurrentLinkedQueue
StackMap stack:
aload 1
getfield java.util.concurrent.ConcurrentLinkedQueue.head:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
dup
astore 2 /* h */
start local 2 // java.util.concurrent.ConcurrentLinkedQueue$Node h
2: astore 3 /* p */
start local 3 // java.util.concurrent.ConcurrentLinkedQueue$Node p
3: .line 756
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentLinkedQueue$Node
StackMap stack:
aload 3 /* p */
getfield java.util.concurrent.ConcurrentLinkedQueue$Node.item:Ljava/lang/Object;
dup
astore 5 /* item */
start local 5 // java.lang.Object item
4: ifnull 8
5: .line 757
aload 0 /* this */
aload 3 /* p */
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
6: .line 758
aload 0 /* this */
aload 5 /* item */
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextItem:Ljava/lang/Object;
7: .line 759
goto 15
8: .line 761
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Itr java.util.concurrent.ConcurrentLinkedQueue java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentLinkedQueue$Node top java.lang.Object
StackMap stack:
aload 3 /* p */
getfield java.util.concurrent.ConcurrentLinkedQueue$Node.next:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
dup
astore 4 /* q */
start local 4 // java.util.concurrent.ConcurrentLinkedQueue$Node q
9: ifnonnull 11
10: .line 762
goto 15
11: .line 763
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Itr java.util.concurrent.ConcurrentLinkedQueue java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentLinkedQueue$Node java.lang.Object
StackMap stack:
aload 3 /* p */
aload 4 /* q */
if_acmpne 13
12: .line 764
goto 1
end local 5 // java.lang.Object item
13: .line 754
StackMap locals:
StackMap stack:
aload 4 /* q */
astore 3 /* p */
end local 4 // java.util.concurrent.ConcurrentLinkedQueue$Node q
14: goto 3
15: .line 766
StackMap locals:
StackMap stack:
aload 1
aload 2 /* h */
aload 3 /* p */
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.updateHead:(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
16: .line 767
return
end local 3 // java.util.concurrent.ConcurrentLinkedQueue$Node p
end local 2 // java.util.concurrent.ConcurrentLinkedQueue$Node h
end local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;
2 17 2 h Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
3 17 3 p Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
9 14 4 q Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
4 13 5 item TE;
MethodParameters:
Name Flags
this$0 final
public boolean hasNext();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
0: .line 772
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextItem:Ljava/lang/Object;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;
public E next();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
0: .line 776
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
astore 1 /* pred */
start local 1 // java.util.concurrent.ConcurrentLinkedQueue$Node pred
1: .line 777
aload 1 /* pred */
ifnonnull 2
new java.util.NoSuchElementException
dup
invokespecial java.util.NoSuchElementException.<init>:()V
athrow
2: .line 779
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Node
StackMap stack:
aload 0 /* this */
aload 1 /* pred */
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
3: .line 780
aconst_null
astore 2 /* item */
start local 2 // java.lang.Object item
4: .line 782
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.this$0:Ljava/util/concurrent/ConcurrentLinkedQueue;
aload 1 /* pred */
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.succ:(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
astore 3 /* p */
start local 3 // java.util.concurrent.ConcurrentLinkedQueue$Node p
5: .line 783
StackMap locals: java.lang.Object java.util.concurrent.ConcurrentLinkedQueue$Node
StackMap stack:
aload 3 /* p */
ifnull 6
aload 3 /* p */
getfield java.util.concurrent.ConcurrentLinkedQueue$Node.item:Ljava/lang/Object;
dup
astore 2 /* item */
ifnull 10
6: .line 784
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 3 /* p */
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
7: .line 785
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextItem:Ljava/lang/Object;
astore 5 /* x */
start local 5 // java.lang.Object x
8: .line 786
aload 0 /* this */
aload 2 /* item */
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.nextItem:Ljava/lang/Object;
9: .line 787
aload 5 /* x */
areturn
end local 5 // java.lang.Object x
10: .line 790
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.this$0:Ljava/util/concurrent/ConcurrentLinkedQueue;
aload 3 /* p */
invokevirtual java.util.concurrent.ConcurrentLinkedQueue.succ:(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
dup
astore 4 /* q */
start local 4 // java.util.concurrent.ConcurrentLinkedQueue$Node q
11: ifnull 13
12: .line 791
getstatic java.util.concurrent.ConcurrentLinkedQueue.NEXT:Ljava/lang/invoke/VarHandle;
aload 1 /* pred */
aload 3 /* p */
aload 4 /* q */
invokevirtual java.lang.invoke.VarHandle.compareAndSet:(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
13: .line 782
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Node
StackMap stack:
aload 4 /* q */
astore 3 /* p */
end local 4 // java.util.concurrent.ConcurrentLinkedQueue$Node q
14: goto 5
end local 3 // java.util.concurrent.ConcurrentLinkedQueue$Node p
end local 2 // java.lang.Object item
end local 1 // java.util.concurrent.ConcurrentLinkedQueue$Node pred
end local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;
1 15 1 pred Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
4 15 2 item TE;
5 15 3 p Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
11 14 4 q Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
8 10 5 x TE;
Signature: ()TE;
public void remove();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
0: .line 798
aload 0 /* this */
getfield java.util.concurrent.ConcurrentLinkedQueue$Itr.lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
astore 1 /* l */
start local 1 // java.util.concurrent.ConcurrentLinkedQueue$Node l
1: .line 799
aload 1 /* l */
ifnonnull 2
new java.lang.IllegalStateException
dup
invokespecial java.lang.IllegalStateException.<init>:()V
athrow
2: .line 801
StackMap locals: java.util.concurrent.ConcurrentLinkedQueue$Node
StackMap stack:
aload 1 /* l */
aconst_null
putfield java.util.concurrent.ConcurrentLinkedQueue$Node.item:Ljava/lang/Object;
3: .line 802
aload 0 /* this */
aconst_null
putfield java.util.concurrent.ConcurrentLinkedQueue$Itr.lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
4: .line 803
return
end local 1 // java.util.concurrent.ConcurrentLinkedQueue$Node l
end local 0 // java.util.concurrent.ConcurrentLinkedQueue$Itr this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;
1 5 1 l Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;
}
Signature: Ljava/lang/Object;Ljava/util/Iterator<TE;>;
SourceFile: "ConcurrentLinkedQueue.java"
NestHost: java.util.concurrent.ConcurrentLinkedQueue
InnerClasses:
private Itr = java.util.concurrent.ConcurrentLinkedQueue$Itr of java.util.concurrent.ConcurrentLinkedQueue
final Node = java.util.concurrent.ConcurrentLinkedQueue$Node of java.util.concurrent.ConcurrentLinkedQueue