summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
authorGabriel Kerneis2014-04-04 11:45:43 +0100
committerGabriel Kerneis2014-04-04 11:45:43 +0100
commit7087e8973bc4ecbe6366ea23425ff46d3ebe2041 (patch)
treee21407397bc0742a43549a1f598b691ec204176b /src/lem_interp
parent78703f987512fbc90ccccea4b813f24fe0ccd49a (diff)
Cosmetic improvements (statistics, --quiet)
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/run_interp.ml16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lem_interp/run_interp.ml b/src/lem_interp/run_interp.ml
index 556e61c6..990930ba 100644
--- a/src/lem_interp/run_interp.ml
+++ b/src/lem_interp/run_interp.ml
@@ -201,6 +201,8 @@ let rec perform_action ((reg, mem) as env) = function
| _ -> assert false
;;
+let debug = ref true
+let debugf : ('a, out_channel, unit) format -> 'a = function f -> if !debug then eprintf f else ifprintf stderr f
let run
?(entry=E_aux(E_app(Id_aux((Id "main"),Unknown), [E_aux(E_lit (L_aux(L_unit,Unknown)),(Unknown,None))]),(Unknown,None)))
@@ -208,20 +210,20 @@ let run
?(mem=Mem.empty)
(name, test) =
let rec loop env = function
- | Value (v, _) -> eprintf "%s: returned %s\n" name (val_to_string v); true, env
+ | Value (v, _) -> debugf "%s: returned %s\n" name (val_to_string v); true, env
| Action (a, s) ->
- eprintf "%s: suspended on action %s\n" name (act_to_string a);
- (*eprintf "%s: suspended on action %s, with stack %s\n" name (act_to_string a) (stack_to_string s);*)
+ debugf "%s: suspended on action %s\n" name (act_to_string a);
+ (*debugf "%s: suspended on action %s, with stack %s\n" name (act_to_string a) (stack_to_string s);*)
let return, env' = perform_action env a in
- eprintf "%s: action returned %s\n" name (val_to_string return);
+ debugf "%s: action returned %s\n" name (val_to_string return);
loop env' (resume test s return)
- | Error(l, e) -> eprintf "%s: %s: error: %s\n" name (loc_to_string l) e; false, env in
- eprintf "%s: starting\n" name;
+ | Error(l, e) -> debugf "%s: %s: error: %s\n" name (loc_to_string l) e; false, env in
+ debugf "%s: starting\n" name;
try
Printexc.record_backtrace true;
loop (reg, mem) (interp test entry)
with e ->
let trace = Printexc.get_backtrace () in
- eprintf "%s: interpretor error %s\n%s\n" name (Printexc.to_string e) trace;
+ debugf "%s: interpretor error %s\n%s\n" name (Printexc.to_string e) trace;
false, (reg, mem)
;;