Sui Framework
priority_queue
- Move path
- 0x0000…0002::priority_queue
- Functions
- 86 public, 0 entry
- Structs
- 2
- Friend modules
- None
priority_queue
- accumulator18
- accumulator_metadata2
- accumulator_settlement8
- address10
- address_alias5
- allowance40
- authenticator_state13
- bag10
- balance18
- bcs30
- bls1238143
- borrow4
- clock3
- coin54
- coin_registry43
- config11
- deny_list21
- derived_object3
- display14
- display_registry18
- dynamic_field19
- dynamic_object_field15
- ecdsa_k13
- ecdsa_r12
- ecvrf1
- ed255191
- event3
- forwarding_address1
- funds_accumulator12
- groth1610
- group_ops23
- hash2
- hex3
- hmac1
- kiosk41
- kiosk_extension14
- linked_table19
- math7
- nitro_attestation11
- object32
- object_bag11
- object_table10
- package26
- party5
- pay8
- poseidon2
- priority_queue8
- protocol_config1
- prover0
- random20
- rangeproofs3
- ristretto25518
- scratch18
- sui2
- table10
- table_vec12
- token45
- transfer16
- transfer_policy18
- tx_context19
- types1
- url4
- vdf4
- vec_map20
- vec_set11
- versioned7
- zklogin_verified_id9
- zklogin_verified_issuer6
Bytecode436 lines
The on-chain disassembly. Offsets are instruction numbers within each function.
// Move bytecode v7
module 2.priority_queue {
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
struct PriorityQueue<Ty0: drop> has drop, store {
entries: vector<Entry<Ty0>>
}
struct Entry<Ty0: drop> has drop, store {
priority: u64,
value: Ty0
}
public new<Ty0: drop>(Arg0: vector<Entry<Ty0>>): PriorityQueue<Ty0> {
L1: loc0: u64
L2: loc1: u64
B0:
0ImmBorrowLoc[0](Arg0: vector<Entry<Ty0>>)
1VecLen(6)
2StLoc[2](loc1: u64)
3CopyLoc[2](loc1: u64)
4LdU64(2)
5Div
6StLoc[1](loc0: u64)
B1:
7CopyLoc[1](loc0: u64)
8LdU64(0)
9Gt
10BrFalse(21)
B2:
11Branch(12)
B3:
12MoveLoc[1](loc0: u64)
13LdU64(1)
14Sub
15StLoc[1](loc0: u64)
16MutBorrowLoc[0](Arg0: vector<Entry<Ty0>>)
17CopyLoc[2](loc1: u64)
18CopyLoc[1](loc0: u64)
19Call max_heapify_recursive<Ty0>(&mut vector<Entry<Ty0>>, u64, u64)
20Branch(7)
B4:
21MoveLoc[0](Arg0: vector<Entry<Ty0>>)
22PackGeneric[0](PriorityQueue<Ty0>)
23Ret
}
public pop_max<Ty0: drop>(Arg0: &mut PriorityQueue<Ty0>): u64 * Ty0 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: Ty0
B0:
0CopyLoc[0](Arg0: &mut PriorityQueue<Ty0>)
1ImmBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
2VecLen(6)
3StLoc[1](loc0: u64)
4CopyLoc[1](loc0: u64)
5LdU64(0)
6Gt
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut PriorityQueue<Ty0>)
10Pop
11LdConst[0](u64: 0)
12Abort
B3:
13CopyLoc[0](Arg0: &mut PriorityQueue<Ty0>)
14MutBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
15LdU64(0)
16Call vector::swap_remove<Entry<Ty0>>(&mut vector<Entry<Ty0>>, u64): Entry<Ty0>
17UnpackGeneric[1](Entry<Ty0>)
18StLoc[3](loc2: Ty0)
19StLoc[2](loc1: u64)
20MoveLoc[0](Arg0: &mut PriorityQueue<Ty0>)
21MutBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
22MoveLoc[1](loc0: u64)
23LdU64(1)
24Sub
25LdU64(0)
26Call max_heapify_recursive<Ty0>(&mut vector<Entry<Ty0>>, u64, u64)
27MoveLoc[2](loc1: u64)
28MoveLoc[3](loc2: Ty0)
29Ret
}
public insert<Ty0: drop>(Arg0: &mut PriorityQueue<Ty0>, Arg1: u64, Arg2: Ty0) {
L3: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut PriorityQueue<Ty0>)
1MutBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
2MoveLoc[1](Arg1: u64)
3MoveLoc[2](Arg2: Ty0)
4PackGeneric[1](Entry<Ty0>)
5VecPushBack(6)
6CopyLoc[0](Arg0: &mut PriorityQueue<Ty0>)
7ImmBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
8VecLen(6)
9LdU64(1)
10Sub
11StLoc[3](loc0: u64)
12MoveLoc[0](Arg0: &mut PriorityQueue<Ty0>)
13MutBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
14MoveLoc[3](loc0: u64)
15Call restore_heap_recursive<Ty0>(&mut vector<Entry<Ty0>>, u64)
16Ret
}
public new_entry<Ty0: drop>(Arg0: u64, Arg1: Ty0): Entry<Ty0> {
B0:
0MoveLoc[0](Arg0: u64)
1MoveLoc[1](Arg1: Ty0)
2PackGeneric[1](Entry<Ty0>)
3Ret
}
public create_entries<Ty0: drop>(Arg0: vector<u64>, Arg1: vector<Ty0>): vector<Entry<Ty0>> {
L2: loc0: u64
L3: loc1: u64
L4: loc2: u64
L5: loc3: vector<Entry<Ty0>>
L6: loc4: u64
L7: loc5: vector<u64>
L8: loc6: vector<u64>
L9: loc7: vector<Ty0>
L10: loc8: Ty0
B0:
0ImmBorrowLoc[1](Arg1: vector<Ty0>)
1VecLen(13)
2ImmBorrowLoc[0](Arg0: vector<u64>)
3VecLen(16)
4Eq
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[1](u64: 1)
8Abort
B3:
9VecPack(6, 0)
10StLoc[5](loc3: vector<Entry<Ty0>>)
11MoveLoc[0](Arg0: vector<u64>)
12StLoc[8](loc6: vector<u64>)
13MoveLoc[1](Arg1: vector<Ty0>)
14StLoc[9](loc7: vector<Ty0>)
15ImmBorrowLoc[8](loc6: vector<u64>)
16VecLen(16)
17ImmBorrowLoc[9](loc7: vector<Ty0>)
18VecLen(13)
19Eq
20BrFalse(22)
B4:
21Branch(24)
B5:
22LdU64(13906834470696124415)
23Abort
B6:
24MoveLoc[8](loc6: vector<u64>)
25StLoc[7](loc5: vector<u64>)
26ImmBorrowLoc[7](loc5: vector<u64>)
27VecLen(16)
28StLoc[2](loc0: u64)
29LdU64(0)
30StLoc[3](loc1: u64)
31MoveLoc[2](loc0: u64)
32StLoc[6](loc4: u64)
B7:
33CopyLoc[3](loc1: u64)
34CopyLoc[6](loc4: u64)
35Lt
36BrFalse(55)
B8:
37CopyLoc[3](loc1: u64)
38Pop
39MutBorrowLoc[7](loc5: vector<u64>)
40VecPopBack(16)
41StLoc[4](loc2: u64)
42MutBorrowLoc[9](loc7: vector<Ty0>)
43VecPopBack(13)
44StLoc[10](loc8: Ty0)
45MutBorrowLoc[5](loc3: vector<Entry<Ty0>>)
46MoveLoc[4](loc2: u64)
47MoveLoc[10](loc8: Ty0)
48PackGeneric[1](Entry<Ty0>)
49VecPushBack(6)
50MoveLoc[3](loc1: u64)
51LdU64(1)
52Add
53StLoc[3](loc1: u64)
54Branch(33)
B9:
55MoveLoc[7](loc5: vector<u64>)
56VecUnpack(16, 0)
57MutBorrowLoc[5](loc3: vector<Entry<Ty0>>)
58Call vector::reverse<Entry<Ty0>>(&mut vector<Entry<Ty0>>)
59MoveLoc[5](loc3: vector<Entry<Ty0>>)
60Ret
}
restore_heap_recursive<Ty0: drop>(Arg0: &mut vector<Entry<Ty0>>, Arg1: u64) {
L2: loc0: u64
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
5Pop
6Ret
B2:
7CopyLoc[1](Arg1: u64)
8LdU64(1)
9Sub
10LdU64(2)
11Div
12StLoc[2](loc0: u64)
13CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
14FreezeRef
15CopyLoc[1](Arg1: u64)
16VecImmBorrow(6)
17ImmBorrowFieldGeneric[1](Entry.priority: u64)
18ReadRef
19CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
20FreezeRef
21CopyLoc[2](loc0: u64)
22VecImmBorrow(6)
23ImmBorrowFieldGeneric[1](Entry.priority: u64)
24ReadRef
25Gt
26BrFalse(35)
B3:
27CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
28MoveLoc[1](Arg1: u64)
29CopyLoc[2](loc0: u64)
30VecSwap(6)
31MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
32MoveLoc[2](loc0: u64)
33Call restore_heap_recursive<Ty0>(&mut vector<Entry<Ty0>>, u64)
34Branch(37)
B4:
35MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
36Pop
B5:
37Ret
}
max_heapify_recursive<Ty0: drop>(Arg0: &mut vector<Entry<Ty0>>, Arg1: u64, Arg2: u64) {
L3: loc0: bool
L4: loc1: bool
L5: loc2: u64
L6: loc3: u64
L7: loc4: u64
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
5Pop
6Ret
B2:
7CopyLoc[2](Arg2: u64)
8CopyLoc[1](Arg1: u64)
9Lt
10BrFalse(12)
B3:
11Branch(16)
B4:
12MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
13Pop
14LdConst[2](u64: 2)
15Abort
B5:
16CopyLoc[2](Arg2: u64)
17LdU64(2)
18Mul
19LdU64(1)
20Add
21StLoc[5](loc2: u64)
22CopyLoc[5](loc2: u64)
23LdU64(1)
24Add
25StLoc[7](loc4: u64)
26CopyLoc[2](Arg2: u64)
27StLoc[6](loc3: u64)
28CopyLoc[5](loc2: u64)
29CopyLoc[1](Arg1: u64)
30Lt
31BrFalse(47)
B6:
32CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
33FreezeRef
34CopyLoc[5](loc2: u64)
35VecImmBorrow(6)
36ImmBorrowFieldGeneric[1](Entry.priority: u64)
37ReadRef
38CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
39FreezeRef
40CopyLoc[6](loc3: u64)
41VecImmBorrow(6)
42ImmBorrowFieldGeneric[1](Entry.priority: u64)
43ReadRef
44Gt
45StLoc[3](loc0: bool)
46Branch(49)
B7:
47LdFalse
48StLoc[3](loc0: bool)
B8:
49MoveLoc[3](loc0: bool)
50BrFalse(53)
B9:
51MoveLoc[5](loc2: u64)
52StLoc[6](loc3: u64)
B10:
53CopyLoc[7](loc4: u64)
54CopyLoc[1](Arg1: u64)
55Lt
56BrFalse(72)
B11:
57CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
58FreezeRef
59CopyLoc[7](loc4: u64)
60VecImmBorrow(6)
61ImmBorrowFieldGeneric[1](Entry.priority: u64)
62ReadRef
63CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
64FreezeRef
65CopyLoc[6](loc3: u64)
66VecImmBorrow(6)
67ImmBorrowFieldGeneric[1](Entry.priority: u64)
68ReadRef
69Gt
70StLoc[4](loc1: bool)
71Branch(74)
B12:
72LdFalse
73StLoc[4](loc1: bool)
B13:
74MoveLoc[4](loc1: bool)
75BrFalse(78)
B14:
76MoveLoc[7](loc4: u64)
77StLoc[6](loc3: u64)
B15:
78CopyLoc[6](loc3: u64)
79CopyLoc[2](Arg2: u64)
80Neq
81BrFalse(91)
B16:
82CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
83CopyLoc[6](loc3: u64)
84MoveLoc[2](Arg2: u64)
85VecSwap(6)
86MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
87MoveLoc[1](Arg1: u64)
88MoveLoc[6](loc3: u64)
89Call max_heapify_recursive<Ty0>(&mut vector<Entry<Ty0>>, u64, u64)
90Branch(93)
B17:
91MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
92Pop
B18:
93Ret
}
public priorities<Ty0: drop>(Arg0: &PriorityQueue<Ty0>): vector<u64> {
L1: loc0: u64
L2: loc1: u64
L3: loc2: &mut vector<u64>
L4: loc3: &Entry<Ty0>
L5: loc4: u64
L6: loc5: u64
L7: loc6: vector<u64>
L8: loc7: u64
L9: loc8: &vector<Entry<Ty0>>
L10: loc9: &vector<Entry<Ty0>>
B0:
0MoveLoc[0](Arg0: &PriorityQueue<Ty0>)
1ImmBorrowFieldGeneric[0](PriorityQueue.entries: vector<Entry<Ty0>>)
2StLoc[9](loc8: &vector<Entry<Ty0>>)
3LdConst[3](vector<u64>: 00)
4StLoc[7](loc6: vector<u64>)
5MoveLoc[9](loc8: &vector<Entry<Ty0>>)
6StLoc[10](loc9: &vector<Entry<Ty0>>)
7CopyLoc[10](loc9: &vector<Entry<Ty0>>)
8VecLen(6)
9StLoc[1](loc0: u64)
10LdU64(0)
11StLoc[6](loc5: u64)
12MoveLoc[1](loc0: u64)
13StLoc[8](loc7: u64)
B1:
14CopyLoc[6](loc5: u64)
15CopyLoc[8](loc7: u64)
16Lt
17BrFalse(38)
B2:
18CopyLoc[6](loc5: u64)
19StLoc[5](loc4: u64)
20CopyLoc[10](loc9: &vector<Entry<Ty0>>)
21MoveLoc[5](loc4: u64)
22VecImmBorrow(6)
23StLoc[4](loc3: &Entry<Ty0>)
24MutBorrowLoc[7](loc6: vector<u64>)
25StLoc[3](loc2: &mut vector<u64>)
26MoveLoc[4](loc3: &Entry<Ty0>)
27ImmBorrowFieldGeneric[1](Entry.priority: u64)
28ReadRef
29StLoc[2](loc1: u64)
30MoveLoc[3](loc2: &mut vector<u64>)
31MoveLoc[2](loc1: u64)
32VecPushBack(16)
33MoveLoc[6](loc5: u64)
34LdU64(1)
35Add
36StLoc[6](loc5: u64)
37Branch(14)
B3:
38MoveLoc[10](loc9: &vector<Entry<Ty0>>)
39Pop
40MoveLoc[7](loc6: vector<u64>)
41Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => vector<u64>: 00
]
}