move-stackless-bytecode 0.1.5

Move stackless bytecode
Documentation
============ initial translation from Move ================

[variant baseline]
public fun CopyStruct::g() {
     var $t0|s1: CopyStruct::S
     var $t1|s2: CopyStruct::S
     var $t2: address
     var $t3: CopyStruct::S
     var $t4: u64
     var $t5: &CopyStruct::S
     var $t6: &address
     var $t7: address
     var $t8: &mut CopyStruct::G
     var $t9: &mut u64
     var $t10: address
     var $t11: CopyStruct::S
     var $t12: u64
     var $t13: &CopyStruct::S
     var $t14: &address
     var $t15: address
     var $t16: &mut CopyStruct::G
     var $t17: &mut u64
  0: $t2 := 0x7
  1: $t3 := CopyStruct::ret_struct_copy($t2)
  2: $t0 := $t3
  3: $t4 := 1
  4: $t5 := borrow_local($t0)
  5: $t6 := borrow_field<CopyStruct::S>.a($t5)
  6: $t7 := read_ref($t6)
  7: $t8 := borrow_global<CopyStruct::G>($t7)
  8: $t9 := borrow_field<CopyStruct::G>.f($t8)
  9: write_ref($t9, $t4)
 10: $t10 := 0x7
 11: $t11 := CopyStruct::ret_struct($t10)
 12: $t1 := $t11
 13: $t12 := 2
 14: $t13 := borrow_local($t1)
 15: $t14 := borrow_field<CopyStruct::S>.a($t13)
 16: $t15 := read_ref($t14)
 17: $t16 := borrow_global<CopyStruct::G>($t15)
 18: $t17 := borrow_field<CopyStruct::G>.f($t16)
 19: write_ref($t17, $t12)
 20: return ()
}


[variant baseline]
public fun CopyStruct::ret_struct($t0|a: address): CopyStruct::S {
     var $t1: address
     var $t2: CopyStruct::S
  0: $t1 := move($t0)
  1: $t2 := pack CopyStruct::S($t1)
  2: return $t2
}


[variant baseline]
public fun CopyStruct::ret_struct_copy($t0|a: address): CopyStruct::S {
     var $t1|s: CopyStruct::S
     var $t2: address
     var $t3: CopyStruct::S
     var $t4: &CopyStruct::S
     var $t5: CopyStruct::S
  0: $t2 := move($t0)
  1: $t3 := pack CopyStruct::S($t2)
  2: $t1 := $t3
  3: $t4 := borrow_local($t1)
  4: $t5 := read_ref($t4)
  5: return $t5
}

============ after pipeline `read_write_set` ================

[variant baseline]
public fun CopyStruct::g() {
     var $t0|s1: CopyStruct::S
     var $t1|s2: CopyStruct::S
     var $t2: address
     var $t3: CopyStruct::S
     var $t4: u64
     var $t5: &CopyStruct::S
     var $t6: &address
     var $t7: address
     var $t8: &mut CopyStruct::G
     var $t9: &mut u64
     var $t10: address
     var $t11: CopyStruct::S
     var $t12: u64
     var $t13: &CopyStruct::S
     var $t14: &address
     var $t15: address
     var $t16: &mut CopyStruct::G
     var $t17: &mut u64
     # Accesses:
     # 0x7/0x1::CopyStruct::G/f: Write
     #
     # Locals:
     #
  0: $t2 := 0x7
  1: $t3 := CopyStruct::ret_struct_copy($t2)
  2: $t0 := $t3
  3: $t4 := 1
  4: $t5 := borrow_local($t0)
  5: $t6 := borrow_field<CopyStruct::S>.a($t5)
  6: $t7 := read_ref($t6)
  7: $t8 := borrow_global<CopyStruct::G>($t7)
  8: $t9 := borrow_field<CopyStruct::G>.f($t8)
  9: write_ref($t9, $t4)
 10: $t10 := 0x7
 11: $t11 := CopyStruct::ret_struct($t10)
 12: $t1 := $t11
 13: $t12 := 2
 14: $t13 := borrow_local($t1)
 15: $t14 := borrow_field<CopyStruct::S>.a($t13)
 16: $t15 := read_ref($t14)
 17: $t16 := borrow_global<CopyStruct::G>($t15)
 18: $t17 := borrow_field<CopyStruct::G>.f($t16)
 19: write_ref($t17, $t12)
 20: return ()
}


[variant baseline]
public fun CopyStruct::ret_struct($t0|a: address): CopyStruct::S {
     var $t1: address
     var $t2: CopyStruct::S
     # Accesses:
     # Formal(0): Read
     #
     # Locals:
     # Ret(0)/a: Formal(0)
     #
  0: $t1 := move($t0)
  1: $t2 := pack CopyStruct::S($t1)
  2: return $t2
}


[variant baseline]
public fun CopyStruct::ret_struct_copy($t0|a: address): CopyStruct::S {
     var $t1|s: CopyStruct::S
     var $t2: address
     var $t3: CopyStruct::S
     var $t4: &CopyStruct::S
     var $t5: CopyStruct::S
     # Accesses:
     # Formal(0): Read
     #
     # Locals:
     # Ret(0)/a: Formal(0)
     #
  0: $t2 := move($t0)
  1: $t3 := pack CopyStruct::S($t2)
  2: $t1 := $t3
  3: $t4 := borrow_local($t1)
  4: $t5 := read_ref($t4)
  5: return $t5
}