8216995: Clean up JFR command line processing

Reviewed-by: gziemski, mgronlun
This commit is contained in:
Claes Redestad 2019-01-15 21:17:35 +01:00
parent 53c8dfdd07
commit 045cf9733d
2 changed files with 10 additions and 17 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -44,31 +44,22 @@
#include "logging/logStream.hpp"
#include "memory/resourceArea.inline.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/flags/jvmFlag.hpp"
#include "runtime/globals.hpp"
#include "runtime/globals_extension.hpp"
#include "utilities/growableArray.hpp"
static bool is_disabled_on_command_line() {
static const size_t length = strlen("FlightRecorder");
static JVMFlag* const flight_recorder_flag = JVMFlag::find_flag("FlightRecorder", length);
assert(flight_recorder_flag != NULL, "invariant");
return flight_recorder_flag->is_command_line() ? !FlightRecorder : false;
}
bool JfrRecorder::is_disabled() {
return is_disabled_on_command_line();
}
static bool set_flight_recorder_flag(bool flag_value) {
JVMFlag::boolAtPut((char*)"FlightRecorder", &flag_value, JVMFlag::MANAGEMENT);
return FlightRecorder;
// True if -XX:-FlightRecorder has been explicitly set on the
// command line
return FLAG_IS_CMDLINE(FlightRecorder) ? !FlightRecorder : false;
}
static bool _enabled = false;
static bool enable() {
assert(!_enabled, "invariant");
_enabled = set_flight_recorder_flag(true);
FLAG_SET_MGMT(bool, FlightRecorder, true);
_enabled = FlightRecorder;
assert(_enabled, "invariant");
return _enabled;
}

View file

@ -305,6 +305,8 @@ typedef enum {
#define FLAG_SET_CMDLINE(type, name, value) (JVMFlagEx::setOnCmdLine(FLAG_MEMBER_WITH_TYPE(name, type)), \
JVMFlagEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name, type), (type)(value), JVMFlag::COMMAND_LINE))
#define FLAG_SET_ERGO(type, name, value) (JVMFlagEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name, type), (type)(value), JVMFlag::ERGONOMIC))
#define FLAG_SET_MGMT(type, name, value) (JVMFlagEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name, type), (type)(value), JVMFlag::MANAGEMENT))
#define FLAG_SET_ERGO_IF_DEFAULT(type, name, value) \
do { \
if (FLAG_IS_DEFAULT(name)) { \