On Fri, Aug 12, 2016 at 05:33:46PM +0200, Lluís Vilanova wrote: > An explicit if/else is clearer than arithmetic assuming #true is 1, > while the compiler should be able to generate just as optimal code. > > Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> > --- > stubs/trace-control.c | 17 +++++++++++++++-- > trace/control-target.c | 31 ++++++++++++++++++++++++++----- > 2 files changed, 41 insertions(+), 7 deletions(-)
Reviewed-by: Daniel P. Berrange <berra...@redhat.com> > > diff --git a/stubs/trace-control.c b/stubs/trace-control.c > index 3740c38..2dfcd9f 100644 > --- a/stubs/trace-control.c > +++ b/stubs/trace-control.c > @@ -19,10 +19,23 @@ void trace_event_set_state_dynamic_init(TraceEvent *ev, > bool state) > void trace_event_set_state_dynamic(TraceEvent *ev, bool state) > { > TraceEventID id; > + bool state_pre; > assert(trace_event_get_state_static(ev)); > id = trace_event_get_id(ev); > - trace_events_enabled_count += state - trace_events_dstate[id]; > - trace_events_dstate[id] = state; > + /* > + * We ignore the "vcpu" property here, since there's no target code. Then > + * dstate can only be 1 or 0. > + */ > + state_pre = trace_events_dstate[id]; > + if (state_pre != state) { > + if (state) { > + trace_events_enabled_count++; > + trace_events_dstate[id] = 1; > + } else { > + trace_events_enabled_count--; > + trace_events_dstate[id] = 0; > + } > + } > } > > void trace_event_set_vcpu_state_dynamic(CPUState *vcpu, > diff --git a/trace/control-target.c b/trace/control-target.c > index 4ee3733..72081e2 100644 > --- a/trace/control-target.c > +++ b/trace/control-target.c > @@ -16,10 +16,22 @@ > void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state) > { > TraceEventID id = trace_event_get_id(ev); > + bool state_pre; > assert(trace_event_get_state_static(ev)); > - /* Ignore "vcpu" property, since no vCPUs have been created yet */ > - trace_events_enabled_count += state - trace_events_dstate[id]; > - trace_events_dstate[id] = state; > + /* > + * We ignore the "vcpu" property here, since no vCPUs have been created > + * yet. Then dstate can only be 1 or 0. > + */ > + state_pre = trace_events_dstate[id]; > + if (state_pre != state) { > + if (state) { > + trace_events_enabled_count++; > + trace_events_dstate[id] = 1; > + } else { > + trace_events_enabled_count--; > + trace_events_dstate[id] = 0; > + } > + } > } > > void trace_event_set_state_dynamic(TraceEvent *ev, bool state) > @@ -31,9 +43,18 @@ void trace_event_set_state_dynamic(TraceEvent *ev, bool > state) > trace_event_set_vcpu_state_dynamic(vcpu, ev, state); > } > } else { > + /* Without the "vcpu" property, dstate can only be 1 or 0 */ > TraceEventID id = trace_event_get_id(ev); > - trace_events_enabled_count += state - trace_events_dstate[id]; > - trace_events_dstate[id] = state; > + bool state_pre = trace_events_dstate[id]; > + if (state_pre != state) { > + if (state) { > + trace_events_enabled_count++; > + trace_events_dstate[id] = 1; > + } else { > + trace_events_enabled_count--; > + trace_events_dstate[id] = 0; > + } > + } > } > } > > Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|