diff options
| author | Robert Norton | 2017-04-19 12:16:00 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-04-20 11:06:05 +0100 |
| commit | d11cd6e87c635d843759d10f9173c1a28ff3c62b (patch) | |
| tree | 4bf98003feaeb9eb327ccca39be86e5a5f91e264 | |
| parent | 3ff6d30fe20aec5b690d61f5519d695f19094c52 (diff) | |
attempt to optimise performance if not tracing writes.
| -rw-r--r-- | src/gen_lib/sail_values.ml | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/gen_lib/sail_values.ml b/src/gen_lib/sail_values.ml index 600faddc..90eb69fe 100644 --- a/src/gen_lib/sail_values.ml +++ b/src/gen_lib/sail_values.ml @@ -2,8 +2,7 @@ open Big_int_Z open Printf let trace_writes = ref false -let tracef : ('a, out_channel, unit) format -> 'a = - function f -> if !trace_writes then printf f else ifprintf stderr f +let tracef = printf (* only expected to be 0, 1, 2; 2 represents undef *) type vbit = Vone | Vzero | Vundef @@ -163,12 +162,14 @@ let get_register_field_bit reg field = let set_register register value = match register,value with | Vregister(a,_,_,name,_), Vregister(new_v,_,_,_,_) -> begin - tracef "%s <- %s\n" name (string_of_value value); + if !trace_writes then + tracef "%s <- %s\n" name (string_of_value value); a := !new_v end | Vregister(a,_,_,name,_), Vvector(new_v,_,_) -> begin - tracef "%s <- %s\n" name (string_of_value value); + if !trace_writes then + tracef "%s <- %s\n" name (string_of_value value); a := new_v end | _ -> failwith "set_register of non-register" @@ -227,7 +228,8 @@ let set_register_field_v reg field new_v = match reg with | Vregister(array,start,dir,name,fields) -> begin - tracef "%s[%s] <- %s\n" name field (string_of_value new_v); + if !trace_writes then + tracef "%s[%s] <- %s\n" name field (string_of_value new_v); (match List.assoc field fields with | (i,j) -> if i = j @@ -240,7 +242,8 @@ let set_register_field_bit reg field new_v = match reg with | Vregister(array,start,dir,name,fields) -> begin - tracef "%s.%s <- %s\n" name field (string_of_bit new_v); + if !trace_writes then + tracef "%s.%s <- %s\n" name field (string_of_bit new_v); (match List.assoc field fields with | (i,j) -> if i = j |
