move-stackless-bytecode 0.1.5

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

[variant baseline]
public fun Summary::write_addr() {
     var $t0: address
  0: $t0 := 0x777
  1: Summary::write_caller2($t0)
  2: return ()
}


[variant baseline]
public fun Summary::write_callee($t0|s2: &mut Summary::S2) {
     var $t1: u64
     var $t2: &mut Summary::S2
     var $t3: &mut u64
  0: $t1 := 7
  1: $t2 := move($t0)
  2: $t3 := borrow_field<Summary::S2>.f($t2)
  3: write_ref($t3, $t1)
  4: return ()
}


[variant baseline]
public fun Summary::write_caller1($t0|a: address) {
     var $t1: address
     var $t2: &mut Summary::S2
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Summary::S2>($t1)
  2: Summary::write_callee($t2)
  3: return ()
}


[variant baseline]
public fun Summary::write_caller2($t0|a: address) {
     var $t1: address
     var $t2: &mut Summary::S1
     var $t3: &mut Summary::S2
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Summary::S1>($t1)
  2: $t3 := borrow_field<Summary::S1>.s2($t2)
  3: Summary::write_callee($t3)
  4: return ()
}

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

[variant baseline]
public fun Summary::write_addr() {
     var $t0: address
     # Accesses:
     # 0x777/0x2::Summary::S1/s2: Read
     # 0x777/0x2::Summary::S1/s2/f: Write
     #
     # Locals:
     #
  0: $t0 := 0x777
  1: Summary::write_caller2($t0)
  2: return ()
}


[variant baseline]
public fun Summary::write_callee($t0|s2: &mut Summary::S2) {
     var $t1: u64
     var $t2: &mut Summary::S2
     var $t3: &mut u64
     # Accesses:
     # Formal(0): Read
     # Formal(0)/f: Write
     #
     # Locals:
     #
  0: $t1 := 7
  1: $t2 := move($t0)
  2: $t3 := borrow_field<Summary::S2>.f($t2)
  3: write_ref($t3, $t1)
  4: return ()
}


[variant baseline]
public fun Summary::write_caller1($t0|a: address) {
     var $t1: address
     var $t2: &mut Summary::S2
     # Accesses:
     # Formal(0): Read
     # Formal(0)/0x2::Summary::S2: Read
     # Formal(0)/0x2::Summary::S2/f: Write
     #
     # Locals:
     #
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Summary::S2>($t1)
  2: Summary::write_callee($t2)
  3: return ()
}


[variant baseline]
public fun Summary::write_caller2($t0|a: address) {
     var $t1: address
     var $t2: &mut Summary::S1
     var $t3: &mut Summary::S2
     # Accesses:
     # Formal(0): Read
     # Formal(0)/0x2::Summary::S1/s2: Read
     # Formal(0)/0x2::Summary::S1/s2/f: Write
     #
     # Locals:
     #
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Summary::S1>($t1)
  2: $t3 := borrow_field<Summary::S1>.s2($t2)
  3: Summary::write_callee($t3)
  4: return ()
}