Commit 13b9012a authored by Stephane Eranian's avatar Stephane Eranian Committed by Arnaldo Carvalho de Melo

perf jit: Remove unecessary padding in jitdump file

This patch removes all the string padding generated in the jitdump file.
They are not necessary and were adding unnecessary complexity. Modern
processors can handle unaligned accesses quite well. The perf.data/
jitdump file are always post-processed, no need to add extra complexity
for no real gain.
Signed-off-by: default avatarStephane Eranian <eranian@google.com>
Cc: Anton Blanchard <anton@ozlabs.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1476356383-30100-4-git-send-email-eranian@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 621cb4e7
...@@ -44,11 +44,6 @@ ...@@ -44,11 +44,6 @@
static char jit_path[PATH_MAX]; static char jit_path[PATH_MAX];
static void *marker_addr; static void *marker_addr;
/*
* padding buffer
*/
static const char pad_bytes[7];
static inline pid_t gettid(void) static inline pid_t gettid(void)
{ {
return (pid_t)syscall(__NR_gettid); return (pid_t)syscall(__NR_gettid);
...@@ -230,7 +225,6 @@ init_arch_timestamp(void) ...@@ -230,7 +225,6 @@ init_arch_timestamp(void)
void *jvmti_open(void) void *jvmti_open(void)
{ {
int pad_cnt;
char dump_path[PATH_MAX]; char dump_path[PATH_MAX];
struct jitheader header; struct jitheader header;
int fd; int fd;
...@@ -288,10 +282,6 @@ void *jvmti_open(void) ...@@ -288,10 +282,6 @@ void *jvmti_open(void)
header.total_size = sizeof(header); header.total_size = sizeof(header);
header.pid = getpid(); header.pid = getpid();
/* calculate amount of padding '\0' */
pad_cnt = PADDING_8ALIGNED(header.total_size);
header.total_size += pad_cnt;
header.timestamp = perf_get_timestamp(); header.timestamp = perf_get_timestamp();
if (use_arch_timestamp) if (use_arch_timestamp)
...@@ -301,13 +291,6 @@ void *jvmti_open(void) ...@@ -301,13 +291,6 @@ void *jvmti_open(void)
warn("jvmti: cannot write dumpfile header"); warn("jvmti: cannot write dumpfile header");
goto error; goto error;
} }
/* write padding '\0' if necessary */
if (pad_cnt && !fwrite(pad_bytes, pad_cnt, 1, fp)) {
warn("jvmti: cannot write dumpfile header padding");
goto error;
}
return fp; return fp;
error: error:
fclose(fp); fclose(fp);
...@@ -349,7 +332,6 @@ jvmti_write_code(void *agent, char const *sym, ...@@ -349,7 +332,6 @@ jvmti_write_code(void *agent, char const *sym,
static int code_generation = 1; static int code_generation = 1;
struct jr_code_load rec; struct jr_code_load rec;
size_t sym_len; size_t sym_len;
size_t padding_count;
FILE *fp = agent; FILE *fp = agent;
int ret = -1; int ret = -1;
...@@ -366,8 +348,6 @@ jvmti_write_code(void *agent, char const *sym, ...@@ -366,8 +348,6 @@ jvmti_write_code(void *agent, char const *sym,
rec.p.id = JIT_CODE_LOAD; rec.p.id = JIT_CODE_LOAD;
rec.p.total_size = sizeof(rec) + sym_len; rec.p.total_size = sizeof(rec) + sym_len;
padding_count = PADDING_8ALIGNED(rec.p.total_size);
rec.p. total_size += padding_count;
rec.p.timestamp = perf_get_timestamp(); rec.p.timestamp = perf_get_timestamp();
rec.code_size = size; rec.code_size = size;
...@@ -393,9 +373,6 @@ jvmti_write_code(void *agent, char const *sym, ...@@ -393,9 +373,6 @@ jvmti_write_code(void *agent, char const *sym,
ret = fwrite_unlocked(&rec, sizeof(rec), 1, fp); ret = fwrite_unlocked(&rec, sizeof(rec), 1, fp);
fwrite_unlocked(sym, sym_len, 1, fp); fwrite_unlocked(sym, sym_len, 1, fp);
if (padding_count)
fwrite_unlocked(pad_bytes, padding_count, 1, fp);
if (code) if (code)
fwrite_unlocked(code, size, 1, fp); fwrite_unlocked(code, size, 1, fp);
...@@ -412,7 +389,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, ...@@ -412,7 +389,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
{ {
struct jr_code_debug_info rec; struct jr_code_debug_info rec;
size_t sret, len, size, flen; size_t sret, len, size, flen;
size_t padding_count;
uint64_t addr; uint64_t addr;
const char *fn = file; const char *fn = file;
FILE *fp = agent; FILE *fp = agent;
...@@ -443,16 +419,10 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, ...@@ -443,16 +419,10 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
* int : line number * int : line number
* int : column discriminator * int : column discriminator
* file[] : source file name * file[] : source file name
* padding : pad to multiple of 8 bytes
*/ */
size += nr_lines * sizeof(struct debug_entry); size += nr_lines * sizeof(struct debug_entry);
size += flen * nr_lines; size += flen * nr_lines;
/* rec.p.total_size = size;
* pad to 8 bytes
*/
padding_count = PADDING_8ALIGNED(size);
rec.p.total_size = size + padding_count;
/* /*
* If JVM is multi-threaded, nultiple concurrent calls to agent * If JVM is multi-threaded, nultiple concurrent calls to agent
...@@ -486,12 +456,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, ...@@ -486,12 +456,6 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file,
if (sret != 1) if (sret != 1)
goto error; goto error;
} }
if (padding_count) {
sret = fwrite_unlocked(pad_bytes, padding_count, 1, fp);
if (sret != 1)
goto error;
}
funlockfile(fp); funlockfile(fp);
return 0; return 0;
error: error:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment