pipe
Module0x0b6b…4d79
- Move path
- 0xce7f…4db2::pipe
- Functions
- 135 public, 0 entry
- Structs
- 4
- Friend modules
- buck
pipe
Bytecode177 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2.pipe {
use ce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::pipe_events;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct PipeType<phantom Ty0, phantom Ty1: drop> has copy, drop, store {
dummy_field: bool
}
struct Pipe<phantom Ty0, phantom Ty1: drop> has store, key {
id: UID,
output_volume: u64
}
struct OutputCarrier<phantom Ty0, phantom Ty1: drop> {
content: Balance<Ty0>
}
struct InputCarrier<phantom Ty0, phantom Ty1: drop> {
content: Balance<Ty0>
}
err_input_too_much() {
B0:
0LdConst[0](u64: 0)
1Abort
}
err_destroy_non_empty_pipe() {
B0:
0LdConst[1](u64: 1)
1Abort
}
public(friend) new_type<Ty0, Ty1: drop>(): PipeType<Ty0, Ty1> {
B0:
0LdFalse
1PackGeneric[0](PipeType<Ty0, Ty1>)
2Ret
}
public(friend) new_pipe<Ty0, Ty1: drop>(Arg0: &mut TxContext): Pipe<Ty0, Ty1> {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2LdU64(0)
3PackGeneric[1](Pipe<Ty0, Ty1>)
4Ret
}
public(friend) destroy_pipe<Ty0, Ty1: drop>(Arg0: Pipe<Ty0, Ty1>) {
L1: loc0: UID
L2: loc1: u64
B0:
0MoveLoc[0](Arg0: Pipe<Ty0, Ty1>)
1UnpackGeneric[1](Pipe<Ty0, Ty1>)
2StLoc[2](loc1: u64)
3StLoc[1](loc0: UID)
4MoveLoc[2](loc1: u64)
5LdU64(0)
6Gt
7BrFalse(9)
B1:
8Call err_destroy_non_empty_pipe()
B2:
9MoveLoc[1](loc0: UID)
10Call object::delete(UID)
11Ret
}
public(friend) destroy_buck_pipe<Ty0, Ty1: drop>(Arg0: Pipe<Ty0, Ty1>) {
B0:
0MoveLoc[0](Arg0: Pipe<Ty0, Ty1>)
1UnpackGeneric[1](Pipe<Ty0, Ty1>)
2Pop
3Call object::delete(UID)
4Ret
}
public(friend) output<Ty0, Ty1: drop>(Arg0: &mut Pipe<Ty0, Ty1>, Arg1: Balance<Ty0>): OutputCarrier<Ty0, Ty1> {
L2: loc0: u64
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2StLoc[2](loc0: u64)
3CopyLoc[2](loc0: u64)
4Call pipe_events::emit_output<Ty0, Ty1>(u64)
5CopyLoc[0](Arg0: &mut Pipe<Ty0, Ty1>)
6FreezeRef
7Call output_volume<Ty0, Ty1>(&Pipe<Ty0, Ty1>): u64
8MoveLoc[2](loc0: u64)
9Add
10MoveLoc[0](Arg0: &mut Pipe<Ty0, Ty1>)
11MutBorrowFieldGeneric[0](Pipe.output_volume: u64)
12WriteRef
13MoveLoc[1](Arg1: Balance<Ty0>)
14PackGeneric[2](OutputCarrier<Ty0, Ty1>)
15Ret
}
public destroy_output_carrier<Ty0, Ty1: drop>(Arg0: Ty1, Arg1: OutputCarrier<Ty0, Ty1>): Balance<Ty0> {
B0:
0MoveLoc[1](Arg1: OutputCarrier<Ty0, Ty1>)
1UnpackGeneric[2](OutputCarrier<Ty0, Ty1>)
2Ret
}
public input<Ty0, Ty1: drop>(Arg0: Ty1, Arg1: Balance<Ty0>): InputCarrier<Ty0, Ty1> {
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call pipe_events::emit_input<Ty0, Ty1>(&Balance<Ty0>)
2MoveLoc[1](Arg1: Balance<Ty0>)
3PackGeneric[3](InputCarrier<Ty0, Ty1>)
4Ret
}
public(friend) destroy_input_carrier<Ty0, Ty1: drop>(Arg0: &mut Pipe<Ty0, Ty1>, Arg1: InputCarrier<Ty0, Ty1>): Balance<Ty0> {
L2: loc0: u64
L3: loc1: u64
B0:
0ImmBorrowLoc[1](Arg1: InputCarrier<Ty0, Ty1>)
1Call input_carrier_volume<Ty0, Ty1>(&InputCarrier<Ty0, Ty1>): u64
2StLoc[2](loc0: u64)
3CopyLoc[0](Arg0: &mut Pipe<Ty0, Ty1>)
4FreezeRef
5Call output_volume<Ty0, Ty1>(&Pipe<Ty0, Ty1>): u64
6StLoc[3](loc1: u64)
7CopyLoc[3](loc1: u64)
8CopyLoc[2](loc0: u64)
9Lt
10BrFalse(12)
B1:
11Call err_input_too_much()
B2:
12MoveLoc[3](loc1: u64)
13MoveLoc[2](loc0: u64)
14Sub
15MoveLoc[0](Arg0: &mut Pipe<Ty0, Ty1>)
16MutBorrowFieldGeneric[0](Pipe.output_volume: u64)
17WriteRef
18MoveLoc[1](Arg1: InputCarrier<Ty0, Ty1>)
19UnpackGeneric[3](InputCarrier<Ty0, Ty1>)
20Ret
}
public output_volume<Ty0, Ty1: drop>(Arg0: &Pipe<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &Pipe<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](Pipe.output_volume: u64)
2ReadRef
3Ret
}
public output_carrier_volume<Ty0, Ty1: drop>(Arg0: &OutputCarrier<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &OutputCarrier<Ty0, Ty1>)
1ImmBorrowFieldGeneric[1](OutputCarrier.content: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3Ret
}
public input_carrier_volume<Ty0, Ty1: drop>(Arg0: &InputCarrier<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &InputCarrier<Ty0, Ty1>)
1ImmBorrowFieldGeneric[2](InputCarrier.content: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3Ret
}
Constants [
0 => u64: 0
1 => u64: 1
]
}