mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-29 13:23:23 +01:00
perf annotate: Move raw_comment and raw_func_start fields out of 'struct ins_operands'
Thoese two fields are used only for the jump_ops, so move them into the union to save some bytes. Also add jump__delete() callback not to free the fields as they didn't allocate new strings. Signed-off-by: Namhyung Kim <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Huacai Chen <[email protected]> Cc: Ian Rogers <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Masami Hiramatsu (Google) <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: WANG Rui <[email protected]> Cc: [email protected] Cc: [email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
1 parent
ded8c48497
commit
fb7fd2a14a
3 files changed
+20
-9
No files matched your search
@@ -61,10 +61,10 @@ static int loongarch_jump__parse(struct arch *arch, struct ins_operands *ops, st
|
||||
const char *c = strchr(ops->raw, '#');
|
||||
u64 start, end;
|
||||
|
||||
ops->raw_comment = strchr(ops->raw, arch->objdump.comment_char);
|
||||
ops->raw_func_start = strchr(ops->raw, '<');
|
||||
ops->jump.raw_comment = strchr(ops->raw, arch->objdump.comment_char);
|
||||
ops->jump.raw_func_start = strchr(ops->raw, '<');
|
||||
|
||||
if (ops->raw_func_start && c > ops->raw_func_start)
|
||||
if (ops->jump.raw_func_start && c > ops->jump.raw_func_start)
|
||||
c = NULL;
|
||||
|
||||
if (c++ != NULL)
|
||||
|
||||
@@ -340,10 +340,10 @@ bool ins__is_call(const struct ins *ins)
|
||||
*/
|
||||
static inline const char *validate_comma(const char *c, struct ins_operands *ops)
|
||||
{
|
||||
if (ops->raw_comment && c > ops->raw_comment)
|
||||
if (ops->jump.raw_comment && c > ops->jump.raw_comment)
|
||||
return NULL;
|
||||
|
||||
if (ops->raw_func_start && c > ops->raw_func_start)
|
||||
if (ops->jump.raw_func_start && c > ops->jump.raw_func_start)
|
||||
return NULL;
|
||||
|
||||
return c;
|
||||
@@ -359,8 +359,8 @@ static int jump__parse(struct arch *arch, struct ins_operands *ops, struct map_s
|
||||
const char *c = strchr(ops->raw, ',');
|
||||
u64 start, end;
|
||||
|
||||
ops->raw_comment = strchr(ops->raw, arch->objdump.comment_char);
|
||||
ops->raw_func_start = strchr(ops->raw, '<');
|
||||
ops->jump.raw_comment = strchr(ops->raw, arch->objdump.comment_char);
|
||||
ops->jump.raw_func_start = strchr(ops->raw, '<');
|
||||
|
||||
c = validate_comma(c, ops);
|
||||
|
||||
@@ -462,7 +462,16 @@ static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
|
||||
ops->target.offset);
|
||||
}
|
||||
|
||||
static void jump__delete(struct ins_operands *ops __maybe_unused)
|
||||
{
|
||||
/*
|
||||
* The ops->jump.raw_comment and ops->jump.raw_func_start belong to the
|
||||
* raw string, don't free them.
|
||||
*/
|
||||
}
|
||||
|
||||
static struct ins_ops jump_ops = {
|
||||
.free = jump__delete,
|
||||
.parse = jump__parse,
|
||||
.scnprintf = jump__scnprintf,
|
||||
};
|
||||
|
||||
@@ -31,8 +31,6 @@ struct ins {
|
||||
|
||||
struct ins_operands {
|
||||
char *raw;
|
||||
char *raw_comment;
|
||||
char *raw_func_start;
|
||||
struct {
|
||||
char *raw;
|
||||
char *name;
|
||||
@@ -52,6 +50,10 @@ struct ins_operands {
|
||||
struct ins ins;
|
||||
struct ins_operands *ops;
|
||||
} locked;
|
||||
struct {
|
||||
char *raw_comment;
|
||||
char *raw_func_start;
|
||||
} jump;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user