diff --git a/src/hotspot/share/ci/ciEnv.cpp b/src/hotspot/share/ci/ciEnv.cpp index 11bbf6afd10..7212b0d9023 100644 --- a/src/hotspot/share/ci/ciEnv.cpp +++ b/src/hotspot/share/ci/ciEnv.cpp @@ -1663,7 +1663,7 @@ void ciEnv::dump_replay_data_helper(outputStream* out) { NoSafepointVerifier no_safepoint; ResourceMark rm; - out->print_cr("version %d", REPLAY_VERSION); + dump_replay_data_version(out); #if INCLUDE_JVMTI out->print_cr("JvmtiExport can_access_local_variables %d", _jvmti_can_access_local_variables); out->print_cr("JvmtiExport can_hotswap_or_post_breakpoint %d", _jvmti_can_hotswap_or_post_breakpoint); @@ -1731,6 +1731,7 @@ void ciEnv::dump_inline_data(int compile_id) { fileStream replay_data_stream(inline_data_file, /*need_close=*/true); GUARDED_VM_ENTRY( MutexLocker ml(Compile_lock); + dump_replay_data_version(&replay_data_stream); dump_compile_data(&replay_data_stream); ) replay_data_stream.flush(); @@ -1742,3 +1743,7 @@ void ciEnv::dump_inline_data(int compile_id) { } } } + +void ciEnv::dump_replay_data_version(outputStream* out) { + out->print_cr("version %d", REPLAY_VERSION); +} diff --git a/src/hotspot/share/ci/ciEnv.hpp b/src/hotspot/share/ci/ciEnv.hpp index 0e880528b7d..added1ae358 100644 --- a/src/hotspot/share/ci/ciEnv.hpp +++ b/src/hotspot/share/ci/ciEnv.hpp @@ -496,6 +496,7 @@ public: void dump_replay_data_unsafe(outputStream* out); void dump_replay_data_helper(outputStream* out); void dump_compile_data(outputStream* out); + void dump_replay_data_version(outputStream* out); const char *dyno_name(const InstanceKlass* ik) const; const char *replay_name(const InstanceKlass* ik) const; diff --git a/src/hotspot/share/ci/ciReplay.cpp b/src/hotspot/share/ci/ciReplay.cpp index 27cf2c5d7c7..68d4308a2d3 100644 --- a/src/hotspot/share/ci/ciReplay.cpp +++ b/src/hotspot/share/ci/ciReplay.cpp @@ -636,7 +636,7 @@ class CompileReplay : public StackObj { int c = getc(_stream); while(c != EOF) { c = get_line(c); - process_command(THREAD); + process_command(false, THREAD); if (had_error()) { int pos = _bufptr - _buffer + 1; tty->print_cr("Error while parsing line %d at position %d: %s\n", line_no, pos, _error_message); @@ -652,7 +652,7 @@ class CompileReplay : public StackObj { reset(); } - void process_command(TRAPS) { + void process_command(bool is_replay_inline, TRAPS) { char* cmd = parse_string(); if (cmd == nullptr) { return; @@ -670,20 +670,24 @@ class CompileReplay : public StackObj { } } else if (strcmp("compile", cmd) == 0) { process_compile(CHECK); - } else if (strcmp("ciMethod", cmd) == 0) { - process_ciMethod(CHECK); - } else if (strcmp("ciMethodData", cmd) == 0) { - process_ciMethodData(CHECK); - } else if (strcmp("staticfield", cmd) == 0) { - process_staticfield(CHECK); - } else if (strcmp("ciInstanceKlass", cmd) == 0) { - process_ciInstanceKlass(CHECK); - } else if (strcmp("instanceKlass", cmd) == 0) { - process_instanceKlass(CHECK); + } else if (!is_replay_inline) { + if (strcmp("ciMethod", cmd) == 0) { + process_ciMethod(CHECK); + } else if (strcmp("ciMethodData", cmd) == 0) { + process_ciMethodData(CHECK); + } else if (strcmp("staticfield", cmd) == 0) { + process_staticfield(CHECK); + } else if (strcmp("ciInstanceKlass", cmd) == 0) { + process_ciInstanceKlass(CHECK); + } else if (strcmp("instanceKlass", cmd) == 0) { + process_instanceKlass(CHECK); #if INCLUDE_JVMTI - } else if (strcmp("JvmtiExport", cmd) == 0) { - process_JvmtiExport(CHECK); + } else if (strcmp("JvmtiExport", cmd) == 0) { + process_JvmtiExport(CHECK); #endif // INCLUDE_JVMTI + } else { + report_error("unknown command"); + } } else { report_error("unknown command"); } @@ -723,12 +727,7 @@ class CompileReplay : public StackObj { int c = getc(_stream); while(c != EOF) { c = get_line(c); - // Expecting only lines with "compile" command in inline replay file. - char* cmd = parse_string(); - if (cmd == nullptr || strcmp("compile", cmd) != 0) { - return nullptr; - } - process_compile(CHECK_NULL); + process_command(true, CHECK_NULL); if (had_error()) { tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message); tty->print_cr("%s", _buffer);