summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--toplevel/topdirs.ml3
-rw-r--r--toplevel/trace.ml6
-rw-r--r--toplevel/trace.mli2
3 files changed, 6 insertions, 5 deletions
diff --git a/toplevel/topdirs.ml b/toplevel/topdirs.ml
index 42c97a764..c8bfc1852 100644
--- a/toplevel/topdirs.ml
+++ b/toplevel/topdirs.ml
@@ -233,7 +233,8 @@ let dir_trace lid =
closure = clos;
initial_closure = old_clos;
instrumented_fun =
- instrument_closure lid (Ctype.instance desc.val_type)
+ instrument_closure !toplevel_env lid
+ (Ctype.instance desc.val_type)
old_clos}
:: !traced_functions;
(* Redirect the code field of the old closure *)
diff --git a/toplevel/trace.ml b/toplevel/trace.ml
index 86d9836c9..5e14f585f 100644
--- a/toplevel/trace.ml
+++ b/toplevel/trace.ml
@@ -52,15 +52,15 @@ let overwrite_closure dst src =
(* Return a closure that performs as the given closure, but also
traces its execution. *)
-let rec instrument_closure name clos_typ =
- match (Ctype.repr clos_typ).desc with
+let rec instrument_closure env name clos_typ =
+ match (Ctype.repr(Ctype.expand_root env clos_typ)).desc with
Tarrow(t1, t2) ->
let starred_name =
match name with
Lident s -> Lident(s ^ "*")
| Ldot(lid, s) -> Ldot(lid, s ^ "*")
| Lapply(l1, l2) -> fatal_error "Trace.instrument_closure" in
- let trace_res = instrument_closure starred_name t2 in
+ let trace_res = instrument_closure env starred_name t2 in
(fun clos_val ->
Obj.repr(fun arg ->
open_hovbox 2;
diff --git a/toplevel/trace.mli b/toplevel/trace.mli
index d9ebe1b05..149b2849d 100644
--- a/toplevel/trace.mli
+++ b/toplevel/trace.mli
@@ -24,5 +24,5 @@ val is_traced: Obj.t -> Path.t option
val copy_closure: Obj.t -> Obj.t
val overwrite_closure: Obj.t -> Obj.t -> unit
val instrument_closure:
- Longident.t -> Typedtree.type_expr -> Obj.t -> Obj.t
+ Env.t -> Longident.t -> Typedtree.type_expr -> Obj.t -> Obj.t
val print_trace: Obj.t -> Obj.t -> Obj.t