Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

Sui Framework

priority_queue

Move path
0x0000…0002::priority_queue
Functions
86 public, 0 entry
Structs
2
Friend modules
None
priority_queue

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
]
}