Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/hotspot/share/runtime/globals_extension.hpp
40951 views
1
/*
2
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*
23
*/
24
25
#ifndef SHARE_RUNTIME_GLOBALS_EXTENSION_HPP
26
#define SHARE_RUNTIME_GLOBALS_EXTENSION_HPP
27
28
#include "runtime/flags/allFlags.hpp"
29
#include "runtime/flags/jvmFlag.hpp"
30
#include "runtime/flags/jvmFlagAccess.hpp"
31
#include "utilities/macros.hpp"
32
33
// Construct enum of Flag_<cmdline-arg> constants.
34
35
#define FLAG_MEMBER_ENUM(name) Flag_##name##_enum
36
#define FLAG_MEMBER_ENUM_(name) FLAG_MEMBER_ENUM(name),
37
38
#define DEFINE_FLAG_MEMBER_ENUM(type, name, ...) FLAG_MEMBER_ENUM_(name)
39
40
enum JVMFlagsEnum : int {
41
INVALID_JVMFlagsEnum = -1,
42
ALL_FLAGS(DEFINE_FLAG_MEMBER_ENUM,
43
DEFINE_FLAG_MEMBER_ENUM,
44
DEFINE_FLAG_MEMBER_ENUM,
45
DEFINE_FLAG_MEMBER_ENUM,
46
DEFINE_FLAG_MEMBER_ENUM,
47
IGNORE_RANGE,
48
IGNORE_CONSTRAINT)
49
NUM_JVMFlagsEnum
50
};
51
52
// Construct set functions for all flags
53
54
#define FLAG_MEMBER_SETTER(name) Flag_##name##_set
55
#define FLAG_MEMBER_SETTER_(type, name) \
56
inline JVMFlag::Error FLAG_MEMBER_SETTER(name)(type value, JVMFlagOrigin origin) { \
57
return JVMFlagAccess::set<JVM_FLAG_TYPE(type)>(FLAG_MEMBER_ENUM(name), value, origin); \
58
}
59
60
#define DEFINE_FLAG_MEMBER_SETTER(type, name, ...) FLAG_MEMBER_SETTER_(type, name)
61
62
ALL_FLAGS(DEFINE_FLAG_MEMBER_SETTER,
63
DEFINE_FLAG_MEMBER_SETTER,
64
DEFINE_FLAG_MEMBER_SETTER,
65
DEFINE_FLAG_MEMBER_SETTER,
66
DEFINE_FLAG_MEMBER_SETTER,
67
IGNORE_RANGE,
68
IGNORE_CONSTRAINT)
69
70
#define FLAG_IS_DEFAULT(name) (JVMFlag::is_default(FLAG_MEMBER_ENUM(name)))
71
#define FLAG_IS_ERGO(name) (JVMFlag::is_ergo(FLAG_MEMBER_ENUM(name)))
72
#define FLAG_IS_CMDLINE(name) (JVMFlag::is_cmdline(FLAG_MEMBER_ENUM(name)))
73
#define FLAG_IS_JIMAGE_RESOURCE(name) (JVMFlag::is_jimage_resource(FLAG_MEMBER_ENUM(name)))
74
75
#define FLAG_SET_DEFAULT(name, value) ((name) = (value))
76
77
#define FLAG_SET_CMDLINE(name, value) (JVMFlag::setOnCmdLine(FLAG_MEMBER_ENUM(name)), \
78
FLAG_MEMBER_SETTER(name)((value), JVMFlagOrigin::COMMAND_LINE))
79
#define FLAG_SET_ERGO(name, value) (FLAG_MEMBER_SETTER(name)((value), JVMFlagOrigin::ERGONOMIC))
80
#define FLAG_SET_MGMT(name, value) (FLAG_MEMBER_SETTER(name)((value), JVMFlagOrigin::MANAGEMENT))
81
82
#define FLAG_SET_ERGO_IF_DEFAULT(name, value) \
83
do { \
84
if (FLAG_IS_DEFAULT(name)) { \
85
FLAG_SET_ERGO(name, value); \
86
} \
87
} while (0)
88
89
#endif // SHARE_RUNTIME_GLOBALS_EXTENSION_HPP
90
91