move-stackless-bytecode 0.3.2

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

[variant baseline]
fun Counter::call_increment1($t0|s: &mut Counter::S) {
     var $t1: &mut Counter::S
     var $t2: &mut u64
  0: $t1 := move($t0)
  1: $t2 := borrow_field<Counter::S>.f($t1)
  2: Counter::increment1($t2)
  3: return ()
}


[variant baseline]
fun Counter::call_increment2($t0|a: address) {
     var $t1: address
     var $t2: &mut Counter::S
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Counter::S>($t1)
  2: Counter::increment2($t2)
  3: return ()
}


[variant baseline]
fun Counter::increment1($t0|i: &mut u64) {
     var $t1: &mut u64
     var $t2: u64
     var $t3: u64
     var $t4: u64
     var $t5: &mut u64
  0: $t1 := copy($t0)
  1: $t2 := read_ref($t1)
  2: $t3 := 1
  3: $t4 := +($t2, $t3)
  4: $t5 := move($t0)
  5: write_ref($t5, $t4)
  6: return ()
}


[variant baseline]
fun Counter::increment2($t0|s: &mut Counter::S) {
     var $t1: &mut Counter::S
     var $t2: &mut u64
     var $t3: u64
     var $t4: u64
     var $t5: u64
     var $t6: &mut Counter::S
     var $t7: &mut u64
  0: $t1 := copy($t0)
  1: $t2 := borrow_field<Counter::S>.f($t1)
  2: $t3 := read_ref($t2)
  3: $t4 := 1
  4: $t5 := +($t3, $t4)
  5: $t6 := move($t0)
  6: $t7 := borrow_field<Counter::S>.f($t6)
  7: write_ref($t7, $t5)
  8: return ()
}

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

[variant baseline]
fun Counter::call_increment1($t0|s: &mut Counter::S) {
     var $t1: &mut Counter::S
     var $t2: &mut u64
     # Accesses:
     # Formal(0): Read
     # Formal(0)/f: ReadWrite
     #
     # Locals:
     #
  0: $t1 := move($t0)
  1: $t2 := borrow_field<Counter::S>.f($t1)
  2: Counter::increment1($t2)
  3: return ()
}


[variant baseline]
fun Counter::call_increment2($t0|a: address) {
     var $t1: address
     var $t2: &mut Counter::S
     # Accesses:
     # Formal(0): Read
     # Formal(0)/0x1::Counter::S: Read
     # Formal(0)/0x1::Counter::S/f: ReadWrite
     #
     # Locals:
     #
  0: $t1 := move($t0)
  1: $t2 := borrow_global<Counter::S>($t1)
  2: Counter::increment2($t2)
  3: return ()
}


[variant baseline]
fun Counter::increment1($t0|i: &mut u64) {
     var $t1: &mut u64
     var $t2: u64
     var $t3: u64
     var $t4: u64
     var $t5: &mut u64
     # Accesses:
     # Formal(0): ReadWrite
     #
     # Locals:
     #
  0: $t1 := copy($t0)
  1: $t2 := read_ref($t1)
  2: $t3 := 1
  3: $t4 := +($t2, $t3)
  4: $t5 := move($t0)
  5: write_ref($t5, $t4)
  6: return ()
}


[variant baseline]
fun Counter::increment2($t0|s: &mut Counter::S) {
     var $t1: &mut Counter::S
     var $t2: &mut u64
     var $t3: u64
     var $t4: u64
     var $t5: u64
     var $t6: &mut Counter::S
     var $t7: &mut u64
     # Accesses:
     # Formal(0): Read
     # Formal(0)/f: ReadWrite
     #
     # Locals:
     #
  0: $t1 := copy($t0)
  1: $t2 := borrow_field<Counter::S>.f($t1)
  2: $t3 := read_ref($t2)
  3: $t4 := 1
  4: $t5 := +($t3, $t4)
  5: $t6 := move($t0)
  6: $t7 := borrow_field<Counter::S>.f($t6)
  7: write_ref($t7, $t5)
  8: return ()
}