From fd13ec718014c58fbb3fede23f6e6369d9e15c55 Mon Sep 17 00:00:00 2001 From: Jon French Date: Wed, 13 Mar 2019 17:09:50 +0000 Subject: Interpreter: error handling when calling primops --- src/interpreter.ml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/interpreter.ml') diff --git a/src/interpreter.ml b/src/interpreter.ml index 33370816..34dcf590 100644 --- a/src/interpreter.ml +++ b/src/interpreter.ml @@ -422,7 +422,11 @@ let rec step (E_aux (e_aux, annot) as orig_exp) = fail "Wrong number of parameters to barrier intrinsic" end | _ -> - get_primop extern >>= fun op -> return (exp_of_value (op (List.map value_of_exp evaluated))) + prerr_endline ("calling get_primop for '" ^ extern ^ "' with args (" ^ String.concat ", " (List.map string_of_exp evaluated) ^ ")"); + get_primop extern >>= + fun op -> try + return (exp_of_value (op (List.map value_of_exp evaluated))) + with _ as exc -> fail ("Exception calling primop '" ^ extern ^ "': " ^ Printexc.to_string exc) end | [] -> call id (List.map value_of_exp evaluated) >>= -- cgit v1.2.3