提交 5d53bb0d 编写于 作者: R redestad

8216995: Clean up JFR command line processing

Reviewed-by: gziemski, mgronlun
上级 94b15d43
/*
* 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
......@@ -42,32 +42,24 @@
#include "jfr/writers/jfrJavaEventWriter.hpp"
#include "memory/resourceArea.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/globals.hpp"
#include "runtime/globals_extension.hpp"
#include "utilities/growableArray.hpp"
bool JfrRecorder::_shutting_down = false;
static bool is_disabled_on_command_line() {
static const size_t length = strlen("FlightRecorder");
static Flag* const flight_recorder_flag = Flag::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) {
CommandLineFlags::boolAtPut((char*)"FlightRecorder", &flag_value, Flag::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;
}
......
......@@ -191,6 +191,7 @@ typedef enum {
#define FLAG_SET_CMDLINE(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::COMMAND_LINE))
#define FLAG_SET_ERGO(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::ERGONOMIC))
#define FLAG_SET_MGMT(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name, type), (type)(value), Flag::MANAGEMENT))
// Can't put the following in CommandLineFlags because
// of a circular dependency on the enum definition.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册