summaryrefslogtreecommitdiff
path: root/src/interpreter.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/interpreter.ml')
-rw-r--r--src/interpreter.ml23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/interpreter.ml b/src/interpreter.ml
index b3e8fe31..29598993 100644
--- a/src/interpreter.ml
+++ b/src/interpreter.ml
@@ -49,6 +49,7 @@
(**************************************************************************)
open Ast
+open Ast_defs
open Ast_util
open Value
@@ -755,11 +756,11 @@ let exp_of_fundef (FD_aux (FD_function (_, _, _, funcls), annot)) value =
let pexp_of_funcl (FCL_aux (FCL_Funcl (_, pexp), _)) = pexp in
E_aux (E_case (exp_of_value value, List.map pexp_of_funcl funcls), annot)
-let rec ast_letbinds (Defs defs) =
+let rec defs_letbinds defs =
match defs with
| [] -> []
- | DEF_val lb :: defs -> lb :: ast_letbinds (Defs defs)
- | _ :: defs -> ast_letbinds (Defs defs)
+ | DEF_val lb :: defs -> lb :: defs_letbinds defs
+ | _ :: defs -> defs_letbinds defs
let initial_lstate =
{ locals = Bindings.empty }
@@ -945,11 +946,11 @@ let rec run_frame frame =
let eval_exp state exp =
run_frame (Step (lazy "", state, return exp, []))
-let initial_gstate primops ast env =
+let initial_gstate primops defs env =
{ registers = Bindings.empty;
allow_registers = true;
primops = primops;
- letbinds = ast_letbinds ast;
+ letbinds = defs_letbinds defs;
fundefs = Bindings.empty;
last_write_ea = None;
typecheck_env = env;
@@ -972,14 +973,14 @@ let rec initialize_registers allow_registers gstate =
| _ -> gstate
in
function
- | Defs (def :: defs) ->
- initialize_registers allow_registers (process_def def) (Defs defs)
- | Defs [] -> gstate
+ | def :: defs ->
+ initialize_registers allow_registers (process_def def) defs
+ | [] -> gstate
-let initial_state ?(registers=true) ast env primops =
- let gstate = initial_gstate primops ast env in
+let initial_state ?(registers=true) (Defs defs) env primops =
+ let gstate = initial_gstate primops defs env in
let gstate =
- { (initialize_registers registers gstate ast)
+ { (initialize_registers registers gstate defs)
with allow_registers = registers }
in
initial_lstate, gstate