-
Notifications
You must be signed in to change notification settings - Fork 17
Closed
Description
Currently, in order not to waste memory cells, we need to use the same variables across cases of a match statement:
match encoding[i] {
0 => {
var_1 = chain_tips + i;
var_2 = public_key + i;
var_3 = malloc_vec(1);
var_4 = malloc_vec(1);
poseidon16(var_1, pointer_to_zero_vector, var_3, COMPRESSION);
poseidon16(var_3, pointer_to_zero_vector, var_4, COMPRESSION);
poseidon16(var_4, pointer_to_zero_vector, var_2, COMPRESSION);
}
1 => {
var_3 = malloc_vec(1);
var_1 = chain_tips + i;
var_2 = public_key + i;
poseidon16(var_1, pointer_to_zero_vector, var_3, COMPRESSION);
poseidon16(var_3, pointer_to_zero_vector, var_2, COMPRESSION);
}
2 => {
var_1 = chain_tips + i;
var_2 = public_key + i;
poseidon16(var_1, pointer_to_zero_vector, var_2, COMPRESSION);
}
3 => {
var_1 = chain_tips_ptr + (i * 8);
var_2 = public_key_ptr + (i * 8);
var_3 = var_1 + 3;
var_4 = var_2 + 3;
dot_product(var_1, pointer_to_one_vector * 8, var_2, 1);
dot_product(var_3, pointer_to_one_vector * 8, var_4, 1);
}
}Ideally, we want the compiler to reuse the same memory cells even if variables don't have the same name.
Metadata
Metadata
Assignees
Labels
No labels