[PATCH v2 4/7] perf annotate: Simplify width calculation in annotation_line__write()

From: Namhyung Kim
Date: Sat Jun 07 2025 - 19:26:23 EST


The width is updated after each part is printed. It can skip the output
processing if the total printed size is bigger than the width.

No function changes intended.

Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
---
tools/perf/util/annotate.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 2089feb7c700ac4d..fb7a63b8e253ca9a 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1992,6 +1992,7 @@ void annotation_line__write(struct annotation_line *al, struct annotation *notes
symbol_conf.show_nr_samples ? "Samples" : "Percent");
}
}
+ width -= pcnt_width;

if (notes->branch) {
if (al->cycles && al->cycles->ipc)
@@ -2055,11 +2056,12 @@ void annotation_line__write(struct annotation_line *al, struct annotation *notes
obj__printf(obj, "%*s", ANNOTATION__AVG_IPC_WIDTH, bf);
}
}
+ width -= cycles_width;

obj__printf(obj, " ");

if (!*al->line)
- obj__printf(obj, "%-*s", width - pcnt_width - cycles_width, " ");
+ obj__printf(obj, "%-*s", width, " ");
else if (al->offset == -1) {
if (al->line_nr && annotate_opts.show_linenr)
printed = scnprintf(bf, sizeof(bf), "%-*d ",
@@ -2068,7 +2070,7 @@ void annotation_line__write(struct annotation_line *al, struct annotation *notes
printed = scnprintf(bf, sizeof(bf), "%-*s ",
notes->src->widths.addr, " ");
obj__printf(obj, bf);
- obj__printf(obj, "%-*s", width - printed - pcnt_width - cycles_width + 1, al->line);
+ obj__printf(obj, "%-*s", width - printed + 1, al->line);
} else {
u64 addr = al->offset;
int color = -1;
@@ -2111,9 +2113,11 @@ void annotation_line__write(struct annotation_line *al, struct annotation *notes
if (change_color)
obj__set_color(obj, color);

+ width -= printed + 3;
+
disasm_line__write(disasm_line(al), notes, obj, bf, sizeof(bf), obj__printf, obj__write_graph);

- obj__printf(obj, "%-*s", width - pcnt_width - cycles_width - 3 - printed, bf);
+ obj__printf(obj, "%-*s", width, bf);

(void)apd;
}
--
2.49.0