From 00ac995cda8fef7262b7d077c091c6fffc64045a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Mon, 4 Jul 2022 11:30:14 +0200
Subject: [PATCH] [from] Uses Eva.Cvalue_callbacks hooks instead of Db.Value.

---
 src/plugins/from/callwise.ml | 31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/src/plugins/from/callwise.ml b/src/plugins/from/callwise.ml
index 4891f63d876..f1119b1bed4 100644
--- a/src/plugins/from/callwise.ml
+++ b/src/plugins/from/callwise.ml
@@ -64,9 +64,9 @@ let record_callwise_dependencies_in_db call_site froms =
     Tbl.replace call_site (Function_Froms.join previous froms)
   with Not_found -> Tbl.add call_site froms
 
-let call_for_individual_froms (call_type, value_initial_state, call_stack) =
+let call_for_individual_froms callstack _kf call_type value_initial_state =
   if From_parameters.ForceCallDeps.get () then begin
-    let current_function, call_site = List.hd call_stack in
+    let current_function, call_site = List.hd callstack in
     let register_from froms =
       record_callwise_dependencies_in_db call_site froms;
       match !call_froms_stack with
@@ -151,15 +151,13 @@ let compute_call_from_value_states current_function states =
   Callwise_Froms.compute_and_return current_function
 
 
-let record_for_individual_froms (call_stack, value_res) =
+let record_for_individual_froms callstack cur_kf value_res =
   if From_parameters.ForceCallDeps.get () then begin
     let froms = match value_res with
-      | Value_types.Normal (states, _after_states)
-      | Value_types.NormalStore ((states, _after_states), _) ->
-        let cur_kf, _ = List.hd call_stack in
+      | Eva.Cvalue_callbacks.Store ({before_stmts}, memexec_counter) ->
         let froms =
           if Eva.Analysis.save_results cur_kf
-          then compute_call_from_value_states cur_kf (Lazy.force states)
+          then compute_call_from_value_states cur_kf (Lazy.force before_stmts)
           else Function_Froms.top
         in
         let pre_state = match !call_froms_stack with
@@ -168,28 +166,21 @@ let record_for_individual_froms (call_stack, value_res) =
         in
         if From_parameters.VerifyAssigns.get () then
           !Db.Value.verify_assigns_froms cur_kf ~pre:pre_state froms;
-        (match value_res with
-         | Value_types.NormalStore (_, memexec_counter) ->
-           MemExec.replace memexec_counter froms
-         | _ -> ());
+        MemExec.replace memexec_counter froms;
         froms
 
-      | Value_types.Reuse counter ->
+      | Reuse counter ->
         MemExec.find counter
     in
-    end_record call_stack froms
+    end_record callstack froms
 
   end
 
 
 (* Register our callbacks inside the value analysis *)
-let () = From_parameters.ForceCallDeps.add_update_hook
-    (fun _bold bnew ->
-       if bnew then begin
-         Db.Value.Call_Type_Value_Callbacks.extend_once call_for_individual_froms;
-         Db.Value.Record_Value_Callbacks_New.extend_once
-           record_for_individual_froms;
-       end)
+let () =
+  Eva.Cvalue_callbacks.register_call_hook call_for_individual_froms;
+  Eva.Cvalue_callbacks.register_call_results_hook record_for_individual_froms
 
 
 let force_compute_all_calldeps ()=
-- 
GitLab