mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
handle timestamp in parse_and_execute(). Thread.print is exceptional. Add default initialation to JcmdOptions
This commit is contained in:
parent
5f1cefe074
commit
4fca769a67
@ -182,12 +182,6 @@ static int compare_strings(const char** s1, const char** s2) {
|
|||||||
return ::strcmp(*s1, *s2);
|
return ::strcmp(*s1, *s2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_local_time(outputStream* output) {
|
|
||||||
char buf[32];
|
|
||||||
output->print_cr("%s", os::local_time_string(buf, sizeof(buf)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HelpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void HelpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (_all.value()) {
|
if (_all.value()) {
|
||||||
GrowableArray<const char*>* cmd_list = DCmdFactory::DCmd_list(source);
|
GrowableArray<const char*>* cmd_list = DCmdFactory::DCmd_list(source);
|
||||||
@ -232,10 +226,6 @@ void HelpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAP
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VersionDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void VersionDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
output()->print_cr("%s version %s", VM_Version::vm_name(),
|
output()->print_cr("%s version %s", VM_Version::vm_name(),
|
||||||
VM_Version::vm_release());
|
VM_Version::vm_release());
|
||||||
JDK_Version jdk_version = JDK_Version::current();
|
JDK_Version jdk_version = JDK_Version::current();
|
||||||
@ -256,10 +246,6 @@ PrintVMFlagsDCmd::PrintVMFlagsDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PrintVMFlagsDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void PrintVMFlagsDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_all.value()) {
|
if (_all.value()) {
|
||||||
JVMFlag::printFlags(output(), true);
|
JVMFlag::printFlags(output(), true);
|
||||||
} else {
|
} else {
|
||||||
@ -408,10 +394,6 @@ void VMUptimeDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VMInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void VMInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
VMError::print_vm_info(_output);
|
VMError::print_vm_info(_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,19 +410,11 @@ void RunFinalizationDCmd::execute(DCmdSource source, const JcmdOptions& commonOp
|
|||||||
}
|
}
|
||||||
|
|
||||||
void HeapInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void HeapInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
MutexLocker hl(THREAD, Heap_lock);
|
MutexLocker hl(THREAD, Heap_lock);
|
||||||
Universe::heap()->print_heap_on(output());
|
Universe::heap()->print_heap_on(output());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FinalizerInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void FinalizerInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
ResourceMark rm(THREAD);
|
ResourceMark rm(THREAD);
|
||||||
|
|
||||||
if (!InstanceKlass::is_finalization_enabled()) {
|
if (!InstanceKlass::is_finalization_enabled()) {
|
||||||
@ -514,10 +488,6 @@ HeapDumpDCmd::HeapDumpDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void HeapDumpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void HeapDumpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
jlong level = -1; // -1 means no compression.
|
jlong level = -1; // -1 means no compression.
|
||||||
jlong parallel = HeapDumper::default_num_of_dump_threads();
|
jlong parallel = HeapDumper::default_num_of_dump_threads();
|
||||||
|
|
||||||
@ -565,10 +535,6 @@ ClassHistogramDCmd::ClassHistogramDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClassHistogramDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void ClassHistogramDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
jlong num = _parallel_thread_num.value();
|
jlong num = _parallel_thread_num.value();
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
output()->print_cr("Parallel thread number out of range (>=0): " JLONG_FORMAT, num);
|
output()->print_cr("Parallel thread number out of range (>=0): " JLONG_FORMAT, num);
|
||||||
@ -593,9 +559,18 @@ ThreadDumpDCmd::ThreadDumpDCmd(outputStream* output, bool heap) :
|
|||||||
_dcmdparser.add_dcmd_option(&_extended);
|
_dcmdparser.add_dcmd_option(&_extended);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print_local_time(outputStream* output) {
|
||||||
|
char buf[32];
|
||||||
|
output->print_cr("%s", os::local_time_string(buf, sizeof(buf)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ThreadDumpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void ThreadDumpDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
// always timestamp
|
// Timestamping is handled by the calle.
|
||||||
print_local_time(output());
|
// Stay backwards compatible in cases where timestamp is not requested explicitly.
|
||||||
|
if (JcmdOptions::TimeStamp::Default == commonOptions.timestamp) {
|
||||||
|
print_local_time(output());
|
||||||
|
}
|
||||||
|
|
||||||
// thread stacks and JNI global handles
|
// thread stacks and JNI global handles
|
||||||
VM_PrintThreads op1(output(), _locks.value(), _extended.value(), true /* print JNI handle info */);
|
VM_PrintThreads op1(output(), _locks.value(), _extended.value(), true /* print JNI handle info */);
|
||||||
@ -834,10 +809,6 @@ JMXStatusDCmd::JMXStatusDCmd(outputStream *output, bool heap_allocated) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void JMXStatusDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void JMXStatusDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
ResourceMark rm(THREAD);
|
ResourceMark rm(THREAD);
|
||||||
HandleMark hm(THREAD);
|
HandleMark hm(THREAD);
|
||||||
|
|
||||||
@ -871,36 +842,20 @@ VMDynamicLibrariesDCmd::VMDynamicLibrariesDCmd(outputStream *output, bool heap_a
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VMDynamicLibrariesDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void VMDynamicLibrariesDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
os::print_dll_info(output());
|
os::print_dll_info(output());
|
||||||
output()->cr();
|
output()->cr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompileQueueDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CompileQueueDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
VM_PrintCompileQueue printCompileQueueOp(output());
|
VM_PrintCompileQueue printCompileQueueOp(output());
|
||||||
VMThread::execute(&printCompileQueueOp);
|
VMThread::execute(&printCompileQueueOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeListDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CodeListDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
CodeCache::print_codelist(output());
|
CodeCache::print_codelist(output());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeCacheDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CodeCacheDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
CodeCache::print_layout(output());
|
CodeCache::print_layout(output());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -927,10 +882,6 @@ CodeHeapAnalyticsDCmd::CodeHeapAnalyticsDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CodeHeapAnalyticsDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CodeHeapAnalyticsDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
jlong granularity = _granularity.value();
|
jlong granularity = _granularity.value();
|
||||||
if (granularity < 1) {
|
if (granularity < 1) {
|
||||||
Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_IllegalArgumentException(),
|
Exceptions::fthrow(THREAD_AND_LOCATION, vmSymbols::java_lang_IllegalArgumentException(),
|
||||||
@ -952,9 +903,6 @@ EventLogDCmd::EventLogDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EventLogDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void EventLogDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
int max = (int)_max.value();
|
int max = (int)_max.value();
|
||||||
if (max < 0) {
|
if (max < 0) {
|
||||||
output()->print_cr("Invalid max option: \"%d\".", max);
|
output()->print_cr("Invalid max option: \"%d\".", max);
|
||||||
@ -969,9 +917,6 @@ void EventLogDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CompilerDirectivesPrintDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CompilerDirectivesPrintDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
DirectivesStack::print(output());
|
DirectivesStack::print(output());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1009,9 +954,6 @@ ClassHierarchyDCmd::ClassHierarchyDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClassHierarchyDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void ClassHierarchyDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
VM_PrintClassHierarchy printClassHierarchyOp(output(), _print_interfaces.value(),
|
VM_PrintClassHierarchy printClassHierarchyOp(output(), _print_interfaces.value(),
|
||||||
_print_subclasses.value(), _classname.value());
|
_print_subclasses.value(), _classname.value());
|
||||||
VMThread::execute(&printClassHierarchyOp);
|
VMThread::execute(&printClassHierarchyOp);
|
||||||
@ -1049,10 +991,6 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
void ClassesDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void ClassesDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
VM_PrintClasses vmop(output(), _verbose.value());
|
VM_PrintClasses vmop(output(), _verbose.value());
|
||||||
VMThread::execute(&vmop);
|
VMThread::execute(&vmop);
|
||||||
}
|
}
|
||||||
@ -1093,10 +1031,6 @@ DumpSharedArchiveDCmd::DumpSharedArchiveDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DumpSharedArchiveDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void DumpSharedArchiveDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
jboolean is_static;
|
jboolean is_static;
|
||||||
const char* scmd = _suboption.value();
|
const char* scmd = _suboption.value();
|
||||||
|
|
||||||
@ -1237,18 +1171,10 @@ static void execute_vthread_command(Symbol* method_name, outputStream* output, T
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VThreadSchedulerDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void VThreadSchedulerDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
execute_vthread_command(vmSymbols::printScheduler_name(), output(), CHECK);
|
execute_vthread_command(vmSymbols::printScheduler_name(), output(), CHECK);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VThreadPollersDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void VThreadPollersDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
execute_vthread_command(vmSymbols::printPollers_name(), output(), CHECK);
|
execute_vthread_command(vmSymbols::printPollers_name(), output(), CHECK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1263,10 +1189,6 @@ CompilationMemoryStatisticDCmd::CompilationMemoryStatisticDCmd(outputStream* out
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CompilationMemoryStatisticDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void CompilationMemoryStatisticDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
const size_t minsize = _minsize.has_value() ? _minsize.value()._size : 0;
|
const size_t minsize = _minsize.has_value() ? _minsize.value()._size : 0;
|
||||||
CompilationMemoryStatistic::print_jcmd_report(output(), _verbose.value(), _legend.value(), minsize);
|
CompilationMemoryStatistic::print_jcmd_report(output(), _verbose.value(), _legend.value(), minsize);
|
||||||
}
|
}
|
||||||
@ -1276,10 +1198,6 @@ void CompilationMemoryStatisticDCmd::execute(DCmdSource source, const JcmdOption
|
|||||||
SystemMapDCmd::SystemMapDCmd(outputStream* output, bool heap) : DCmd(output, heap) {}
|
SystemMapDCmd::SystemMapDCmd(outputStream* output, bool heap) : DCmd(output, heap) {}
|
||||||
|
|
||||||
void SystemMapDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void SystemMapDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
MemMapPrinter::print_all_mappings(output());
|
MemMapPrinter::print_all_mappings(output());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1292,10 +1210,6 @@ SystemDumpMapDCmd::SystemDumpMapDCmd(outputStream* output, bool heap) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SystemDumpMapDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
void SystemDumpMapDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
|
||||||
print_local_time(output());
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* name = _filename.value();
|
const char* name = _filename.value();
|
||||||
if (name == nullptr || name[0] == 0) {
|
if (name == nullptr || name[0] == 0) {
|
||||||
output()->print_cr("filename is empty or not specified. No file written");
|
output()->print_cr("filename is empty or not specified. No file written");
|
||||||
|
|||||||
@ -386,7 +386,7 @@ bool DCmdFactory::_has_pending_jmx_notification = false;
|
|||||||
* @param updated_line - return value with "<cmd>"
|
* @param updated_line - return value with "<cmd>"
|
||||||
*/
|
*/
|
||||||
static JcmdOptions parse_common_options(const CmdLine& line, stringStream *updated_line) {
|
static JcmdOptions parse_common_options(const CmdLine& line, stringStream *updated_line) {
|
||||||
JcmdOptions options = {};
|
JcmdOptions options;
|
||||||
|
|
||||||
// there is only TIMESTAMP option so far
|
// there is only TIMESTAMP option so far
|
||||||
const char TIMESTAMP[] = "-T";
|
const char TIMESTAMP[] = "-T";
|
||||||
@ -463,6 +463,11 @@ void DCmd::Executor::parse_and_execute(const char* cmdline, char delim, TRAPS) {
|
|||||||
assert(command != nullptr, "command error must be handled before this line");
|
assert(command != nullptr, "command error must be handled before this line");
|
||||||
DCmdMark mark(command);
|
DCmdMark mark(command);
|
||||||
command->parse(&line, delim, CHECK);
|
command->parse(&line, delim, CHECK);
|
||||||
|
|
||||||
|
if (options.timestamp == JcmdOptions::TimeStamp::Yes){
|
||||||
|
_out->date_stamp(true, "", "\n");
|
||||||
|
}
|
||||||
|
|
||||||
execute(command, options, CHECK);
|
execute(command, options, CHECK);
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
|
|||||||
@ -168,10 +168,10 @@ public:
|
|||||||
struct JcmdOptions {
|
struct JcmdOptions {
|
||||||
enum class TimeStamp {
|
enum class TimeStamp {
|
||||||
Default,
|
Default,
|
||||||
Yes
|
Yes // timestamp was explicitly requeted with -T flag
|
||||||
};
|
};
|
||||||
|
|
||||||
TimeStamp timestamp;
|
TimeStamp timestamp = TimeStamp::Default;
|
||||||
};
|
};
|
||||||
|
|
||||||
// The DCmdParser class can be used to create an argument parser for a
|
// The DCmdParser class can be used to create an argument parser for a
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user