File tree Expand file tree Collapse file tree 3 files changed +50
-4
lines changed Expand file tree Collapse file tree 3 files changed +50
-4
lines changed Original file line number Diff line number Diff line change @@ -290,7 +290,8 @@ let _set_to_str s =
290290 IntSet. to_seq s |> List. of_seq |> List. map Int. to_string |> String. concat " , "
291291
292292let rec explore_source depth func state sleep_sets =
293- let sleep = last_element sleep_sets in
293+ let _sleep = last_element sleep_sets in
294+ let sleep = ref IntSet. empty in
294295 let s = last_element state in
295296 (* Printf.printf "[depth=%d] explore (backtrack=[%s], sleep=[%s], enabled=[%s])\n%!" depth
296297 (set_to_str s.backtrack) (set_to_str !sleep) (set_to_str s.enabled); *)
@@ -442,17 +443,17 @@ let rec explore_source depth func state sleep_sets =
442443 (List.length prefix - 1)
443444 prefix_top.run_proc
444445 (atomic_op_str prefix_top.run_op); *)
445- let prefix_top_sleep =
446+ let _prefix_top_sleep =
446447 ! (List. nth sleep_sets (List. length prefix - 1 ))
447448 in
448449 if
449450 IntSet. (
450451 cardinal
451- (inter prefix_top.backtrack (diff initials prefix_top_sleep )))
452+ (inter prefix_top.backtrack ( initials )))
452453 = 0
453454 then (
454455 let _initial =
455- match IntSet. (min_elt_opt (diff initials prefix_top_sleep )) with
456+ match IntSet. (min_elt_opt ( initials )) with
456457 | Some initial -> initial
457458 | None -> IntSet. min_elt initials
458459 in
Original file line number Diff line number Diff line change 1+ module Atomic = Dscheck. TracedAtomic
2+
3+ let test () =
4+ let c = Atomic. make 0 in
5+ let b = Atomic. make 0 in
6+ let ok = Atomic. make false in
7+
8+ Atomic. spawn (fun () -> Atomic. set b 1 );
9+ Atomic. spawn (fun () ->
10+ Atomic. set c 1 ;
11+ Atomic. set b 2 );
12+ Atomic. spawn (fun () ->
13+ if Atomic. get c = 0 then if Atomic. get b = 0 then Atomic. set ok true );
14+
15+ Atomic. final (fun () ->
16+ Format. printf " b=%i c=%i ok=%b@." (Atomic. get b) (Atomic. get c)
17+ (Atomic. get ok))
18+
19+
20+ let () = Atomic. trace test
Original file line number Diff line number Diff line change 1+ module Atomic = Dscheck. TracedAtomic
2+
3+ let test () =
4+ let x = Atomic. make 0 in
5+ let y = Atomic. make 0 in
6+ let z = Atomic. make 0 in
7+
8+ let tmp = ref (- 1 ) in
9+ Atomic. spawn (fun () -> tmp := Atomic. get x);
10+ Atomic. spawn (fun () -> Atomic. set y 1 );
11+
12+ Atomic. spawn (fun () ->
13+ let m = Atomic. get y in
14+ if m = 0 then Atomic. set z 1 );
15+
16+ Atomic. spawn (fun () ->
17+ let n = Atomic. get z in
18+ let l = Atomic. get y in
19+ if n = 1 then if l = 0 then Atomic. set x 1 );
20+
21+ Atomic. final (fun () ->
22+ Format. printf " tmp=%d x=%d y=%d z=%d\n %!" ! tmp (Atomic. get x)
23+ (Atomic. get y) (Atomic. get z))
24+
25+ let () = Atomic. trace test
You can’t perform that action at this time.
0 commit comments