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

API

apportionment_queue

Module0xa9ac…bf1e
Move path
0xfdc8…ea77::apportionment_queue
Functions
63 public, 0 entry
Structs
2
Friend modules
None
apportionment_queue

Bytecode291 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v7
module fdc88f7d7cf30afab2f82e8380d11ee8f70efb90e863d1de8616fae1bb09ea77.apportionment_queue {
use 0000000000000000000000000000000000000000000000000000000000000001::uq64_64;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
 
struct ApportionmentQueue<Ty0> has drop {
entries: vector<Entry<Ty0>>
}
 
struct Entry<Ty0> has drop {
priority: UQ64_64,
tie_breaker: u64,
value: Ty0
}
 
public new<Ty0>(): ApportionmentQueue<Ty0> {
B0:
0VecPack(8, 0)
1PackGeneric[0](ApportionmentQueue<Ty0>)
2Ret
}
 
public pop_max<Ty0>(Arg0: &mut ApportionmentQueue<Ty0>): UQ64_64 * u64 * Ty0 {
L1: loc0: UQ64_64
L2: loc1: u64
L3: loc2: Ty0
B0:
0CopyLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
1ImmBorrowFieldGeneric[0](ApportionmentQueue.entries: vector<Entry<Ty0>>)
2VecLen(8)
3LdU64(0)
4Gt
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
8Pop
9LdConst[0](u64: 0)
10Abort
B3:
11CopyLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
12MutBorrowFieldGeneric[0](ApportionmentQueue.entries: vector<Entry<Ty0>>)
13LdU64(0)
14Call vector::swap_remove<Entry<Ty0>>(&mut vector<Entry<Ty0>>, u64): Entry<Ty0>
15UnpackGeneric[1](Entry<Ty0>)
16StLoc[3](loc2: Ty0)
17StLoc[2](loc1: u64)
18StLoc[1](loc0: UQ64_64)
19MoveLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
20MutBorrowFieldGeneric[0](ApportionmentQueue.entries: vector<Entry<Ty0>>)
21Call bubble_down<Ty0>(&mut vector<Entry<Ty0>>)
22MoveLoc[1](loc0: UQ64_64)
23MoveLoc[2](loc1: u64)
24MoveLoc[3](loc2: Ty0)
25Ret
}
 
public insert<Ty0>(Arg0: &mut ApportionmentQueue<Ty0>, Arg1: UQ64_64, Arg2: u64, Arg3: Ty0) {
B0:
0CopyLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
1MutBorrowFieldGeneric[0](ApportionmentQueue.entries: vector<Entry<Ty0>>)
2MoveLoc[1](Arg1: UQ64_64)
3MoveLoc[2](Arg2: u64)
4MoveLoc[3](Arg3: Ty0)
5PackGeneric[1](Entry<Ty0>)
6VecPushBack(8)
7MoveLoc[0](Arg0: &mut ApportionmentQueue<Ty0>)
8MutBorrowFieldGeneric[0](ApportionmentQueue.entries: vector<Entry<Ty0>>)
9Call bubble_up<Ty0>(&mut vector<Entry<Ty0>>)
10Ret
}
 
bubble_down<Ty0>(Arg0: &mut vector<Entry<Ty0>>) {
L1: loc0: bool
L2: loc1: bool
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
1FreezeRef
2VecLen(8)
3StLoc[5](loc4: u64)
4LdU64(0)
5StLoc[3](loc2: u64)
B1:
6CopyLoc[3](loc2: u64)
7CopyLoc[5](loc4: u64)
8Lt
9BrFalse(79)
B2:
10Branch(11)
B3:
11CopyLoc[3](loc2: u64)
12LdU64(2)
13Mul
14LdU64(1)
15Add
16StLoc[4](loc3: u64)
17CopyLoc[4](loc3: u64)
18LdU64(1)
19Add
20StLoc[7](loc6: u64)
21CopyLoc[3](loc2: u64)
22StLoc[6](loc5: u64)
23CopyLoc[4](loc3: u64)
24CopyLoc[5](loc4: u64)
25Lt
26BrFalse(38)
B4:
27CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
28FreezeRef
29CopyLoc[4](loc3: u64)
30VecImmBorrow(8)
31CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
32FreezeRef
33CopyLoc[6](loc5: u64)
34VecImmBorrow(8)
35Call higher_priority_than<Ty0>(&Entry<Ty0>, &Entry<Ty0>): bool
36StLoc[1](loc0: bool)
37Branch(40)
B5:
38LdFalse
39StLoc[1](loc0: bool)
B6:
40MoveLoc[1](loc0: bool)
41BrFalse(44)
B7:
42MoveLoc[4](loc3: u64)
43StLoc[6](loc5: u64)
B8:
44CopyLoc[7](loc6: u64)
45CopyLoc[5](loc4: u64)
46Lt
47BrFalse(59)
B9:
48CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
49FreezeRef
50CopyLoc[7](loc6: u64)
51VecImmBorrow(8)
52CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
53FreezeRef
54CopyLoc[6](loc5: u64)
55VecImmBorrow(8)
56Call higher_priority_than<Ty0>(&Entry<Ty0>, &Entry<Ty0>): bool
57StLoc[2](loc1: bool)
58Branch(61)
B10:
59LdFalse
60StLoc[2](loc1: bool)
B11:
61MoveLoc[2](loc1: bool)
62BrFalse(65)
B12:
63MoveLoc[7](loc6: u64)
64StLoc[6](loc5: u64)
B13:
65CopyLoc[6](loc5: u64)
66CopyLoc[3](loc2: u64)
67Eq
68BrFalse(72)
B14:
69MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
70Pop
71Branch(79)
B15:
72CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
73CopyLoc[6](loc5: u64)
74MoveLoc[3](loc2: u64)
75VecSwap(8)
76MoveLoc[6](loc5: u64)
77StLoc[3](loc2: u64)
78Branch(6)
B16:
79Ret
}
 
bubble_up<Ty0>(Arg0: &mut vector<Entry<Ty0>>) {
L1: loc0: u64
L2: loc1: u64
B0:
0CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
1FreezeRef
2VecLen(8)
3LdU64(1)
4Sub
5StLoc[1](loc0: u64)
B1:
6CopyLoc[1](loc0: u64)
7LdU64(0)
8Gt
9BrFalse(38)
B2:
10Branch(11)
B3:
11CopyLoc[1](loc0: u64)
12LdU64(1)
13Sub
14LdU64(2)
15Div
16StLoc[2](loc1: u64)
17CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
18FreezeRef
19CopyLoc[1](loc0: u64)
20VecImmBorrow(8)
21CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
22FreezeRef
23CopyLoc[2](loc1: u64)
24VecImmBorrow(8)
25Call higher_priority_than<Ty0>(&Entry<Ty0>, &Entry<Ty0>): bool
26BrFalse(28)
B4:
27Branch(31)
B5:
28MoveLoc[0](Arg0: &mut vector<Entry<Ty0>>)
29Pop
30Branch(38)
B6:
31CopyLoc[0](Arg0: &mut vector<Entry<Ty0>>)
32MoveLoc[1](loc0: u64)
33CopyLoc[2](loc1: u64)
34VecSwap(8)
35MoveLoc[2](loc1: u64)
36StLoc[1](loc0: u64)
37Branch(6)
B7:
38Ret
}
 
higher_priority_than<Ty0>(Arg0: &Entry<Ty0>, Arg1: &Entry<Ty0>): bool {
L2: loc0: bool
L3: loc1: bool
B0:
0CopyLoc[0](Arg0: &Entry<Ty0>)
1ImmBorrowFieldGeneric[1](Entry.priority: UQ64_64)
2ReadRef
3CopyLoc[1](Arg1: &Entry<Ty0>)
4ImmBorrowFieldGeneric[1](Entry.priority: UQ64_64)
5ReadRef
6Call uq64_64::gt(UQ64_64, UQ64_64): bool
7BrFalse(15)
B1:
8MoveLoc[1](Arg1: &Entry<Ty0>)
9Pop
10MoveLoc[0](Arg0: &Entry<Ty0>)
11Pop
12LdTrue
13StLoc[2](loc0: bool)
14Branch(40)
B2:
15CopyLoc[0](Arg0: &Entry<Ty0>)
16ImmBorrowFieldGeneric[1](Entry.priority: UQ64_64)
17ReadRef
18CopyLoc[1](Arg1: &Entry<Ty0>)
19ImmBorrowFieldGeneric[1](Entry.priority: UQ64_64)
20ReadRef
21Eq
22BrFalse(32)
B3:
23MoveLoc[0](Arg0: &Entry<Ty0>)
24ImmBorrowFieldGeneric[2](Entry.tie_breaker: u64)
25ReadRef
26MoveLoc[1](Arg1: &Entry<Ty0>)
27ImmBorrowFieldGeneric[2](Entry.tie_breaker: u64)
28ReadRef
29Gt
30StLoc[3](loc1: bool)
31Branch(38)
B4:
32MoveLoc[1](Arg1: &Entry<Ty0>)
33Pop
34MoveLoc[0](Arg0: &Entry<Ty0>)
35Pop
36LdFalse
37StLoc[3](loc1: bool)
B5:
38MoveLoc[3](loc1: bool)
39StLoc[2](loc0: bool)
B6:
40MoveLoc[2](loc0: bool)
41Ret
}
 
Constants [
0 => u64: 0
]
}