Skip to content

Commit aa1941e

Browse files
committed
Revert "Optimize fixpoint batch handling with single BFS expansion"
This reverts commit 42d0efe.
1 parent 42d0efe commit aa1941e

File tree

1 file changed

+9
-26
lines changed

1 file changed

+9
-26
lines changed

analysis/reactive/src/Reactive.ml

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,42 +1081,25 @@ let fixpoint ~(init : ('k, unit) t) ~(edges : ('k, 'k list) t) () : ('k, unit) t
10811081
my_stats.updates_received <- my_stats.updates_received + 1;
10821082
match delta with
10831083
| Batch entries ->
1084-
(* OPTIMIZED: Process all entries with single BFS instead of per-entry BFS *)
1085-
(* Phase 1: Separate adds and removes, collect new roots *)
1086-
let new_roots = ref [] in
1087-
let removes = ref [] in
1084+
(* Process all init entries as a batch *)
1085+
let all_added = ref [] in
1086+
let all_removed = ref [] in
10881087
entries
10891088
|> List.iter (fun (k, v_opt) ->
1090-
match v_opt with
1091-
| Some () ->
1092-
if not (Hashtbl.mem state.base k) then begin
1093-
Hashtbl.replace state.base k ();
1094-
new_roots := k :: !new_roots
1095-
end
1096-
| None -> removes := k :: !removes);
1097-
1098-
(* Phase 2: Single BFS expansion from all new roots *)
1099-
let added_from_expansion =
1100-
if !new_roots <> [] then Fixpoint.expand state ~frontier:!new_roots
1101-
else []
1102-
in
1103-
1104-
(* Phase 3: Handle removes (may trigger contraction) *)
1105-
let all_added = ref added_from_expansion in
1106-
let all_removed = ref [] in
1107-
!removes
1108-
|> List.iter (fun k ->
1109-
let added, removed =
1110-
Fixpoint.apply_init_delta state (Remove k)
1089+
let d =
1090+
match v_opt with
1091+
| Some () -> Set (k, ())
1092+
| None -> Remove k
11111093
in
1094+
let added, removed = Fixpoint.apply_init_delta state d in
11121095
all_added := added @ !all_added;
11131096
all_removed := removed @ !all_removed);
1114-
11151097
(* Deduplicate and emit as batch *)
11161098
let added_set = Hashtbl.create (List.length !all_added) in
11171099
List.iter (fun k -> Hashtbl.replace added_set k ()) !all_added;
11181100
let removed_set = Hashtbl.create (List.length !all_removed) in
11191101
List.iter (fun k -> Hashtbl.replace removed_set k ()) !all_removed;
1102+
(* Net changes: added if in added_set but not removed_set, etc. *)
11201103
let net_added =
11211104
Hashtbl.fold
11221105
(fun k () acc -> if Hashtbl.mem removed_set k then acc else k :: acc)

0 commit comments

Comments
 (0)