============ initial translation from Move ================
[variant baseline]
public fun TestMutRefs::data_invariant($t0|_x: &mut TestMutRefs::T) {
0: return ()
}
[variant baseline]
public fun TestMutRefs::decrement_invalid($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: &mut TestMutRefs::T
var $t3: &u64
var $t4: u64
var $t5: u64
var $t6: u64
var $t7: &mut TestMutRefs::T
var $t8: &mut u64
var $t9: address
var $t10: &mut TestMutRefs::TSum
var $t11: &mut TestMutRefs::TSum
var $t12: &u64
var $t13: u64
var $t14: u64
var $t15: u64
var $t16: &mut TestMutRefs::TSum
var $t17: &mut u64
0: $t2 := copy($t0)
1: $t3 := borrow_field<TestMutRefs::T>.value($t2)
2: $t4 := read_ref($t3)
3: $t5 := 1
4: $t6 := -($t4, $t5)
5: $t7 := move($t0)
6: $t8 := borrow_field<TestMutRefs::T>.value($t7)
7: write_ref($t8, $t6)
8: $t9 := 0x0
9: $t10 := borrow_global<TestMutRefs::TSum>($t9)
10: $t1 := $t10
11: $t11 := copy($t1)
12: $t12 := borrow_field<TestMutRefs::TSum>.sum($t11)
13: $t13 := read_ref($t12)
14: $t14 := 1
15: $t15 := -($t13, $t14)
16: $t16 := move($t1)
17: $t17 := borrow_field<TestMutRefs::TSum>.sum($t16)
18: write_ref($t17, $t15)
19: return ()
}
[variant baseline]
public fun TestMutRefs::delete($t0|x: TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2|v: u64
var $t3: address
var $t4: &mut TestMutRefs::TSum
var $t5: TestMutRefs::T
var $t6: u64
var $t7: &mut TestMutRefs::TSum
var $t8: &u64
var $t9: u64
var $t10: u64
var $t11: u64
var $t12: &mut TestMutRefs::TSum
var $t13: &mut u64
0: $t3 := 0x0
1: $t4 := borrow_global<TestMutRefs::TSum>($t3)
2: $t1 := $t4
3: $t5 := move($t0)
4: $t6 := unpack TestMutRefs::T($t5)
5: $t2 := $t6
6: $t7 := copy($t1)
7: $t8 := borrow_field<TestMutRefs::TSum>.sum($t7)
8: $t9 := read_ref($t8)
9: $t10 := move($t2)
10: $t11 := -($t9, $t10)
11: $t12 := move($t1)
12: $t13 := borrow_field<TestMutRefs::TSum>.sum($t12)
13: write_ref($t13, $t11)
14: return ()
}
[variant baseline]
public fun TestMutRefs::increment($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: &mut TestMutRefs::T
var $t3: &u64
var $t4: u64
var $t5: u64
var $t6: u64
var $t7: &mut TestMutRefs::T
var $t8: &mut u64
var $t9: address
var $t10: &mut TestMutRefs::TSum
var $t11: &mut TestMutRefs::TSum
var $t12: &u64
var $t13: u64
var $t14: u64
var $t15: u64
var $t16: &mut TestMutRefs::TSum
var $t17: &mut u64
0: $t2 := copy($t0)
1: $t3 := borrow_field<TestMutRefs::T>.value($t2)
2: $t4 := read_ref($t3)
3: $t5 := 1
4: $t6 := +($t4, $t5)
5: $t7 := move($t0)
6: $t8 := borrow_field<TestMutRefs::T>.value($t7)
7: write_ref($t8, $t6)
8: $t9 := 0x0
9: $t10 := borrow_global<TestMutRefs::TSum>($t9)
10: $t1 := $t10
11: $t11 := copy($t1)
12: $t12 := borrow_field<TestMutRefs::TSum>.sum($t11)
13: $t13 := read_ref($t12)
14: $t14 := 1
15: $t15 := +($t13, $t14)
16: $t16 := move($t1)
17: $t17 := borrow_field<TestMutRefs::TSum>.sum($t16)
18: write_ref($t17, $t15)
19: return ()
}
[variant baseline]
public fun TestMutRefs::increment_invalid($t0|x: &mut TestMutRefs::T) {
var $t1: &mut TestMutRefs::T
var $t2: &u64
var $t3: u64
var $t4: u64
var $t5: u64
var $t6: &mut TestMutRefs::T
var $t7: &mut u64
0: $t1 := copy($t0)
1: $t2 := borrow_field<TestMutRefs::T>.value($t1)
2: $t3 := read_ref($t2)
3: $t4 := 1
4: $t5 := +($t3, $t4)
5: $t6 := move($t0)
6: $t7 := borrow_field<TestMutRefs::T>.value($t6)
7: write_ref($t7, $t5)
8: return ()
}
[variant baseline]
public fun TestMutRefs::new($t0|x: u64): TestMutRefs::T {
var $t1|r: &mut TestMutRefs::TSum
var $t2: address
var $t3: &mut TestMutRefs::TSum
var $t4: &mut TestMutRefs::TSum
var $t5: &u64
var $t6: u64
var $t7: u64
var $t8: u64
var $t9: &mut TestMutRefs::TSum
var $t10: &mut u64
var $t11: u64
var $t12: TestMutRefs::T
0: $t2 := 0x0
1: $t3 := borrow_global<TestMutRefs::TSum>($t2)
2: $t1 := $t3
3: $t4 := copy($t1)
4: $t5 := borrow_field<TestMutRefs::TSum>.sum($t4)
5: $t6 := read_ref($t5)
6: $t7 := copy($t0)
7: $t8 := +($t6, $t7)
8: $t9 := move($t1)
9: $t10 := borrow_field<TestMutRefs::TSum>.sum($t9)
10: write_ref($t10, $t8)
11: $t11 := move($t0)
12: $t12 := pack TestMutRefs::T($t11)
13: return $t12
}
[variant baseline]
fun TestMutRefs::private_data_invariant_invalid($t0|_x: &mut TestMutRefs::T) {
0: return ()
}
[variant baseline]
fun TestMutRefs::private_decrement($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: &mut TestMutRefs::T
var $t3: &u64
var $t4: u64
var $t5: u64
var $t6: u64
var $t7: &mut TestMutRefs::T
var $t8: &mut u64
var $t9: address
var $t10: &mut TestMutRefs::TSum
var $t11: &mut TestMutRefs::TSum
var $t12: &u64
var $t13: u64
var $t14: u64
var $t15: u64
var $t16: &mut TestMutRefs::TSum
var $t17: &mut u64
0: $t2 := copy($t0)
1: $t3 := borrow_field<TestMutRefs::T>.value($t2)
2: $t4 := read_ref($t3)
3: $t5 := 1
4: $t6 := -($t4, $t5)
5: $t7 := move($t0)
6: $t8 := borrow_field<TestMutRefs::T>.value($t7)
7: write_ref($t8, $t6)
8: $t9 := 0x0
9: $t10 := borrow_global<TestMutRefs::TSum>($t9)
10: $t1 := $t10
11: $t11 := copy($t1)
12: $t12 := borrow_field<TestMutRefs::TSum>.sum($t11)
13: $t13 := read_ref($t12)
14: $t14 := 1
15: $t15 := -($t13, $t14)
16: $t16 := move($t1)
17: $t17 := borrow_field<TestMutRefs::TSum>.sum($t16)
18: write_ref($t17, $t15)
19: return ()
}
[variant baseline]
fun TestMutRefs::private_to_public_caller($t0|r: &mut TestMutRefs::T) {
var $t1: &mut TestMutRefs::T
0: $t1 := move($t0)
1: TestMutRefs::increment($t1)
2: return ()
}
[variant baseline]
fun TestMutRefs::private_to_public_caller_invalid_data_invariant() {
var $t0|r: &mut TestMutRefs::T
var $t1|x: TestMutRefs::T
var $t2: u64
var $t3: TestMutRefs::T
var $t4: &mut TestMutRefs::T
var $t5: &mut TestMutRefs::T
var $t6: &mut TestMutRefs::T
0: $t2 := 1
1: $t3 := TestMutRefs::new($t2)
2: $t1 := $t3
3: $t4 := borrow_local($t1)
4: $t0 := $t4
5: $t5 := copy($t0)
6: TestMutRefs::private_decrement($t5)
7: $t6 := move($t0)
8: TestMutRefs::increment($t6)
9: return ()
}
[variant baseline]
public fun TestMutRefsUser::valid() {
var $t0|x: TestMutRefs::T
var $t1: u64
var $t2: TestMutRefs::T
var $t3: &mut TestMutRefs::T
var $t4: TestMutRefs::T
0: $t1 := 4
1: $t2 := TestMutRefs::new($t1)
2: $t0 := $t2
3: $t3 := borrow_local($t0)
4: TestMutRefs::increment($t3)
5: $t4 := move($t0)
6: TestMutRefs::delete($t4)
7: return ()
}
============ after pipeline `memory_instr` ================
[variant baseline]
public fun TestMutRefs::data_invariant($t0|_x: &mut TestMutRefs::T) {
0: trace_local[_x]($t0)
1: return ()
}
[variant baseline]
public fun TestMutRefs::decrement_invalid($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: u64
var $t3: u64
var $t4: u64
var $t5: &mut u64
var $t6: address
var $t7: &mut TestMutRefs::TSum
var $t8: u64
var $t9: u64
var $t10: u64
var $t11: &mut u64
0: $t2 := get_field<TestMutRefs::T>.value($t0)
1: $t3 := 1
2: $t4 := -($t2, $t3)
3: $t5 := borrow_field<TestMutRefs::T>.value($t0)
4: write_ref($t5, $t4)
5: write_back[Reference($t0).value (u64)]($t5)
6: trace_local[x]($t0)
7: $t6 := 0x0
8: $t7 := borrow_global<TestMutRefs::TSum>($t6)
9: $t8 := get_field<TestMutRefs::TSum>.sum($t7)
10: $t9 := 1
11: $t10 := -($t8, $t9)
12: $t11 := borrow_field<TestMutRefs::TSum>.sum($t7)
13: write_ref($t11, $t10)
14: write_back[Reference($t7).sum (u64)]($t11)
15: write_back[TestMutRefs::TSum@]($t7)
16: trace_local[x]($t0)
17: return ()
}
[variant baseline]
public fun TestMutRefs::delete($t0|x: TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2|v: u64
var $t3: address
var $t4: &mut TestMutRefs::TSum
var $t5: u64
var $t6: u64
var $t7: u64
var $t8: &mut u64
0: $t3 := 0x0
1: $t4 := borrow_global<TestMutRefs::TSum>($t3)
2: $t5 := unpack TestMutRefs::T($t0)
3: $t6 := get_field<TestMutRefs::TSum>.sum($t4)
4: $t7 := -($t6, $t5)
5: $t8 := borrow_field<TestMutRefs::TSum>.sum($t4)
6: write_ref($t8, $t7)
7: write_back[Reference($t4).sum (u64)]($t8)
8: write_back[TestMutRefs::TSum@]($t4)
9: return ()
}
[variant baseline]
public fun TestMutRefs::increment($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: u64
var $t3: u64
var $t4: u64
var $t5: &mut u64
var $t6: address
var $t7: &mut TestMutRefs::TSum
var $t8: u64
var $t9: u64
var $t10: u64
var $t11: &mut u64
0: $t2 := get_field<TestMutRefs::T>.value($t0)
1: $t3 := 1
2: $t4 := +($t2, $t3)
3: $t5 := borrow_field<TestMutRefs::T>.value($t0)
4: write_ref($t5, $t4)
5: write_back[Reference($t0).value (u64)]($t5)
6: trace_local[x]($t0)
7: $t6 := 0x0
8: $t7 := borrow_global<TestMutRefs::TSum>($t6)
9: $t8 := get_field<TestMutRefs::TSum>.sum($t7)
10: $t9 := 1
11: $t10 := +($t8, $t9)
12: $t11 := borrow_field<TestMutRefs::TSum>.sum($t7)
13: write_ref($t11, $t10)
14: write_back[Reference($t7).sum (u64)]($t11)
15: write_back[TestMutRefs::TSum@]($t7)
16: trace_local[x]($t0)
17: return ()
}
[variant baseline]
public fun TestMutRefs::increment_invalid($t0|x: &mut TestMutRefs::T) {
var $t1: u64
var $t2: u64
var $t3: u64
var $t4: &mut u64
0: $t1 := get_field<TestMutRefs::T>.value($t0)
1: $t2 := 1
2: $t3 := +($t1, $t2)
3: $t4 := borrow_field<TestMutRefs::T>.value($t0)
4: write_ref($t4, $t3)
5: write_back[Reference($t0).value (u64)]($t4)
6: trace_local[x]($t0)
7: trace_local[x]($t0)
8: return ()
}
[variant baseline]
public fun TestMutRefs::new($t0|x: u64): TestMutRefs::T {
var $t1|r: &mut TestMutRefs::TSum
var $t2: address
var $t3: &mut TestMutRefs::TSum
var $t4: u64
var $t5: u64
var $t6: &mut u64
var $t7: TestMutRefs::T
0: $t2 := 0x0
1: $t3 := borrow_global<TestMutRefs::TSum>($t2)
2: $t4 := get_field<TestMutRefs::TSum>.sum($t3)
3: $t5 := +($t4, $t0)
4: $t6 := borrow_field<TestMutRefs::TSum>.sum($t3)
5: write_ref($t6, $t5)
6: write_back[Reference($t3).sum (u64)]($t6)
7: write_back[TestMutRefs::TSum@]($t3)
8: $t7 := pack TestMutRefs::T($t0)
9: return $t7
}
[variant baseline]
fun TestMutRefs::private_data_invariant_invalid($t0|_x: &mut TestMutRefs::T) {
0: trace_local[_x]($t0)
1: return ()
}
[variant baseline]
fun TestMutRefs::private_decrement($t0|x: &mut TestMutRefs::T) {
var $t1|r: &mut TestMutRefs::TSum
var $t2: u64
var $t3: u64
var $t4: u64
var $t5: &mut u64
var $t6: address
var $t7: &mut TestMutRefs::TSum
var $t8: u64
var $t9: u64
var $t10: u64
var $t11: &mut u64
0: $t2 := get_field<TestMutRefs::T>.value($t0)
1: $t3 := 1
2: $t4 := -($t2, $t3)
3: $t5 := borrow_field<TestMutRefs::T>.value($t0)
4: write_ref($t5, $t4)
5: write_back[Reference($t0).value (u64)]($t5)
6: trace_local[x]($t0)
7: $t6 := 0x0
8: $t7 := borrow_global<TestMutRefs::TSum>($t6)
9: $t8 := get_field<TestMutRefs::TSum>.sum($t7)
10: $t9 := 1
11: $t10 := -($t8, $t9)
12: $t11 := borrow_field<TestMutRefs::TSum>.sum($t7)
13: write_ref($t11, $t10)
14: write_back[Reference($t7).sum (u64)]($t11)
15: write_back[TestMutRefs::TSum@]($t7)
16: trace_local[x]($t0)
17: return ()
}
[variant baseline]
fun TestMutRefs::private_to_public_caller($t0|r: &mut TestMutRefs::T) {
0: TestMutRefs::increment($t0)
1: trace_local[r]($t0)
2: return ()
}
[variant baseline]
fun TestMutRefs::private_to_public_caller_invalid_data_invariant() {
var $t0|r: &mut TestMutRefs::T
var $t1|x: TestMutRefs::T
var $t2: u64
var $t3: &mut TestMutRefs::T
0: $t2 := 1
1: $t1 := TestMutRefs::new($t2)
2: $t3 := borrow_local($t1)
3: TestMutRefs::private_decrement($t3)
4: TestMutRefs::increment($t3)
5: write_back[LocalRoot($t1)@]($t3)
6: trace_local[x]($t1)
7: return ()
}
[variant baseline]
public fun TestMutRefsUser::valid() {
var $t0|x: TestMutRefs::T
var $t1: u64
var $t2: &mut TestMutRefs::T
var $t3: TestMutRefs::T
0: $t1 := 4
1: $t0 := TestMutRefs::new($t1)
2: $t2 := borrow_local($t0)
3: TestMutRefs::increment($t2)
4: write_back[LocalRoot($t0)@]($t2)
5: trace_local[x]($t0)
6: $t3 := move($t0)
7: TestMutRefs::delete($t3)
8: return ()
}