option
Module0x0000…0001
- Move path
- 0x0000…0001::option
- Functions
- 1717 public, 0 entry
- Structs
- 1
- Friend modules
- None
option
Bytecode327 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 1.option {
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
struct Option<Ty0> has copy, drop, store {
vec: vector<Ty0>
}
public none<Ty0>(): Option<Ty0> {
B0:
0VecPack(2, 0)
1PackGeneric[0](Option<Ty0>)
2Ret
}
public some<Ty0>(Arg0: Ty0): Option<Ty0> {
B0:
0MoveLoc[0](Arg0: Ty0)
1VecPack(2, 1)
2PackGeneric[0](Option<Ty0>)
3Ret
}
public is_none<Ty0>(Arg0: &Option<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Option<Ty0>)
1ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2Call vector::is_empty<Ty0>(&vector<Ty0>): bool
3Ret
}
public is_some<Ty0>(Arg0: &Option<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Option<Ty0>)
1ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2Call vector::is_empty<Ty0>(&vector<Ty0>): bool
3Not
4Ret
}
public contains<Ty0>(Arg0: &Option<Ty0>, Arg1: &Ty0): bool {
B0:
0MoveLoc[0](Arg0: &Option<Ty0>)
1ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2MoveLoc[1](Arg1: &Ty0)
3Call vector::contains<Ty0>(&vector<Ty0>, &Ty0): bool
4Ret
}
public borrow<Ty0>(Arg0: &Option<Ty0>): &Ty0 {
B0:
0CopyLoc[0](Arg0: &Option<Ty0>)
1Call is_some<Ty0>(&Option<Ty0>): bool
2BrFalse(4)
B1:
3Branch(8)
B2:
4MoveLoc[0](Arg0: &Option<Ty0>)
5Pop
6LdConst[1](u64: 262145)
7Abort
B3:
8MoveLoc[0](Arg0: &Option<Ty0>)
9ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
10LdU64(0)
11VecImmBorrow(2)
12Ret
}
public borrow_with_default<Ty0>(Arg0: &Option<Ty0>, Arg1: &Ty0): &Ty0 {
L2: loc0: &Ty0
L3: loc1: &vector<Ty0>
B0:
0MoveLoc[0](Arg0: &Option<Ty0>)
1ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2StLoc[3](loc1: &vector<Ty0>)
3CopyLoc[3](loc1: &vector<Ty0>)
4Call vector::is_empty<Ty0>(&vector<Ty0>): bool
5BrFalse(11)
B1:
6MoveLoc[3](loc1: &vector<Ty0>)
7Pop
8MoveLoc[1](Arg1: &Ty0)
9StLoc[2](loc0: &Ty0)
10Branch(17)
B2:
11MoveLoc[1](Arg1: &Ty0)
12Pop
13MoveLoc[3](loc1: &vector<Ty0>)
14LdU64(0)
15VecImmBorrow(2)
16StLoc[2](loc0: &Ty0)
B3:
17MoveLoc[2](loc0: &Ty0)
18Ret
}
public get_with_default<Ty0: copy + drop>(Arg0: &Option<Ty0>, Arg1: Ty0): Ty0 {
L2: loc0: Ty0
L3: loc1: &vector<Ty0>
B0:
0MoveLoc[0](Arg0: &Option<Ty0>)
1ImmBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2StLoc[3](loc1: &vector<Ty0>)
3CopyLoc[3](loc1: &vector<Ty0>)
4Call vector::is_empty<Ty0>(&vector<Ty0>): bool
5BrFalse(11)
B1:
6MoveLoc[3](loc1: &vector<Ty0>)
7Pop
8MoveLoc[1](Arg1: Ty0)
9StLoc[2](loc0: Ty0)
10Branch(16)
B2:
11MoveLoc[3](loc1: &vector<Ty0>)
12LdU64(0)
13VecImmBorrow(2)
14ReadRef
15StLoc[2](loc0: Ty0)
B3:
16MoveLoc[2](loc0: Ty0)
17Ret
}
public fill<Ty0>(Arg0: &mut Option<Ty0>, Arg1: Ty0) {
L2: loc0: &mut vector<Ty0>
B0:
0MoveLoc[0](Arg0: &mut Option<Ty0>)
1MutBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2StLoc[2](loc0: &mut vector<Ty0>)
3CopyLoc[2](loc0: &mut vector<Ty0>)
4FreezeRef
5Call vector::is_empty<Ty0>(&vector<Ty0>): bool
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[2](loc0: &mut vector<Ty0>)
9Pop
10LdConst[0](u64: 262144)
11Abort
B3:
12MoveLoc[2](loc0: &mut vector<Ty0>)
13MoveLoc[1](Arg1: Ty0)
14VecPushBack(2)
15Ret
}
public extract<Ty0>(Arg0: &mut Option<Ty0>): Ty0 {
B0:
0CopyLoc[0](Arg0: &mut Option<Ty0>)
1FreezeRef
2Call is_some<Ty0>(&Option<Ty0>): bool
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut Option<Ty0>)
6Pop
7LdConst[1](u64: 262145)
8Abort
B3:
9MoveLoc[0](Arg0: &mut Option<Ty0>)
10MutBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
11VecPopBack(2)
12Ret
}
public borrow_mut<Ty0>(Arg0: &mut Option<Ty0>): &mut Ty0 {
B0:
0CopyLoc[0](Arg0: &mut Option<Ty0>)
1FreezeRef
2Call is_some<Ty0>(&Option<Ty0>): bool
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut Option<Ty0>)
6Pop
7LdConst[1](u64: 262145)
8Abort
B3:
9MoveLoc[0](Arg0: &mut Option<Ty0>)
10MutBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
11LdU64(0)
12VecMutBorrow(2)
13Ret
}
public swap<Ty0>(Arg0: &mut Option<Ty0>, Arg1: Ty0): Ty0 {
L2: loc0: Ty0
L3: loc1: &mut vector<Ty0>
B0:
0CopyLoc[0](Arg0: &mut Option<Ty0>)
1FreezeRef
2Call is_some<Ty0>(&Option<Ty0>): bool
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut Option<Ty0>)
6Pop
7LdConst[1](u64: 262145)
8Abort
B3:
9MoveLoc[0](Arg0: &mut Option<Ty0>)
10MutBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
11StLoc[3](loc1: &mut vector<Ty0>)
12CopyLoc[3](loc1: &mut vector<Ty0>)
13VecPopBack(2)
14StLoc[2](loc0: Ty0)
15MoveLoc[3](loc1: &mut vector<Ty0>)
16MoveLoc[1](Arg1: Ty0)
17VecPushBack(2)
18MoveLoc[2](loc0: Ty0)
19Ret
}
public swap_or_fill<Ty0>(Arg0: &mut Option<Ty0>, Arg1: Ty0): Option<Ty0> {
L2: loc0: Option<Ty0>
L3: loc1: Option<Ty0>
L4: loc2: &mut vector<Ty0>
B0:
0MoveLoc[0](Arg0: &mut Option<Ty0>)
1MutBorrowFieldGeneric[0](Option.vec: vector<Ty0>)
2StLoc[4](loc2: &mut vector<Ty0>)
3CopyLoc[4](loc2: &mut vector<Ty0>)
4FreezeRef
5Call vector::is_empty<Ty0>(&vector<Ty0>): bool
6BrFalse(10)
B1:
7Call none<Ty0>(): Option<Ty0>
8StLoc[2](loc0: Option<Ty0>)
9Branch(14)
B2:
10CopyLoc[4](loc2: &mut vector<Ty0>)
11VecPopBack(2)
12Call some<Ty0>(Ty0): Option<Ty0>
13StLoc[2](loc0: Option<Ty0>)
B3:
14MoveLoc[2](loc0: Option<Ty0>)
15StLoc[3](loc1: Option<Ty0>)
16MoveLoc[4](loc2: &mut vector<Ty0>)
17MoveLoc[1](Arg1: Ty0)
18VecPushBack(2)
19MoveLoc[3](loc1: Option<Ty0>)
20Ret
}
public destroy_with_default<Ty0: drop>(Arg0: Option<Ty0>, Arg1: Ty0): Ty0 {
L2: loc0: Ty0
L3: loc1: vector<Ty0>
B0:
0MoveLoc[0](Arg0: Option<Ty0>)
1UnpackGeneric[0](Option<Ty0>)
2StLoc[3](loc1: vector<Ty0>)
3ImmBorrowLoc[3](loc1: vector<Ty0>)
4Call vector::is_empty<Ty0>(&vector<Ty0>): bool
5BrFalse(9)
B1:
6MoveLoc[1](Arg1: Ty0)
7StLoc[2](loc0: Ty0)
8Branch(12)
B2:
9MutBorrowLoc[3](loc1: vector<Ty0>)
10VecPopBack(2)
11StLoc[2](loc0: Ty0)
B3:
12MoveLoc[2](loc0: Ty0)
13Ret
}
public destroy_some<Ty0>(Arg0: Option<Ty0>): Ty0 {
L1: loc0: Ty0
L2: loc1: vector<Ty0>
B0:
0ImmBorrowLoc[0](Arg0: Option<Ty0>)
1Call is_some<Ty0>(&Option<Ty0>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[1](u64: 262145)
5Abort
B3:
6MoveLoc[0](Arg0: Option<Ty0>)
7UnpackGeneric[0](Option<Ty0>)
8StLoc[2](loc1: vector<Ty0>)
9MutBorrowLoc[2](loc1: vector<Ty0>)
10VecPopBack(2)
11StLoc[1](loc0: Ty0)
12MoveLoc[2](loc1: vector<Ty0>)
13VecUnpack(2, 0)
14MoveLoc[1](loc0: Ty0)
15Ret
}
public destroy_none<Ty0>(Arg0: Option<Ty0>) {
B0:
0ImmBorrowLoc[0](Arg0: Option<Ty0>)
1Call is_none<Ty0>(&Option<Ty0>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[0](u64: 262144)
5Abort
B3:
6MoveLoc[0](Arg0: Option<Ty0>)
7UnpackGeneric[0](Option<Ty0>)
8VecUnpack(2, 0)
9Ret
}
public to_vec<Ty0>(Arg0: Option<Ty0>): vector<Ty0> {
B0:
0MoveLoc[0](Arg0: Option<Ty0>)
1UnpackGeneric[0](Option<Ty0>)
2Ret
}
Constants [
0 => u64: 262144
1 => u64: 262145
]
}