Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55719274 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt
Browse files

tracing/filter: Optimize short ciruit check



The test if we should break out early for OR and AND operations
can be optimized by comparing the current result with
  (pred->op == OP_OR)

That is if the result is true and the op is an OP_OR, or
if the result is false and the op is not an OP_OR (thus an OP_AND)
we can break out early in either case. Otherwise we continue
processing.

Cc: Tom Zanussi <tzanussi@gmail.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 61e9dea2
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -426,9 +426,15 @@ int filter_match_preds(struct event_filter *filter, void *rec)
					       pred->parent, &move);
			continue;
		case MOVE_UP_FROM_LEFT:
			/* Check for short circuits */
			if ((match && pred->op == OP_OR) ||
			    (!match && pred->op == OP_AND)) {
			/*
			 * Check for short circuits.
			 *
			 * Optimization: !!match == (pred->op == OP_OR)
			 *   is the same as:
			 * if ((match && pred->op == OP_OR) ||
			 *     (!match && pred->op == OP_AND))
			 */
			if (!!match == (pred->op == OP_OR)) {
				if (pred == root)
					break;
				pred = get_pred_parent(pred, preds,