let rec copy_var_def vd =
{
vd_ident = vd.vd_ident;
vd_type = vd.vd_type;
vd_lex_depth = vd.vd_lex_depth;
vd_value = vd.vd_value;
vd_on_the_stack = vd.vd_on_the_stack;
vd_pos =
match !(vd.vd_pos) with
| Pos_pointed v -> ref (Pos_pointed (copy_var v))
| Pos_rec(r, k) -> ref (Pos_rec (copy_var r, k))
| Pos_arr(a, v, n0, s) -> ref (Pos_arr (copy_var a, copy_var v, n0, s))
| Pos_base _
| Pos_stack _
| Pos_label _
| Pos_none -> vd.vd_pos
}
and copy_var v =
{
var_reg = v.var_reg;
var_def = copy_var_def v.var_def;
}