linked_table
Module0x2d8a…f211
- Move path
- 0x2d8a…f211::linked_table
- Functions
- 2121 public, 0 entry
- Structs
- 2
- Friend modules
- None
Bytecode500 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 2d8a7d4c585f1c20758f9b2c500477e1be35e178e79efb6ddf9d14a0dceff211.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 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 is_empty<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): bool {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LinkedTable.size: u64)
2ReadRef
3LdU64(0)
4Eq
5Ret
}
public length<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](LinkedTable.size: u64)
2ReadRef
3Ret
}
public contains<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>, Arg1: Ty0): bool {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[1](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::exists_with_type<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): bool
4Ret
}
public head<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[2](LinkedTable.head: Option<Ty0>)
2ReadRef
3Ret
}
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
}
public next<Ty0: copy + drop + store, Ty1: store>(Arg0: &Node<Ty0, Ty1>): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: &Node<Ty0, Ty1>)
1ImmBorrowFieldGeneric[4](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 borrow<Ty0: copy + drop + store, Ty1: store>(Arg0: &LinkedTable<Ty0, Ty1>, Arg1: Ty0): &Ty1 {
B0:
0MoveLoc[0](Arg0: &LinkedTable<Ty0, Ty1>)
1ImmBorrowFieldGeneric[1](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): &Node<Ty0, Ty1>
4ImmBorrowFieldGeneric[6](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[1](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
4MutBorrowFieldGeneric[6](Node.value: Ty1)
5Ret
}
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[1](LinkedTable.id: UID)
2MoveLoc[1](Arg1: Ty0)
3Call dynamic_field::borrow<Ty0, Node<Ty0, Ty1>>(&UID, Ty0): &Node<Ty0, Ty1>
4Ret
}
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[1](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_value<Ty0: copy + drop + store, Ty1: store>(Arg0: &Node<Ty0, Ty1>): &Ty1 {
B0:
0MoveLoc[0](Arg0: &Node<Ty0, Ty1>)
1ImmBorrowFieldGeneric[6](Node.value: Ty1)
2Ret
}
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[6](Node.value: Ty1)
2Ret
}
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[2](LinkedTable.head: Option<Ty0>)
14Call option::is_none<Ty0>(&Option<Ty0>): bool
15BrFalse(21)
B1:
16CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
17MutBorrowFieldGeneric[2](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[4](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[1](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[0](LinkedTable.size: u64)
42ReadRef
43LdU64(1)
44Add
45MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
46MutBorrowFieldGeneric[0](LinkedTable.size: u64)
47WriteRef
48Ret
}
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[2](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[2](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[4](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[4](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[1](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[0](LinkedTable.size: u64)
42ReadRef
43LdU64(1)
44Add
45MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
46MutBorrowFieldGeneric[0](LinkedTable.size: u64)
47WriteRef
48Ret
}
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[4](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[2](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[1](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[0](LinkedTable.size: u64)
44ReadRef
45LdU64(1)
46Add
47MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
48MutBorrowFieldGeneric[0](LinkedTable.size: u64)
49WriteRef
50Ret
}
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[4](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[4](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[4](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[4](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[1](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[0](LinkedTable.size: u64)
44ReadRef
45LdU64(1)
46Add
47MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
48MutBorrowFieldGeneric[0](LinkedTable.size: u64)
49WriteRef
50Ret
}
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
B0:
0CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
1MutBorrowFieldGeneric[1](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[2](loc0: Option<Ty0>)
7StLoc[3](loc1: Option<Ty0>)
8CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
9ImmBorrowFieldGeneric[0](LinkedTable.size: u64)
10ReadRef
11LdU64(1)
12Sub
13CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
14MutBorrowFieldGeneric[0](LinkedTable.size: u64)
15WriteRef
16ImmBorrowLoc[3](loc1: Option<Ty0>)
17Call option::is_some<Ty0>(&Option<Ty0>): bool
18BrFalse(28)
B1:
19CopyLoc[2](loc0: Option<Ty0>)
20CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
21MutBorrowFieldGeneric[1](LinkedTable.id: UID)
22ImmBorrowLoc[3](loc1: Option<Ty0>)
23Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
24ReadRef
25Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
26MutBorrowFieldGeneric[4](Node.next: Option<Ty0>)
27WriteRef
B2:
28ImmBorrowLoc[2](loc0: Option<Ty0>)
29Call option::is_some<Ty0>(&Option<Ty0>): bool
30BrFalse(40)
B3:
31CopyLoc[3](loc1: Option<Ty0>)
32CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
33MutBorrowFieldGeneric[1](LinkedTable.id: UID)
34ImmBorrowLoc[2](loc0: Option<Ty0>)
35Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
36ReadRef
37Call dynamic_field::borrow_mut<Ty0, Node<Ty0, Ty1>>(&mut UID, Ty0): &mut Node<Ty0, Ty1>
38MutBorrowFieldGeneric[5](Node.prev: Option<Ty0>)
39WriteRef
B4:
40CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
41ImmBorrowFieldGeneric[2](LinkedTable.head: Option<Ty0>)
42Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
43ImmBorrowLoc[1](Arg1: Ty0)
44Eq
45BrFalse(50)
B5:
46MoveLoc[2](loc0: Option<Ty0>)
47CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
48MutBorrowFieldGeneric[2](LinkedTable.head: Option<Ty0>)
49WriteRef
B6:
50CopyLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
51ImmBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
52Call option::borrow<Ty0>(&Option<Ty0>): &Ty0
53ImmBorrowLoc[1](Arg1: Ty0)
54Eq
55BrFalse(61)
B7:
56MoveLoc[3](loc1: Option<Ty0>)
57MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
58MutBorrowFieldGeneric[3](LinkedTable.tail: Option<Ty0>)
59WriteRef
60Branch(63)
B8:
61MoveLoc[0](Arg0: &mut LinkedTable<Ty0, Ty1>)
62Pop
B9:
63MoveLoc[4](loc2: Ty1)
64Ret
}
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:
11LdConst[0](u64: 0)
12Abort
B3:
13MoveLoc[1](loc0: UID)
14Call object::delete(UID)
15Ret
}
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
}
Constants [
0 => u64: 0
]
}