mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +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);
|
||||
}
|
||||
|
||||
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) {
|
||||
if (_all.value()) {
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
output()->print_cr("%s version %s", VM_Version::vm_name(),
|
||||
VM_Version::vm_release());
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
if (_all.value()) {
|
||||
JVMFlag::printFlags(output(), true);
|
||||
} else {
|
||||
@ -408,10 +394,6 @@ void VMUptimeDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions,
|
||||
}
|
||||
|
||||
void VMInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
MutexLocker hl(THREAD, Heap_lock);
|
||||
Universe::heap()->print_heap_on(output());
|
||||
}
|
||||
|
||||
void FinalizerInfoDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
ResourceMark rm(THREAD);
|
||||
|
||||
if (!InstanceKlass::is_finalization_enabled()) {
|
||||
@ -514,10 +488,6 @@ HeapDumpDCmd::HeapDumpDCmd(outputStream* output, bool heap) :
|
||||
}
|
||||
|
||||
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 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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
jlong num = _parallel_thread_num.value();
|
||||
if (num < 0) {
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
// always timestamp
|
||||
print_local_time(output());
|
||||
// Timestamping is handled by the calle.
|
||||
// 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
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
ResourceMark rm(THREAD);
|
||||
HandleMark hm(THREAD);
|
||||
|
||||
@ -871,36 +842,20 @@ VMDynamicLibrariesDCmd::VMDynamicLibrariesDCmd(outputStream *output, bool heap_a
|
||||
}
|
||||
|
||||
void VMDynamicLibrariesDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
os::print_dll_info(output());
|
||||
output()->cr();
|
||||
}
|
||||
|
||||
void CompileQueueDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
VM_PrintCompileQueue printCompileQueueOp(output());
|
||||
VMThread::execute(&printCompileQueueOp);
|
||||
}
|
||||
|
||||
void CodeListDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
CodeCache::print_codelist(output());
|
||||
}
|
||||
|
||||
void CodeCacheDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
CodeCache::print_layout(output());
|
||||
}
|
||||
|
||||
@ -927,10 +882,6 @@ CodeHeapAnalyticsDCmd::CodeHeapAnalyticsDCmd(outputStream* output, bool heap) :
|
||||
}
|
||||
|
||||
void CodeHeapAnalyticsDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
jlong granularity = _granularity.value();
|
||||
if (granularity < 1) {
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
int max = (int)_max.value();
|
||||
if (max < 0) {
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
DirectivesStack::print(output());
|
||||
}
|
||||
|
||||
@ -1009,9 +954,6 @@ ClassHierarchyDCmd::ClassHierarchyDCmd(outputStream* output, bool heap) :
|
||||
}
|
||||
|
||||
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(),
|
||||
_print_subclasses.value(), _classname.value());
|
||||
VMThread::execute(&printClassHierarchyOp);
|
||||
@ -1049,10 +991,6 @@ public:
|
||||
};
|
||||
|
||||
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());
|
||||
VMThread::execute(&vmop);
|
||||
}
|
||||
@ -1093,10 +1031,6 @@ DumpSharedArchiveDCmd::DumpSharedArchiveDCmd(outputStream* output, bool heap) :
|
||||
}
|
||||
|
||||
void DumpSharedArchiveDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
jboolean is_static;
|
||||
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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
execute_vthread_command(vmSymbols::printScheduler_name(), output(), CHECK);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -1263,10 +1189,6 @@ CompilationMemoryStatisticDCmd::CompilationMemoryStatisticDCmd(outputStream* out
|
||||
}
|
||||
|
||||
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;
|
||||
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) {}
|
||||
|
||||
void SystemMapDCmd::execute(DCmdSource source, const JcmdOptions& commonOptions, TRAPS) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(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) {
|
||||
if (commonOptions.timestamp == JcmdOptions::TimeStamp::Yes) {
|
||||
print_local_time(output());
|
||||
}
|
||||
|
||||
const char* name = _filename.value();
|
||||
if (name == nullptr || name[0] == 0) {
|
||||
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>"
|
||||
*/
|
||||
static JcmdOptions parse_common_options(const CmdLine& line, stringStream *updated_line) {
|
||||
JcmdOptions options = {};
|
||||
JcmdOptions options;
|
||||
|
||||
// there is only TIMESTAMP option so far
|
||||
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");
|
||||
DCmdMark mark(command);
|
||||
command->parse(&line, delim, CHECK);
|
||||
|
||||
if (options.timestamp == JcmdOptions::TimeStamp::Yes){
|
||||
_out->date_stamp(true, "", "\n");
|
||||
}
|
||||
|
||||
execute(command, options, CHECK);
|
||||
}
|
||||
count++;
|
||||
|
||||
@ -168,10 +168,10 @@ public:
|
||||
struct JcmdOptions {
|
||||
enum class TimeStamp {
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user