DIG n ; DUP ; DUG (n+1)
To copy a element at depth n
to the top of the stack, SCaml uses:
DIG n ; DUP ; DUG (n+1)
Is it optimal?
DIP n { DUP } ; DIG n
Change is in compile.ml
:
let var ~loc env id = match Env.find id env with
...
| Some (n,_typ) ->
(*
[ COMMENT( "var " ^ Ident.unique_name id, [ DIG n; DUP; DUG (n+1) ]) ]
*)
[ COMMENT( "var " ^ Ident.unique_name id, [ DIP (n, [DUP]) ; DIG n ]) ]