From 24a68dbba2d9ed05718b1121ceaf0729fc3a3a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Wed, 20 Nov 2019 15:20:53 +0100 Subject: [PATCH] Show equivalence classes in html output --- src/html_renderer.ml | 15 +++++++++++++++ src/render_html.jingoo | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/html_renderer.ml b/src/html_renderer.ml index 4855097..d493b42 100644 --- a/src/html_renderer.ml +++ b/src/html_renderer.ml @@ -28,6 +28,7 @@ let render_prog_box annotated_prog = Jingoo.Jg_types.(Renderer.AnnotAsm.( ("bound", box_string @@ render_addr bound); ("data", box_string @@ Format.sprintf "[%d] File %d, %d:%d" data.box_class_id data.box_file data.box_line data.box_col); + ("box_eq", box_int data.box_class_id); ] |> box_obj) row.instr_annot.Renderer.events) @@ -49,6 +50,19 @@ let render_progs_box annotated_progs = Jingoo.Jg_types.( |> box_list ) +module IntSet = Set.Make(struct type t = int let compare = compare end) + +let prog_box_classes render_data = Jingoo.Jg_types.( + List.fold_left (fun accu prog -> + List.fold_left (fun accu (Renderer.TaggedRange(_, _, box)) -> + IntSet.add box.box_class_id accu) + accu prog.Renderer.render_boxes) + IntSet.empty render_data + |> IntSet.elements + |> List.map box_int + |> box_list + ) + (** [render multi_render_data] renders the given [render_data] to a string. *) let render multi_render_data = Jingoo.( let annotated_progs = List.map (fun render_data -> @@ -56,6 +70,7 @@ let render multi_render_data = Jingoo.( Renderer.render_data_to_annotated_asm render_data) multi_render_data in let models = [ ("progs", render_progs_box annotated_progs); + ("box_classes", prog_box_classes multi_render_data); ] in Jg_template.from_file "src/render_html.jingoo" ~models:models ) diff --git a/src/render_html.jingoo b/src/render_html.jingoo index f7e115f..f63dc5d 100644 --- a/src/render_html.jingoo +++ b/src/render_html.jingoo @@ -50,6 +50,26 @@ background-color: #ffffb4; } + +
@@ -67,9 +87,10 @@ {% for row in subroutine.sub_asm %} {% for event in row.instr_events %} {% if event.typ == "start" %} -
+
{% endif %} {% endfor %}
@@ -89,5 +110,11 @@
{% endfor %}
+ +