package p4spectec
Source file coverage_instr.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21open Lang open Sl module ICov = Coverage.Instr.Single module Value = Runtime.Value let make () = (* Instruction coverage and a reader for it *) let coverage = ref ICov.empty in let read () = !coverage in (* Instruction coverage measurement handler *) let module H : Handler.HANDLER = struct include Handler.Default let init_spec (spec : Handler.spec) : unit = match spec with SL spec_sl -> coverage := ICov.init spec_sl | _ -> () let on_instr (instr : instr) : unit = coverage := ICov.hit !coverage instr.note.iid end in (* Return the handler and the reader *) ((module H : Handler.HANDLER), read)