< prev index next >
src/hotspot/share/runtime/flags/jvmFlag.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1997, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 1997, 2020, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 26,36 ****
#include "jfr/jfrEvents.hpp"
#include "memory/allocation.inline.hpp"
#include "runtime/arguments.hpp"
#include "runtime/flags/jvmFlag.hpp"
#include "runtime/flags/jvmFlagConstraintList.hpp"
- #include "runtime/flags/jvmFlagWriteableList.hpp"
#include "runtime/flags/jvmFlagRangeList.hpp"
#include "runtime/globals_extension.hpp"
#include "utilities/defaultStream.hpp"
#include "utilities/stringUtils.hpp"
--- 26,35 ----
*** 90,279 ****
#else
return false;
#endif
}
- JVMFlag::Error JVMFlag::check_writable(bool changed) {
- if (is_constant_in_binary()) {
- fatal("flag is constant: %s", _name);
- }
-
- JVMFlag::Error error = JVMFlag::SUCCESS;
- if (changed) {
- JVMFlagWriteable* writeable = JVMFlagWriteableList::find(_name);
- if (writeable) {
- if (writeable->is_writeable() == false) {
- switch (writeable->type())
- {
- case JVMFlagWriteable::Once:
- error = JVMFlag::SET_ONLY_ONCE;
- jio_fprintf(defaultStream::error_stream(), "Error: %s may not be set more than once\n", _name);
- break;
- case JVMFlagWriteable::CommandLineOnly:
- error = JVMFlag::COMMAND_LINE_ONLY;
- jio_fprintf(defaultStream::error_stream(), "Error: %s may be modified only from commad line\n", _name);
- break;
- default:
- ShouldNotReachHere();
- break;
- }
- }
- writeable->mark_once();
- }
- }
- return error;
- }
-
bool JVMFlag::is_bool() const {
return strcmp(_type, "bool") == 0;
}
- bool JVMFlag::get_bool() const {
- return *((bool*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_bool(bool value) {
- JVMFlag::Error error = check_writable(value!=get_bool());
- if (error == JVMFlag::SUCCESS) {
- *((bool*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_int() const {
return strcmp(_type, "int") == 0;
}
- int JVMFlag::get_int() const {
- return *((int*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_int(int value) {
- JVMFlag::Error error = check_writable(value!=get_int());
- if (error == JVMFlag::SUCCESS) {
- *((int*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_uint() const {
return strcmp(_type, "uint") == 0;
}
- uint JVMFlag::get_uint() const {
- return *((uint*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_uint(uint value) {
- JVMFlag::Error error = check_writable(value!=get_uint());
- if (error == JVMFlag::SUCCESS) {
- *((uint*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_intx() const {
return strcmp(_type, "intx") == 0;
}
- intx JVMFlag::get_intx() const {
- return *((intx*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_intx(intx value) {
- JVMFlag::Error error = check_writable(value!=get_intx());
- if (error == JVMFlag::SUCCESS) {
- *((intx*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_uintx() const {
return strcmp(_type, "uintx") == 0;
}
- uintx JVMFlag::get_uintx() const {
- return *((uintx*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_uintx(uintx value) {
- JVMFlag::Error error = check_writable(value!=get_uintx());
- if (error == JVMFlag::SUCCESS) {
- *((uintx*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_uint64_t() const {
return strcmp(_type, "uint64_t") == 0;
}
- uint64_t JVMFlag::get_uint64_t() const {
- return *((uint64_t*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_uint64_t(uint64_t value) {
- JVMFlag::Error error = check_writable(value!=get_uint64_t());
- if (error == JVMFlag::SUCCESS) {
- *((uint64_t*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_size_t() const {
return strcmp(_type, "size_t") == 0;
}
- size_t JVMFlag::get_size_t() const {
- return *((size_t*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_size_t(size_t value) {
- JVMFlag::Error error = check_writable(value!=get_size_t());
- if (error == JVMFlag::SUCCESS) {
- *((size_t*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_double() const {
return strcmp(_type, "double") == 0;
}
- double JVMFlag::get_double() const {
- return *((double*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_double(double value) {
- JVMFlag::Error error = check_writable(value!=get_double());
- if (error == JVMFlag::SUCCESS) {
- *((double*) _addr) = value;
- }
- return error;
- }
-
bool JVMFlag::is_ccstr() const {
return strcmp(_type, "ccstr") == 0 || strcmp(_type, "ccstrlist") == 0;
}
bool JVMFlag::ccstr_accumulates() const {
return strcmp(_type, "ccstrlist") == 0;
}
- ccstr JVMFlag::get_ccstr() const {
- return *((ccstr*) _addr);
- }
-
- JVMFlag::Error JVMFlag::set_ccstr(ccstr value) {
- JVMFlag::Error error = check_writable(value!=get_ccstr());
- if (error == JVMFlag::SUCCESS) {
- *((ccstr*) _addr) = value;
- }
- return error;
- }
-
-
JVMFlag::Flags JVMFlag::get_origin() {
return Flags(_flags & VALUE_ORIGIN_MASK);
}
void JVMFlag::set_origin(Flags origin) {
--- 89,138 ----
*** 833,879 ****
RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
RUNTIME_MANAGEABLE_FLAG_STRUCT, \
RUNTIME_PRODUCT_RW_FLAG_STRUCT, \
RUNTIME_LP64_PRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
RUNTIME_PRODUCT_FLAG_STRUCT, \
RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
RUNTIME_PD_DIAGNOSTIC_FLAG_STRUCT, \
RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
#if INCLUDE_JVMCI
JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_STRUCT, \
JVMCI_PD_DEVELOP_FLAG_STRUCT, \
JVMCI_PRODUCT_FLAG_STRUCT, \
JVMCI_PD_PRODUCT_FLAG_STRUCT, \
JVMCI_DIAGNOSTIC_FLAG_STRUCT, \
JVMCI_PD_DIAGNOSTIC_FLAG_STRUCT, \
JVMCI_EXPERIMENTAL_FLAG_STRUCT, \
JVMCI_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
#endif // INCLUDE_JVMCI
#ifdef COMPILER1
C1_FLAGS(C1_DEVELOP_FLAG_STRUCT, \
C1_PD_DEVELOP_FLAG_STRUCT, \
C1_PRODUCT_FLAG_STRUCT, \
C1_PD_PRODUCT_FLAG_STRUCT, \
C1_DIAGNOSTIC_FLAG_STRUCT, \
C1_PD_DIAGNOSTIC_FLAG_STRUCT, \
C1_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
#endif // COMPILER1
#ifdef COMPILER2
C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, \
C2_PD_DEVELOP_FLAG_STRUCT, \
C2_PRODUCT_FLAG_STRUCT, \
--- 692,734 ----
RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
RUNTIME_MANAGEABLE_FLAG_STRUCT, \
RUNTIME_PRODUCT_RW_FLAG_STRUCT, \
RUNTIME_LP64_PRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, \
RUNTIME_PD_DEVELOP_FLAG_STRUCT, \
RUNTIME_PRODUCT_FLAG_STRUCT, \
RUNTIME_PD_PRODUCT_FLAG_STRUCT, \
RUNTIME_DIAGNOSTIC_FLAG_STRUCT, \
RUNTIME_PD_DIAGNOSTIC_FLAG_STRUCT, \
RUNTIME_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
#if INCLUDE_JVMCI
JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_STRUCT, \
JVMCI_PD_DEVELOP_FLAG_STRUCT, \
JVMCI_PRODUCT_FLAG_STRUCT, \
JVMCI_PD_PRODUCT_FLAG_STRUCT, \
JVMCI_DIAGNOSTIC_FLAG_STRUCT, \
JVMCI_PD_DIAGNOSTIC_FLAG_STRUCT, \
JVMCI_EXPERIMENTAL_FLAG_STRUCT, \
JVMCI_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
#endif // INCLUDE_JVMCI
#ifdef COMPILER1
C1_FLAGS(C1_DEVELOP_FLAG_STRUCT, \
C1_PD_DEVELOP_FLAG_STRUCT, \
C1_PRODUCT_FLAG_STRUCT, \
C1_PD_PRODUCT_FLAG_STRUCT, \
C1_DIAGNOSTIC_FLAG_STRUCT, \
C1_PD_DIAGNOSTIC_FLAG_STRUCT, \
C1_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
#endif // COMPILER1
#ifdef COMPILER2
C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, \
C2_PD_DEVELOP_FLAG_STRUCT, \
C2_PRODUCT_FLAG_STRUCT, \
*** 881,901 ****
C2_DIAGNOSTIC_FLAG_STRUCT, \
C2_PD_DIAGNOSTIC_FLAG_STRUCT, \
C2_EXPERIMENTAL_FLAG_STRUCT, \
C2_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
#endif // COMPILER2
ARCH_FLAGS(ARCH_DEVELOP_FLAG_STRUCT, \
ARCH_PRODUCT_FLAG_STRUCT, \
ARCH_DIAGNOSTIC_FLAG_STRUCT, \
ARCH_EXPERIMENTAL_FLAG_STRUCT, \
ARCH_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT, \
! IGNORE_WRITEABLE)
{0, NULL, NULL}
};
JVMFlag* JVMFlag::flags = flagTable;
size_t JVMFlag::numFlags = (sizeof(flagTable) / sizeof(JVMFlag));
--- 736,754 ----
C2_DIAGNOSTIC_FLAG_STRUCT, \
C2_PD_DIAGNOSTIC_FLAG_STRUCT, \
C2_EXPERIMENTAL_FLAG_STRUCT, \
C2_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
#endif // COMPILER2
ARCH_FLAGS(ARCH_DEVELOP_FLAG_STRUCT, \
ARCH_PRODUCT_FLAG_STRUCT, \
ARCH_DIAGNOSTIC_FLAG_STRUCT, \
ARCH_EXPERIMENTAL_FLAG_STRUCT, \
ARCH_NOTPRODUCT_FLAG_STRUCT, \
IGNORE_RANGE, \
! IGNORE_CONSTRAINT)
{0, NULL, NULL}
};
JVMFlag* JVMFlag::flags = flagTable;
size_t JVMFlag::numFlags = (sizeof(flagTable) / sizeof(JVMFlag));
*** 1023,1036 ****
if (!flag->is_bool()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_bool(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
bool old_value = flag->get_bool();
trace_flag_changed<EventBooleanFlagChanged, bool>(flag, old_value, *value, origin);
! check = flag->set_bool(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::boolAtPut(JVMFlagsEnum flag, bool value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_bool(), "wrong flag type");
--- 876,889 ----
if (!flag->is_bool()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_bool(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
bool old_value = flag->get_bool();
trace_flag_changed<EventBooleanFlagChanged, bool>(flag, old_value, *value, origin);
! flag->set_bool(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::boolAtPut(JVMFlagsEnum flag, bool value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_bool(), "wrong flag type");
*** 1064,1077 ****
if (!flag->is_int()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_int(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
int old_value = flag->get_int();
trace_flag_changed<EventIntFlagChanged, s4>(flag, old_value, *value, origin);
! check = flag->set_int(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::intAtPut(JVMFlagsEnum flag, int value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_int(), "wrong flag type");
--- 917,930 ----
if (!flag->is_int()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_int(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
int old_value = flag->get_int();
trace_flag_changed<EventIntFlagChanged, s4>(flag, old_value, *value, origin);
! flag->set_int(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::intAtPut(JVMFlagsEnum flag, int value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_int(), "wrong flag type");
*** 1105,1118 ****
if (!flag->is_uint()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uint(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uint old_value = flag->get_uint();
trace_flag_changed<EventUnsignedIntFlagChanged, u4>(flag, old_value, *value, origin);
! check = flag->set_uint(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::uintAtPut(JVMFlagsEnum flag, uint value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uint(), "wrong flag type");
--- 958,971 ----
if (!flag->is_uint()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uint(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uint old_value = flag->get_uint();
trace_flag_changed<EventUnsignedIntFlagChanged, u4>(flag, old_value, *value, origin);
! flag->set_uint(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::uintAtPut(JVMFlagsEnum flag, uint value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uint(), "wrong flag type");
*** 1146,1159 ****
if (!flag->is_intx()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_intx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
intx old_value = flag->get_intx();
trace_flag_changed<EventLongFlagChanged, intx>(flag, old_value, *value, origin);
! check = flag->set_intx(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::intxAtPut(JVMFlagsEnum flag, intx value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_intx(), "wrong flag type");
--- 999,1012 ----
if (!flag->is_intx()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_intx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
intx old_value = flag->get_intx();
trace_flag_changed<EventLongFlagChanged, intx>(flag, old_value, *value, origin);
! flag->set_intx(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::intxAtPut(JVMFlagsEnum flag, intx value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_intx(), "wrong flag type");
*** 1187,1200 ****
if (!flag->is_uintx()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uintx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uintx old_value = flag->get_uintx();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! check = flag->set_uintx(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::uintxAtPut(JVMFlagsEnum flag, uintx value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uintx(), "wrong flag type");
--- 1040,1053 ----
if (!flag->is_uintx()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uintx(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uintx old_value = flag->get_uintx();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! flag->set_uintx(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::uintxAtPut(JVMFlagsEnum flag, uintx value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uintx(), "wrong flag type");
*** 1228,1241 ****
if (!flag->is_uint64_t()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uint64_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uint64_t old_value = flag->get_uint64_t();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! check = flag->set_uint64_t(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::uint64_tAtPut(JVMFlagsEnum flag, uint64_t value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uint64_t(), "wrong flag type");
--- 1081,1094 ----
if (!flag->is_uint64_t()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_uint64_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
uint64_t old_value = flag->get_uint64_t();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! flag->set_uint64_t(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::uint64_tAtPut(JVMFlagsEnum flag, uint64_t value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_uint64_t(), "wrong flag type");
*** 1270,1283 ****
if (!flag->is_size_t()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_size_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
size_t old_value = flag->get_size_t();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! check = flag->set_size_t(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::size_tAtPut(JVMFlagsEnum flag, size_t value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_size_t(), "wrong flag type");
--- 1123,1136 ----
if (!flag->is_size_t()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_size_t(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
size_t old_value = flag->get_size_t();
trace_flag_changed<EventUnsignedLongFlagChanged, u8>(flag, old_value, *value, origin);
! flag->set_size_t(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::size_tAtPut(JVMFlagsEnum flag, size_t value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_size_t(), "wrong flag type");
*** 1311,1324 ****
if (!flag->is_double()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_double(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
double old_value = flag->get_double();
trace_flag_changed<EventDoubleFlagChanged, double>(flag, old_value, *value, origin);
! check = flag->set_double(*value);
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::doubleAtPut(JVMFlagsEnum flag, double value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_double(), "wrong flag type");
--- 1164,1177 ----
if (!flag->is_double()) return JVMFlag::WRONG_FORMAT;
JVMFlag::Error check = apply_constraint_and_check_range_double(flag, *value, !JVMFlagConstraintList::validated_after_ergo());
if (check != JVMFlag::SUCCESS) return check;
double old_value = flag->get_double();
trace_flag_changed<EventDoubleFlagChanged, double>(flag, old_value, *value, origin);
! flag->set_double(*value);
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::doubleAtPut(JVMFlagsEnum flag, double value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_double(), "wrong flag type");
*** 1339,1371 ****
trace_flag_changed<EventStringFlagChanged, const char*>(flag, old_value, *value, origin);
char* new_value = NULL;
if (*value != NULL) {
new_value = os::strdup_check_oom(*value);
}
! JVMFlag::Error check = flag->set_ccstr(new_value);
if (flag->is_default() && old_value != NULL) {
// Prior value is NOT heap allocated, but was a literal constant.
old_value = os::strdup_check_oom(old_value);
}
*value = old_value;
flag->set_origin(origin);
! return check;
}
JVMFlag::Error JVMFlagEx::ccstrAtPut(JVMFlagsEnum flag, ccstr value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
ccstr old_value = faddr->get_ccstr();
trace_flag_changed<EventStringFlagChanged, const char*>(faddr, old_value, value, origin);
char* new_value = os::strdup_check_oom(value);
! JVMFlag::Error check = faddr->set_ccstr(new_value);
if (!faddr->is_default() && old_value != NULL) {
// Prior value is heap allocated so free it.
FREE_C_HEAP_ARRAY(char, old_value);
}
faddr->set_origin(origin);
! return check;
}
extern "C" {
static int compare_flags(const void* void_a, const void* void_b) {
return strcmp((*((JVMFlag**) void_a))->_name, (*((JVMFlag**) void_b))->_name);
--- 1192,1224 ----
trace_flag_changed<EventStringFlagChanged, const char*>(flag, old_value, *value, origin);
char* new_value = NULL;
if (*value != NULL) {
new_value = os::strdup_check_oom(*value);
}
! flag->set_ccstr(new_value);
if (flag->is_default() && old_value != NULL) {
// Prior value is NOT heap allocated, but was a literal constant.
old_value = os::strdup_check_oom(old_value);
}
*value = old_value;
flag->set_origin(origin);
! return JVMFlag::SUCCESS;
}
JVMFlag::Error JVMFlagEx::ccstrAtPut(JVMFlagsEnum flag, ccstr value, JVMFlag::Flags origin) {
JVMFlag* faddr = flag_from_enum(flag);
guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
ccstr old_value = faddr->get_ccstr();
trace_flag_changed<EventStringFlagChanged, const char*>(faddr, old_value, value, origin);
char* new_value = os::strdup_check_oom(value);
! faddr->set_ccstr(new_value);
if (!faddr->is_default() && old_value != NULL) {
// Prior value is heap allocated so free it.
FREE_C_HEAP_ARRAY(char, old_value);
}
faddr->set_origin(origin);
! return JVMFlag::SUCCESS;
}
extern "C" {
static int compare_flags(const void* void_a, const void* void_b) {
return strcmp((*((JVMFlag**) void_a))->_name, (*((JVMFlag**) void_b))->_name);
< prev index next >