Skip to content

Commit

Permalink
add mount_tree
Browse files Browse the repository at this point in the history
  • Loading branch information
joongwon committed Mar 3, 2025
1 parent 38b8af6 commit 1428f6d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
15 changes: 8 additions & 7 deletions lib/interp.ml
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,11 @@ let rec eval_mult : type a. ?re_render:int -> a Expr.t -> value =
ptph_h ~ptph:(path, P_succ) (eval_mult ~re_render) expr
| Idle | Update -> v

let mount_tree (path : Path.t) (t : tree) : unit =
Logger.mount_tree path t;
let ent = perform (Lookup_ent path) in
perform (Update_ent (path, { ent with children = t }))

let rec render (vs : view_spec) : tree =
Logger.render vs;
match vs with
Expand All @@ -348,8 +353,7 @@ let rec render (vs : view_spec) : tree =
|> vs_of_value_exn
in
let t = render vs in
let entry = perform (Lookup_ent path) in
perform (Update_ent (path, { entry with children = t }));
mount_tree path t;
perform (Checkpoint { msg = "Rendered"; checkpoint = Render_finish path });
Path path

Expand Down Expand Up @@ -379,11 +383,8 @@ let rec update (path : Path.t) (arg : value) : bool =
(*perform (Update_ent (path, { ent with children = [] }));*)
let updated, new_tree = reconcile old_tree vs in
let dec = perform (Get_dec path) in
let ent = perform (Lookup_ent path) in
let updated =
perform (Update_ent (path, { ent with children = new_tree }));
updated || Decision.(dec <> Idle)
in
mount_tree path new_tree;
let updated = updated || Decision.(dec <> Idle) in
if updated then
perform
(Checkpoint { msg = "Rendered (update)"; checkpoint = Render_finish path })
Expand Down
5 changes: 5 additions & 0 deletions lib/logger.ml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,11 @@ let eval expr =
let eval_mult expr =
Logs.debug (fun m -> m "eval_mult %a" Sexp.pp_hum (Expr.sexp_of_t expr))

let mount_tree path t =
Logs.debug (fun m ->
m "mount_tree [path: %a, t: %a]" Sexp.pp_hum (Path.sexp_of_t path)
Sexp.pp_hum (sexp_of_tree t))

let render vs =
Logs.debug (fun m -> m "render [vs: %a]" Sexp.pp (sexp_of_view_spec vs))

Expand Down

0 comments on commit 1428f6d

Please sign in to comment.