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

versioned

Module0x0000…0002
Move path
0x0000…0002::versioned
Functions
77 public, 0 entry
Structs
2
Friend modules
None
versioned

Bytecode148 lines

The on-chain disassembly. Offsets are instruction numbers within each function.

// Move bytecode v7
module 2.versioned {
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Versioned has store, key {
id: UID,
version: u64
}
 
struct VersionChangeCap {
versioned_id: ID,
old_version: u64
}
 
public create<Ty0: store>(Arg0: u64, Arg1: Ty0, Arg2: &mut TxContext): Versioned {
L3: loc0: Versioned
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1Call object::new(&mut TxContext): UID
2CopyLoc[0](Arg0: u64)
3Pack[0](Versioned)
4StLoc[3](loc0: Versioned)
5MutBorrowLoc[3](loc0: Versioned)
6MutBorrowField[0](Versioned.id: UID)
7MoveLoc[0](Arg0: u64)
8MoveLoc[1](Arg1: Ty0)
9Call dynamic_field::add<u64, Ty0>(&mut UID, u64, Ty0)
10MoveLoc[3](loc0: Versioned)
11Ret
}
 
public version(Arg0: &Versioned): u64 {
B0:
0MoveLoc[0](Arg0: &Versioned)
1ImmBorrowField[1](Versioned.version: u64)
2ReadRef
3Ret
}
 
public load_value<Ty0: store>(Arg0: &Versioned): &Ty0 {
B0:
0CopyLoc[0](Arg0: &Versioned)
1ImmBorrowField[0](Versioned.id: UID)
2MoveLoc[0](Arg0: &Versioned)
3ImmBorrowField[1](Versioned.version: u64)
4ReadRef
5Call dynamic_field::borrow<u64, Ty0>(&UID, u64): &Ty0
6Ret
}
 
public load_value_mut<Ty0: store>(Arg0: &mut Versioned): &mut Ty0 {
B0:
0CopyLoc[0](Arg0: &mut Versioned)
1MutBorrowField[0](Versioned.id: UID)
2MoveLoc[0](Arg0: &mut Versioned)
3ImmBorrowField[1](Versioned.version: u64)
4ReadRef
5Call dynamic_field::borrow_mut<u64, Ty0>(&mut UID, u64): &mut Ty0
6Ret
}
 
public remove_value_for_upgrade<Ty0: store>(Arg0: &mut Versioned): Ty0 * VersionChangeCap {
B0:
0CopyLoc[0](Arg0: &mut Versioned)
1MutBorrowField[0](Versioned.id: UID)
2CopyLoc[0](Arg0: &mut Versioned)
3ImmBorrowField[1](Versioned.version: u64)
4ReadRef
5Call dynamic_field::remove<u64, Ty0>(&mut UID, u64): Ty0
6CopyLoc[0](Arg0: &mut Versioned)
7FreezeRef
8Call object::id<Versioned>(&Versioned): ID
9MoveLoc[0](Arg0: &mut Versioned)
10ImmBorrowField[1](Versioned.version: u64)
11ReadRef
12Pack[1](VersionChangeCap)
13Ret
}
 
public upgrade<Ty0: store>(Arg0: &mut Versioned, Arg1: u64, Arg2: Ty0, Arg3: VersionChangeCap) {
L4: loc0: u64
B0:
0MoveLoc[3](Arg3: VersionChangeCap)
1Unpack[1](VersionChangeCap)
2StLoc[4](loc0: u64)
3CopyLoc[0](Arg0: &mut Versioned)
4FreezeRef
5Call object::id<Versioned>(&Versioned): ID
6Eq
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut Versioned)
10Pop
11LdConst[0](u64: 0)
12Abort
B3:
13MoveLoc[4](loc0: u64)
14CopyLoc[1](Arg1: u64)
15Lt
16BrFalse(18)
B4:
17Branch(22)
B5:
18MoveLoc[0](Arg0: &mut Versioned)
19Pop
20LdConst[0](u64: 0)
21Abort
B6:
22CopyLoc[0](Arg0: &mut Versioned)
23MutBorrowField[0](Versioned.id: UID)
24CopyLoc[1](Arg1: u64)
25MoveLoc[2](Arg2: Ty0)
26Call dynamic_field::add<u64, Ty0>(&mut UID, u64, Ty0)
27MoveLoc[1](Arg1: u64)
28MoveLoc[0](Arg0: &mut Versioned)
29MutBorrowField[1](Versioned.version: u64)
30WriteRef
31Ret
}
 
public destroy<Ty0: store>(Arg0: Versioned): Ty0 {
L1: loc0: UID
L2: loc1: Ty0
L3: loc2: u64
B0:
0MoveLoc[0](Arg0: Versioned)
1Unpack[0](Versioned)
2StLoc[3](loc2: u64)
3StLoc[1](loc0: UID)
4MutBorrowLoc[1](loc0: UID)
5MoveLoc[3](loc2: u64)
6Call dynamic_field::remove<u64, Ty0>(&mut UID, u64): Ty0
7StLoc[2](loc1: Ty0)
8MoveLoc[1](loc0: UID)
9Call object::delete(UID)
10MoveLoc[2](loc1: Ty0)
11Ret
}
 
Constants [
0 => u64: 0
]
}