linked_table
Module0x253b…bb4a
- Move path
- 0x253b…bb4a::linked_table
- Functions
- 2121 public, 0 entry
- Structs
- 2
- Friend modules
- None
linked_table
Bytecode503 lines
The on-chain disassembly. Offsets are instruction numbers within each function.
// Move bytecode v6
module 253b5e16647eb38dc2de48cb9cf60d47ffe44577a39d8d6d87d0938f304abb4a.linked_table {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct LinkedTable<Ty0: copy + drop + store, phantom Ty1: store> has store, key {
id: UID,
head: Option<Ty0>,
tail: Option<Ty0>,
size: u64
}
struct Node<Ty0: copy + drop + store, Ty1: store> has store {
prev: Option<Ty0>,
next: Option<Ty0>,
value: Ty1
}
public contains<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>, Arg1: Ty0): bool {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::exists_with_type<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): bool
4Ret
}
public borrow<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>, Arg1: Ty0): &Ty1 {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): &Node<Ty0, Ty1>
4ImmBorrowFieldGeneric[1](Node.value: Ty1)
5Ret
}
public borrow_mut<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0): &mut Ty1 {
B0:
0MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1MutBorrowFieldGeneric[0](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
4MutBorrowFieldGeneric[1](Node.value: Ty1)
5Ret
}
public destroy_empty<Ty0: copy + drop + store, Ty1: drop + store>(Arg0: LinkedTable<Ty0, Ty1>) {
L1: loc0: UID
L2: loc1: u64
B0:
0MoveLoc[0](Arg0: LinkedTable<Ty0, Ty1>)
1UnpackGeneric[0](LinkedTable<Ty0, Ty1>)
2StLoc[2](loc1: u64)
3Pop
4Pop
5StLoc[1](loc0: UID)
6MoveLoc[2](loc1: u64)
7LdU64(0)
8Eq
9BrFalse(11)
B1:
10Branch(13)
B2:
11LdU64(0)
12Abort
B3:
13MoveLoc[1](loc0: UID)
14Call object::delete(UID)
15Ret
}
public length<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
2ReadRef
3Ret
}
public push_back<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0, Arg2: Ty1) {
L3: loc0: Node<Ty0, Ty1>
B0:
0CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
2ReadRef
3Call option::none<Ty0>(): Option<Ty0>
4MoveLoc[2](Arg2: Ty1)
5PackGeneric[1](Node<Ty0, Ty1>)
6StLoc[3](loc0: Node<Ty0, Ty1>)
7CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
8MutBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
9CopyLoc[1](Arg1: Ty0)
10Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
11Pop
12CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
13ImmBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
14Call option::is_none<Ty0>(&Option<Ty0>): bool
15BrFalse(21)
B1:
16CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
17MutBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
18CopyLoc[1](Arg1: Ty0)
19Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
20Pop
B2:
21ImmBorrowLoc[3](loc0: Node<Ty0, Ty1>)
22ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
23Call option::is_some<Ty0>(&Option<Ty0>): bool
24BrFalse(35)
B3:
25CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
26ImmBorrowLoc[3](loc0: Node<Ty0, Ty1>)
27ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
28Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
29ReadRef
30Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
31MutBorrowFieldGeneric[6](Node.next: Option<Ty0>)
32CopyLoc[1](Arg1: Ty0)
33Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
34Pop
B4:
35CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
36MutBorrowFieldGeneric[0](LinkedTable.id: UID)
37MoveLoc[1](Arg1: Ty0)
38MoveLoc[3](loc0: Node<Ty0, Ty1>)
39Call dynamic_field::add<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0, Node<Ty0, Ty1>)
40CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
41ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
42ReadRef
43LdU64(1)
44Add
45MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
46MutBorrowFieldGeneric[2](LinkedTable.size: u64)
47WriteRef
48Ret
}
public remove<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0): Ty1 {
L2: loc0: Option<Ty0>
L3: loc1: Option<Ty0>
L4: loc2: Ty1
L5: loc3: Option<Ty0>
L6: loc4: Option<Ty0>
B0:
0CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1MutBorrowFieldGeneric[0](LinkedTable.id: UID)
2CopyLoc[1](Arg1: Ty0)
3Call dynamic_field::remove<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): Node<Ty0, Ty1>
4UnpackGeneric[1](Node<Ty0, Ty1>)
5StLoc[4](loc2: Ty1)
6StLoc[3](loc1: Option<Ty0>)
7StLoc[2](loc0: Option<Ty0>)
8MoveLoc[3](loc1: Option<Ty0>)
9StLoc[5](loc3: Option<Ty0>)
10MoveLoc[2](loc0: Option<Ty0>)
11StLoc[6](loc4: Option<Ty0>)
12CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
13ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
14ReadRef
15LdU64(1)
16Sub
17CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
18MutBorrowFieldGeneric[2](LinkedTable.size: u64)
19WriteRef
20ImmBorrowLoc[6](loc4: Option<Ty0>)
21Call option::is_some<Ty0>(&Option<Ty0>): bool
22BrFalse(32)
B1:
23CopyLoc[5](loc3: Option<Ty0>)
24CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
25MutBorrowFieldGeneric[0](LinkedTable.id: UID)
26ImmBorrowLoc[6](loc4: Option<Ty0>)
27Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
28ReadRef
29Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
30MutBorrowFieldGeneric[6](Node.next: Option<Ty0>)
31WriteRef
B2:
32ImmBorrowLoc[5](loc3: Option<Ty0>)
33Call option::is_some<Ty0>(&Option<Ty0>): bool
34BrFalse(44)
B3:
35CopyLoc[6](loc4: Option<Ty0>)
36CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
37MutBorrowFieldGeneric[0](LinkedTable.id: UID)
38ImmBorrowLoc[5](loc3: Option<Ty0>)
39Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
40ReadRef
41Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
42MutBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
43WriteRef
B4:
44CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
45ImmBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
46Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
47ImmBorrowLoc[1](Arg1: Ty0)
48Eq
49BrFalse(54)
B5:
50MoveLoc[5](loc3: Option<Ty0>)
51CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
52MutBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
53WriteRef
B6:
54CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
55ImmBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
56Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
57ImmBorrowLoc[1](Arg1: Ty0)
58Eq
59BrFalse(65)
B7:
60MoveLoc[6](loc4: Option<Ty0>)
61MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
62MutBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
63WriteRef
64Branch(67)
B8:
65MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
66Pop
B9:
67MoveLoc[4](loc2: Ty1)
68Ret
}
public new<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut TxContext): LinkedTable<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Call option::none<Ty0>(): Option<Ty0>
3Call option::none<Ty0>(): Option<Ty0>
4LdU64(0)
5PackGeneric[0](LinkedTable<Ty0, Ty1>)
6Ret
}
public borrow_mut_node<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0): &mut Node<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1MutBorrowFieldGeneric[0](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
4Ret
}
public borrow_mut_value<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut Node<Ty0, Ty1>): &mut Ty1 {
B0:
0MoveLoc[0](Arg0: &mut Node<Ty0, Ty1>)
1MutBorrowFieldGeneric[1](Node.value: Ty1)
2Ret
}
public borrow_node<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>, Arg1: Ty0): &Node<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): &Node<Ty0, Ty1>
4Ret
}
public borrow_value<Ty0: copy + drop + store, Ty1: store>(Arg0: &Node<Ty0, Ty1>): &Ty1 {
B0:
0MoveLoc[0](Arg0: &Node<Ty0, Ty1>)
1ImmBorrowFieldGeneric[1](Node.value: Ty1)
2Ret
}
public drop<Ty0: copy + drop + store, Ty1: store>(Arg0: LinkedTable<Ty0, Ty1>) {
B0:
0MoveLoc[0](Arg0: LinkedTable<Ty0, Ty1>)
1UnpackGeneric[0](LinkedTable<Ty0, Ty1>)
2Pop
3Pop
4Pop
5Call object::delete(UID)
6Ret
}
public head<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
2ReadRef
3Ret
}
public insert_after<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0, Arg2: Ty0, Arg3: Ty1) {
L4: loc0: &mut Node<Ty0, Ty1>
L5: loc1: Node<Ty0, Ty1>
B0:
0CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1CopyLoc[1](Arg1: Ty0)
2Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
3StLoc[4](loc0: &mut Node<Ty0, Ty1>)
4MoveLoc[1](Arg1: Ty0)
5Call option::some<Ty0>(Ty0): Option<Ty0>
6CopyLoc[4](loc0: &mut Node<Ty0, Ty1>)
7ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
8ReadRef
9MoveLoc[3](Arg3: Ty1)
10PackGeneric[1](Node<Ty0, Ty1>)
11StLoc[5](loc1: Node<Ty0, Ty1>)
12MoveLoc[4](loc0: &mut Node<Ty0, Ty1>)
13MutBorrowFieldGeneric[6](Node.next: Option<Ty0>)
14CopyLoc[2](Arg2: Ty0)
15Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
16Pop
17ImmBorrowLoc[5](loc1: Node<Ty0, Ty1>)
18ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
19Call option::is_some<Ty0>(&Option<Ty0>): bool
20BrFalse(32)
B1:
21CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
22ImmBorrowLoc[5](loc1: Node<Ty0, Ty1>)
23ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
24Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
25ReadRef
26Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
27MutBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
28CopyLoc[2](Arg2: Ty0)
29Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
30Pop
31Branch(37)
B2:
32CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
33MutBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
34CopyLoc[2](Arg2: Ty0)
35Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
36Pop
B3:
37CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
38MutBorrowFieldGeneric[0](LinkedTable.id: UID)
39MoveLoc[2](Arg2: Ty0)
40MoveLoc[5](loc1: Node<Ty0, Ty1>)
41Call dynamic_field::add<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0, Node<Ty0, Ty1>)
42CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
43ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
44ReadRef
45LdU64(1)
46Add
47MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
48MutBorrowFieldGeneric[2](LinkedTable.size: u64)
49WriteRef
50Ret
}
public insert_before<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0, Arg2: Ty0, Arg3: Ty1) {
L4: loc0: &mut Node<Ty0, Ty1>
L5: loc1: Node<Ty0, Ty1>
B0:
0CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1CopyLoc[1](Arg1: Ty0)
2Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
3StLoc[4](loc0: &mut Node<Ty0, Ty1>)
4CopyLoc[4](loc0: &mut Node<Ty0, Ty1>)
5ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
6ReadRef
7MoveLoc[1](Arg1: Ty0)
8Call option::some<Ty0>(Ty0): Option<Ty0>
9MoveLoc[3](Arg3: Ty1)
10PackGeneric[1](Node<Ty0, Ty1>)
11StLoc[5](loc1: Node<Ty0, Ty1>)
12MoveLoc[4](loc0: &mut Node<Ty0, Ty1>)
13MutBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
14CopyLoc[2](Arg2: Ty0)
15Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
16Pop
17ImmBorrowLoc[5](loc1: Node<Ty0, Ty1>)
18ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
19Call option::is_some<Ty0>(&Option<Ty0>): bool
20BrFalse(32)
B1:
21CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
22ImmBorrowLoc[5](loc1: Node<Ty0, Ty1>)
23ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
24Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
25ReadRef
26Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
27MutBorrowFieldGeneric[6](Node.next: Option<Ty0>)
28CopyLoc[2](Arg2: Ty0)
29Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
30Pop
31Branch(37)
B2:
32CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
33MutBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
34CopyLoc[2](Arg2: Ty0)
35Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
36Pop
B3:
37CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
38MutBorrowFieldGeneric[0](LinkedTable.id: UID)
39MoveLoc[2](Arg2: Ty0)
40MoveLoc[5](loc1: Node<Ty0, Ty1>)
41Call dynamic_field::add<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0, Node<Ty0, Ty1>)
42CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
43ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
44ReadRef
45LdU64(1)
46Add
47MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
48MutBorrowFieldGeneric[2](LinkedTable.size: u64)
49WriteRef
50Ret
}
public is_empty<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): bool {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
2ReadRef
3LdU64(0)
4Eq
5Ret
}
public next<Ty0: copy + drop + store, Ty1: store>(Arg0: &Node<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &Node<Ty0, Ty1>)
1ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
2ReadRef
3Ret
}
public prev<Ty0: copy + drop + store, Ty1: store>(Arg0: &Node<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &Node<Ty0, Ty1>)
1ImmBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
2ReadRef
3Ret
}
public push_front<Ty0: copy + drop + store, Ty1: store>(Arg0: &mut LinkedTable<Ty0, Ty1>, Arg1: Ty0, Arg2: Ty1) {
L3: loc0: Node<Ty0, Ty1>
B0:
0Call option::none<Ty0>(): Option<Ty0>
1CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
2ImmBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
3ReadRef
4MoveLoc[2](Arg2: Ty1)
5PackGeneric[1](Node<Ty0, Ty1>)
6StLoc[3](loc0: Node<Ty0, Ty1>)
7CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
8MutBorrowFieldGeneric[4](LinkedTable.head: Option<Ty0>)
9CopyLoc[1](Arg1: Ty0)
10Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
11Pop
12CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
13ImmBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
14Call option::is_none<Ty0>(&Option<Ty0>): bool
15BrFalse(21)
B1:
16CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
17MutBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
18CopyLoc[1](Arg1: Ty0)
19Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
20Pop
B2:
21ImmBorrowLoc[3](loc0: Node<Ty0, Ty1>)
22ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
23Call option::is_some<Ty0>(&Option<Ty0>): bool
24BrFalse(35)
B3:
25CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
26ImmBorrowLoc[3](loc0: Node<Ty0, Ty1>)
27ImmBorrowFieldGeneric[6](Node.next: Option<Ty0>)
28Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
29ReadRef
30Call borrow_mut_node<Ty0, Ty1>(&mut LinkedTable<Ty0, Ty1>, Ty0): &mut Node<Ty0, Ty1>
31MutBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
32CopyLoc[1](Arg1: Ty0)
33Call option::swap_or_fill<Ty0>(&mut Option<Ty0>, Ty0): Option<Ty0>
34Pop
B4:
35CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
36MutBorrowFieldGeneric[0](LinkedTable.id: UID)
37MoveLoc[1](Arg1: Ty0)
38MoveLoc[3](loc0: Node<Ty0, Ty1>)
39Call dynamic_field::add<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0, Node<Ty0, Ty1>)
40CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
41ImmBorrowFieldGeneric[2](LinkedTable.size: u64)
42ReadRef
43LdU64(1)
44Add
45MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
46MutBorrowFieldGeneric[2](LinkedTable.size: u64)
47WriteRef
48Ret
}
public tail<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
2ReadRef
3Ret
}
}