equal
deleted
inserted
replaced
46 fun assign (v as Var {name, lock, cond, var}) x = |
46 fun assign (v as Var {name, lock, cond, var}) x = |
47 Multithreading.synchronized name lock (fn () => |
47 Multithreading.synchronized name lock (fn () => |
48 (case peek v of |
48 (case peek v of |
49 SOME _ => raise Fail ("Duplicate assignment to " ^ name) |
49 SOME _ => raise Fail ("Duplicate assignment to " ^ name) |
50 | NONE => |
50 | NONE => |
51 uninterruptible (fn _ => fn () => |
51 Multithreading.uninterruptible (fn _ => fn () => |
52 (SingleAssignment.saset (var, x); ConditionVar.broadcast cond)) ())); |
52 (SingleAssignment.saset (var, x); ConditionVar.broadcast cond)) ())); |
53 |
53 |
54 end; |
54 end; |
55 |
55 |
56 end; |
56 end; |