< 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 >